This is an automated email from the ASF dual-hosted git repository.

ofuks pushed a commit to branch DLAB-1590
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git


The following commit(s) were added to refs/heads/DLAB-1590 by this push:
     new ca73d94  Admin per project
ca73d94 is described below

commit ca73d949d6e22b16e274def1365a810c25da1bd9
Author: Oleh Fuks <olegfuk...@gmail.com>
AuthorDate: Wed Mar 25 18:45:24 2020 +0200

    Admin per project
---
 .../com/epam/dlab/backendapi/dao/UserRoleDao.java  |   2 +-
 .../epam/dlab/backendapi/dao/UserRoleDaoImpl.java  |  13 ++-
 .../backendapi/resources/UserGroupResource.java    |  12 ++-
 .../backendapi/resources/UserRoleResource.java     |   8 +-
 .../dlab/backendapi/service/UserGroupService.java  |   3 +-
 .../dlab/backendapi/service/UserRoleService.java   |   3 +-
 .../backendapi/service/UserRoleServiceImpl.java    |  20 ++++-
 .../service/impl/UserGroupServiceImpl.java         |  28 +++++-
 .../resources/UserGroupResourceTest.java           |  90 +++++++++++--------
 .../backendapi/resources/UserRoleResourceTest.java |  11 ++-
 .../service/UserRoleServiceImplTest.java           |  42 ++++-----
 .../service/impl/UserGroupServiceImplTest.java     | 100 ++++++++++-----------
 12 files changed, 198 insertions(+), 134 deletions(-)

diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/UserRoleDao.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/UserRoleDao.java
index c2a401b..530724b 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/UserRoleDao.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/UserRoleDao.java
@@ -49,5 +49,5 @@ public interface UserRoleDao {
 
        boolean removeGroup(String groupId);
 
-       List<UserGroupDto> aggregateRolesByGroup();
+       List<UserGroupDto> aggregateRolesByGroup(boolean isAdmin);
 }
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/UserRoleDaoImpl.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/UserRoleDaoImpl.java
index fffc70b..154cbf8 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/UserRoleDaoImpl.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/UserRoleDaoImpl.java
@@ -24,7 +24,9 @@ import com.epam.dlab.cloud.CloudProvider;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.inject.Singleton;
+import com.mongodb.client.model.Aggregates;
 import com.mongodb.client.model.BsonField;
+import com.mongodb.client.model.Filters;
 import com.mongodb.client.result.UpdateResult;
 import org.bson.Document;
 import org.bson.conversions.Bson;
@@ -65,6 +67,7 @@ public class UserRoleDaoImpl extends BaseDAO implements 
UserRoleDao {
        private static final String EXPLORATORIES_FIELD = "exploratories";
        private static final String COMPUTATIONALS_FIELD = "computationals";
        private static final String GROUP_INFO = "groupInfo";
+       private static final String ADMIN = "admin";
 
 
        @Override
@@ -144,15 +147,19 @@ public class UserRoleDaoImpl extends BaseDAO implements 
UserRoleDao {
        }
 
        @Override
-       public List<UserGroupDto> aggregateRolesByGroup() {
+       public List<UserGroupDto> aggregateRolesByGroup(boolean isAdmin) {
                final Document role = roleDocument();
                final Bson groupBy = group(GROUPS, new BsonField(ROLES, new 
Document(ADD_TO_SET, role)));
                final Bson lookup = lookup(USER_GROUPS, ID, ID, GROUP_INFO);
-               final List<Bson> pipeline = Arrays.asList(unwind(GROUPS), 
groupBy, lookup,
+               final List<Bson> pipeline = new ArrayList<>();
+               if (!isAdmin) {
+                       pipeline.add(Aggregates.match(Filters.not(eq(ID, 
ADMIN))));
+               }
+               pipeline.addAll(Arrays.asList(unwind(GROUPS), groupBy, lookup,
                                project(new Document(GROUP, "$" + 
ID).append(GROUP_INFO, elementAt(GROUP_INFO, 0))
                                                .append(ROLES, "$" + ROLES)),
                                project(new Document(GROUP, "$" + 
ID).append(USERS_FIELD, "$" + GROUP_INFO + "." + USERS_FIELD)
-                                               .append(ROLES, "$" + ROLES)));
+                                               .append(ROLES, "$" + ROLES))));
 
                return stream(aggregate(MongoCollections.ROLES, pipeline))
                                .map(d -> convertFromDocument(d, 
UserGroupDto.class))
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 154ddc2..67aa073 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
@@ -30,7 +30,15 @@ import org.hibernate.validator.constraints.NotEmpty;
 
 import javax.annotation.security.RolesAllowed;
 import javax.validation.Valid;
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import java.util.Set;
@@ -68,7 +76,7 @@ public class UserGroupResource {
        @GET
        public Response getGroups(@Auth UserInfo userInfo) {
                log.debug("Getting all groups for admin {}...", 
userInfo.getName());
-               return 
Response.ok(userGroupService.getAggregatedRolesByGroup()).build();
+               return 
Response.ok(userGroupService.getAggregatedRolesByGroup(userInfo)).build();
        }
 
        @PUT
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/UserRoleResource.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/UserRoleResource.java
index b9d0619..b74ef1c 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/UserRoleResource.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/UserRoleResource.java
@@ -26,7 +26,11 @@ import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
 
 import javax.annotation.security.RolesAllowed;
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
@@ -47,7 +51,7 @@ public class UserRoleResource {
        @GET
        public Response getRoles(@Auth UserInfo userInfo) {
                log.debug("Getting all roles for admin {}...", 
userInfo.getName());
-               return Response.ok(userRoleService.getUserRoles()).build();
+               return 
Response.ok(userRoleService.getUserRoles(userInfo)).build();
        }
 
        @POST
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 e9e3e47..fe81f4e 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
@@ -18,6 +18,7 @@
  */
 package com.epam.dlab.backendapi.service;
 
+import com.epam.dlab.auth.UserInfo;
 import com.epam.dlab.backendapi.resources.dto.UserGroupDto;
 
 import java.util.List;
@@ -38,5 +39,5 @@ public interface UserGroupService {
 
        void removeGroup(String groupId);
 
-       List<UserGroupDto> getAggregatedRolesByGroup();
+       List<UserGroupDto> getAggregatedRolesByGroup(UserInfo user);
 }
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/UserRoleService.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/UserRoleService.java
index 0b22b1d..a010684 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/UserRoleService.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/UserRoleService.java
@@ -18,13 +18,14 @@
  */
 package com.epam.dlab.backendapi.service;
 
+import com.epam.dlab.auth.UserInfo;
 import com.epam.dlab.backendapi.resources.dto.UserRoleDto;
 
 import java.util.List;
 
 public interface UserRoleService {
 
-       List<UserRoleDto> getUserRoles();
+       List<UserRoleDto> getUserRoles(UserInfo userInfo);
 
        void createRole(UserRoleDto dto);
 
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/UserRoleServiceImpl.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/UserRoleServiceImpl.java
index ce9462f..6940533 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/UserRoleServiceImpl.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/UserRoleServiceImpl.java
@@ -18,8 +18,11 @@
  */
 package com.epam.dlab.backendapi.service;
 
+import com.epam.dlab.auth.UserInfo;
 import com.epam.dlab.backendapi.dao.UserRoleDao;
 import com.epam.dlab.backendapi.resources.dto.UserRoleDto;
+import com.epam.dlab.backendapi.roles.UserRoles;
+import com.epam.dlab.exceptions.DlabException;
 import com.epam.dlab.exceptions.ResourceNotFoundException;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
@@ -27,16 +30,29 @@ import com.google.inject.Singleton;
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 @Singleton
 public class UserRoleServiceImpl implements UserRoleService {
        private static final String ROLE_NOT_FOUND_MSG = "Any of role : %s were 
not found";
+       private static final String ADMIN = "admin";
+
        @Inject
        private UserRoleDao userRoleDao;
 
        @Override
-       public List<UserRoleDto> getUserRoles() {
-               return userRoleDao.findAll();
+       public List<UserRoleDto> getUserRoles(UserInfo user) {
+               List<UserRoleDto> all = userRoleDao.findAll();
+               if (UserRoles.isAdmin(user)) {
+                       return all;
+               } else if (UserRoles.isProjectAdmin(user)) {
+                       return all
+                                       .stream()
+                                       .filter(role -> 
!role.getId().equalsIgnoreCase(ADMIN))
+                                       .collect(Collectors.toList());
+               } else {
+                       throw new DlabException(String.format("User %s doesn't 
have appropriate permission", user));
+               }
        }
 
        @Override
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 a1c8854..288b84e 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
@@ -18,34 +18,42 @@
  */
 package com.epam.dlab.backendapi.service.impl;
 
+import com.epam.dlab.auth.UserInfo;
 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.ProjectDTO;
 import com.epam.dlab.backendapi.resources.dto.UserGroupDto;
+import com.epam.dlab.backendapi.roles.UserRoles;
+import com.epam.dlab.backendapi.service.ProjectService;
 import com.epam.dlab.backendapi.service.UserGroupService;
 import com.epam.dlab.dto.UserInstanceStatus;
+import com.epam.dlab.exceptions.DlabException;
 import com.epam.dlab.exceptions.ResourceConflictException;
 import com.epam.dlab.exceptions.ResourceNotFoundException;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 import lombok.extern.slf4j.Slf4j;
 
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 @Singleton
 @Slf4j
 public class UserGroupServiceImpl implements UserGroupService {
-
        private static final String ROLE_NOT_FOUND_MSG = "Any of role : %s were 
not found";
+
        @Inject
        private UserGroupDao userGroupDao;
        @Inject
        private UserRoleDao userRoleDao;
        @Inject
        private ProjectDAO projectDAO;
+       @Inject
+       private ProjectService projectService;
 
        @Override
        public void createGroup(String group, Set<String> roleIds, Set<String> 
users) {
@@ -100,8 +108,22 @@ public class UserGroupServiceImpl implements 
UserGroupService {
        }
 
        @Override
-       public List<UserGroupDto> getAggregatedRolesByGroup() {
-               return userRoleDao.aggregateRolesByGroup();
+       public List<UserGroupDto> getAggregatedRolesByGroup(UserInfo user) {
+               if (UserRoles.isAdmin(user)) {
+                       return userRoleDao.aggregateRolesByGroup(true);
+               } else if (UserRoles.isProjectAdmin(user)) {
+                       Set<String> groups = projectService.getProjects(user)
+                                       .stream()
+                                       .map(ProjectDTO::getGroups)
+                                       .flatMap(Collection::stream)
+                                       .collect(Collectors.toSet());
+                       return userRoleDao.aggregateRolesByGroup(false)
+                                       .stream()
+                                       .filter(userGroup -> 
groups.contains(userGroup.getGroup()))
+                                       .collect(Collectors.toList());
+               } else {
+                       throw new DlabException(String.format("User %s doesn't 
have appropriate permission", user));
+               }
        }
 
        private void checkAnyRoleFound(Set<String> roleIds, boolean 
anyRoleFound) {
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 1953694..5325848 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
@@ -19,6 +19,9 @@
 
 package com.epam.dlab.backendapi.resources;
 
+import com.epam.dlab.auth.UserInfo;
+import com.epam.dlab.backendapi.dao.ProjectDAO;
+import com.epam.dlab.backendapi.domain.ProjectDTO;
 import com.epam.dlab.backendapi.resources.dto.GroupDTO;
 import com.epam.dlab.backendapi.resources.dto.UpdateRoleGroupDto;
 import com.epam.dlab.backendapi.resources.dto.UpdateUserGroupDto;
@@ -38,29 +41,36 @@ import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
 import static java.util.Collections.singleton;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.verifyZeroInteractions;
+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 UserGroupService userGroupService = 
mock(UserGroupService.class);
+    private static final String USER = "user";
+    private static final String ROLE_ID = "id";
+    private static final String GROUP = "group";
+    private UserGroupService userGroupService = mock(UserGroupService.class);
+    private ProjectDAO projectDAO = mock(ProjectDAO.class);
 
-       @Before
-       public void setup() throws AuthenticationException {
-               authSetup();
-       }
+    @Before
+    public void setup() throws AuthenticationException {
+        authSetup();
+    }
 
-       @Rule
-       public final ResourceTestRule resources =
-                       getResourceTestRuleInstance(new 
UserGroupResource(userGroupService));
+    @Rule
+    public final ResourceTestRule resources =
+            getResourceTestRuleInstance(new 
UserGroupResource(userGroupService));
 
        @Test
        public void createGroup() {
@@ -122,25 +132,25 @@ public class UserGroupResourceTest extends TestBase {
 
        @Test
        public void getGroups() {
-               
when(userGroupService.getAggregatedRolesByGroup()).thenReturn(Collections.singletonList(getUserGroup()));
+        
when(userGroupService.getAggregatedRolesByGroup(any(UserInfo.class))).thenReturn(Collections.singletonList(getUserGroup()));
 
-               final Response response = resources.getJerseyTest()
-                               .target("/group")
-                               .request()
-                               .header("Authorization", "Bearer " + TOKEN)
-                               .get();
+        final Response response = resources.getJerseyTest()
+                .target("/group")
+                .request()
+                .header("Authorization", "Bearer " + TOKEN)
+                .get();
 
-               final List<UserGroupDto> actualRoles = response.readEntity(new 
GenericType<List<UserGroupDto>>() {
-               });
+        final List<UserGroupDto> actualRoles = response.readEntity(new 
GenericType<List<UserGroupDto>>() {
+        });
 
-               assertEquals(HttpStatus.SC_OK, response.getStatus());
-               assertEquals(GROUP, actualRoles.get(0).getGroup());
-               assertTrue(actualRoles.get(0).getRoles().isEmpty());
-               assertEquals(MediaType.APPLICATION_JSON, 
response.getHeaderString(HttpHeaders.CONTENT_TYPE));
+        assertEquals(HttpStatus.SC_OK, response.getStatus());
+        assertEquals(GROUP, actualRoles.get(0).getGroup());
+        assertTrue(actualRoles.get(0).getRoles().isEmpty());
+        assertEquals(MediaType.APPLICATION_JSON, 
response.getHeaderString(HttpHeaders.CONTENT_TYPE));
 
-               verify(userGroupService).getAggregatedRolesByGroup();
-               verifyNoMoreInteractions(userGroupService);
-       }
+        verify(userGroupService).getAggregatedRolesByGroup(getUserInfo());
+        verifyNoMoreInteractions(userGroupService);
+    }
 
        @Test
        public void addRolesToGroup() {
@@ -277,15 +287,19 @@ public class UserGroupResourceTest extends TestBase {
 
        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 List<ProjectDTO> getProjects() {
+        return Collections.singletonList(ProjectDTO.builder()
+                .groups(new HashSet<>(Collections.singletonList(GROUP)))
+                .build());
+    }
 }
\ No newline at end of file
diff --git 
a/services/self-service/src/test/java/com/epam/dlab/backendapi/resources/UserRoleResourceTest.java
 
b/services/self-service/src/test/java/com/epam/dlab/backendapi/resources/UserRoleResourceTest.java
index 6c0f5be..c335db7 100644
--- 
a/services/self-service/src/test/java/com/epam/dlab/backendapi/resources/UserRoleResourceTest.java
+++ 
b/services/self-service/src/test/java/com/epam/dlab/backendapi/resources/UserRoleResourceTest.java
@@ -35,9 +35,12 @@ import javax.ws.rs.core.Response;
 import java.util.Collections;
 import java.util.List;
 
-import static java.util.Collections.singleton;
 import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.refEq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
 
 public class UserRoleResourceTest extends TestBase {
 
@@ -59,7 +62,7 @@ public class UserRoleResourceTest extends TestBase {
 
        @Test
        public void getRoles() {
-               
when(rolesService.getUserRoles()).thenReturn(Collections.singletonList(getUserRole()));
+               
when(rolesService.getUserRoles(getUserInfo())).thenReturn(Collections.singletonList(getUserRole()));
 
                final Response response = resources.getJerseyTest()
                                .target("/role")
@@ -74,7 +77,7 @@ public class UserRoleResourceTest extends TestBase {
                assertEquals(ROLE_ID, actualRoles.get(0).getId());
                assertEquals(MediaType.APPLICATION_JSON, 
response.getHeaderString(HttpHeaders.CONTENT_TYPE));
 
-               verify(rolesService).getUserRoles();
+               verify(rolesService).getUserRoles(getUserInfo());
                verifyNoMoreInteractions(rolesService);
        }
 
diff --git 
a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/UserRoleServiceImplTest.java
 
b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/UserRoleServiceImplTest.java
index 83fab66..883630c 100644
--- 
a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/UserRoleServiceImplTest.java
+++ 
b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/UserRoleServiceImplTest.java
@@ -19,6 +19,7 @@
 package com.epam.dlab.backendapi.service;
 
 import com.epam.dlab.backendapi.dao.UserRoleDao;
+import com.epam.dlab.backendapi.resources.TestBase;
 import com.epam.dlab.backendapi.resources.dto.UserRoleDto;
 import com.epam.dlab.exceptions.ResourceNotFoundException;
 import org.junit.Rule;
@@ -29,37 +30,24 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
 
-import java.util.Collections;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.refEq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
 
 @RunWith(MockitoJUnitRunner.class)
-public class UserRoleServiceImplTest {
-
-       private static final String ROLE_ID = "roleId";
-       @Mock
-       private UserRoleDao dao;
-       @InjectMocks
-       private UserRoleServiceImpl userRoleService;
-       @Rule
-       public ExpectedException expectedException = ExpectedException.none();
+public class UserRoleServiceImplTest extends TestBase {
 
-       @Test
-       public void getUserRoles() {
-               
when(dao.findAll()).thenReturn(Collections.singletonList(getUserRole()));
-               final List<UserRoleDto> roles = userRoleService.getUserRoles();
+    private static final String ROLE_ID = "roleId";
+    @Mock
+    private UserRoleDao dao;
+    @InjectMocks
+    private UserRoleServiceImpl userRoleService;
+    @Rule
+    public ExpectedException expectedException = ExpectedException.none();
 
-               assertEquals(1, roles.size());
-               assertEquals(ROLE_ID, roles.get(0).getId());
-
-               verify(dao).findAll();
-               verifyNoMoreInteractions(dao);
-       }
-
-
-       @Test
+    @Test
        public void createRole() {
 
                userRoleService.createRole(getUserRole());
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 53d2f6b..4b775e1 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
@@ -23,10 +23,13 @@ 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.ProjectDTO;
+import com.epam.dlab.backendapi.resources.TestBase;
 import com.epam.dlab.backendapi.resources.dto.UserGroupDto;
 import com.epam.dlab.dto.UserInstanceStatus;
 import com.epam.dlab.exceptions.DlabException;
 import com.epam.dlab.exceptions.ResourceNotFoundException;
+import io.dropwizard.auth.AuthenticationException;
+import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -36,10 +39,10 @@ import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
 
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.anySet;
 import static org.mockito.Mockito.anySetOf;
 import static org.mockito.Mockito.anyString;
@@ -52,32 +55,37 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
 
 @RunWith(MockitoJUnitRunner.class)
-public class UserGroupServiceImplTest {
-
-       private static final String ROLE_ID = "Role id";
-       private static final String USER = "test";
-       private static final String GROUP = "admin";
-       @Mock
-       private UserRoleDao userRoleDao;
-       @Mock
-       private UserGroupDao userGroupDao;
-       @Mock
-       private ProjectDAO projectDAO;
-       @InjectMocks
-       private UserGroupServiceImpl userGroupService;
-
-       @Rule
-       public ExpectedException expectedException = ExpectedException.none();
-
-       @Test
-       public void createGroup() {
-               when(userRoleDao.addGroupToRole(anySet(), 
anySet())).thenReturn(true);
-
-               userGroupService.createGroup(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));
-       }
+public class UserGroupServiceImplTest extends TestBase {
+
+    private static final String ROLE_ID = "Role id";
+    private static final String USER = "test";
+    private static final String GROUP = "admin";
+    @Mock
+    private UserRoleDao userRoleDao;
+    @Mock
+    private UserGroupDao userGroupDao;
+    @Mock
+    private ProjectDAO projectDAO;
+    @InjectMocks
+    private UserGroupServiceImpl userGroupService;
+
+    @Rule
+    public ExpectedException expectedException = ExpectedException.none();
+
+    @Before
+    public void setup() throws AuthenticationException {
+        authSetup();
+    }
+
+    @Test
+    public void createGroup() {
+        when(userRoleDao.addGroupToRole(anySet(), anySet())).thenReturn(true);
+
+        userGroupService.createGroup(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));
+    }
 
        @Test
        public void createGroupWithNoUsers() {
@@ -98,20 +106,6 @@ public class UserGroupServiceImplTest {
        }
 
        @Test
-       public void getAggregatedRoles() {
-               
when(userRoleDao.aggregateRolesByGroup()).thenReturn(Collections.singletonList(getUserGroup()));
-
-               final List<UserGroupDto> aggregatedRolesByGroup = 
userGroupService.getAggregatedRolesByGroup();
-
-               assertEquals(1, aggregatedRolesByGroup.size());
-               assertEquals(GROUP, aggregatedRolesByGroup.get(0).getGroup());
-               assertTrue(aggregatedRolesByGroup.get(0).getRoles().isEmpty());
-
-               verify(userRoleDao).aggregateRolesByGroup();
-               verifyNoMoreInteractions(userRoleDao);
-       }
-
-       @Test
        public void addUserToGroup() {
                userGroupService.addUsersToGroup(GROUP, 
Collections.singleton(USER));
 
@@ -233,13 +227,19 @@ public class UserGroupServiceImplTest {
        public void updateGroup() {
                userGroupService.updateGroup(GROUP, 
Collections.singleton(ROLE_ID), Collections.singleton(USER));
 
-               verify(userGroupDao).updateUsers(GROUP, 
Collections.singleton(USER));
-               verify(userRoleDao).removeGroupWhenRoleNotIn(GROUP, 
Collections.singleton(ROLE_ID));
-               
verify(userRoleDao).addGroupToRole(Collections.singleton(GROUP), 
Collections.singleton(ROLE_ID));
-               verifyNoMoreInteractions(userRoleDao, userGroupDao);
-       }
-
-       private UserGroupDto getUserGroup() {
-               return new UserGroupDto(GROUP, Collections.emptyList(), 
Collections.emptySet());
-       }
+        verify(userGroupDao).updateUsers(GROUP, Collections.singleton(USER));
+        verify(userRoleDao).removeGroupWhenRoleNotIn(GROUP, 
Collections.singleton(ROLE_ID));
+        verify(userRoleDao).addGroupToRole(Collections.singleton(GROUP), 
Collections.singleton(ROLE_ID));
+        verifyNoMoreInteractions(userRoleDao, userGroupDao);
+    }
+
+    private UserGroupDto getUserGroup() {
+        return new UserGroupDto(GROUP, Collections.emptyList(), 
Collections.emptySet());
+    }
+
+    private List<ProjectDTO> getProjects() {
+        return Collections.singletonList(ProjectDTO.builder()
+                .groups(new HashSet<>(Collections.singletonList(GROUP)))
+                .build());
+    }
 }
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org
For additional commands, e-mail: commits-h...@dlab.apache.org

Reply via email to