You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by bh...@apache.org on 2019/09/24 12:05:16 UTC
[incubator-dlab] branch DLAB-terraform updated: DLAB-000 fixed bugs
after merge
This is an automated email from the ASF dual-hosted git repository.
bhliva pushed a commit to branch DLAB-terraform
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
The following commit(s) were added to refs/heads/DLAB-terraform by this push:
new c64424b DLAB-000 fixed bugs after merge
c64424b is described below
commit c64424bd1f5c69899aba7540813e6f0491e02acb
Author: bhliva <bo...@epam.com>
AuthorDate: Tue Sep 24 15:05:01 2019 +0300
DLAB-000 fixed bugs after merge
---
.../com/epam/dlab/backendapi/dao/ProjectDAO.java | 3 +-
.../epam/dlab/backendapi/dao/ProjectDAOImpl.java | 9 +++---
.../service/impl/UserGroupServiceImpl.java | 13 ++++----
.../service/impl/UserGroupServiceImplTest.java | 36 ++++++++++++++++++++++
4 files changed, 49 insertions(+), 12 deletions(-)
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java
index 4a22907..95a954c 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java
@@ -14,9 +14,8 @@ public interface ProjectDAO {
List<ProjectDTO> getProjectsWithStatus(ProjectDTO.Status status);
- List<ProjectDTO> getProjectsWithStatusNotIn(ProjectDTO.Status... statuses);
+ List<ProjectDTO> getProjectsWithEndpointStatusNotIn(UserInstanceStatus... statuses);
- List<ProjectDTO> getUserProjectsWithStatus(UserInfo userInfo, ProjectDTO.Status status);
List<ProjectDTO> getUserProjects(UserInfo userInfo);
void create(ProjectDTO projectDTO);
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java
index 6e9ea11..0c5302d 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java
@@ -8,7 +8,6 @@ import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
import com.google.inject.Inject;
import com.mongodb.BasicDBObject;
-import com.mongodb.client.result.UpdateResult;
import org.bson.Document;
import org.bson.conversions.Bson;
@@ -45,9 +44,11 @@ public class ProjectDAOImpl extends BaseDAO implements ProjectDAO {
}
@Override
- public List<ProjectDTO> getProjectsWithStatusNotIn(ProjectDTO.Status... statuses) {
- List<String> statusList = Arrays.stream(statuses).map(ProjectDTO.Status::toString).collect(Collectors.toList());
- return find(PROJECTS_COLLECTION, not(in(STATUS_FIELD, statusList)), ProjectDTO.class);
+ public List<ProjectDTO> getProjectsWithEndpointStatusNotIn(UserInstanceStatus... statuses) {
+ final List<String> statusList =
+ Arrays.stream(statuses).map(UserInstanceStatus::name).collect(Collectors.toList());
+
+ return find(PROJECTS_COLLECTION, not(in("endpoints." + STATUS_FIELD, statusList)), ProjectDTO.class);
}
@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 0e455cc..51c45fd 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
@@ -21,9 +21,9 @@ package com.epam.dlab.backendapi.service.impl;
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.service.UserGroupService;
+import com.epam.dlab.dto.UserInstanceStatus;
import com.epam.dlab.exceptions.ResourceConflictException;
import com.epam.dlab.exceptions.ResourceNotFoundException;
import com.google.inject.Inject;
@@ -88,11 +88,12 @@ public class UserGroupServiceImpl implements UserGroupService {
@Override
public void removeGroup(String groupId) {
- if (projectDAO.getProjectsWithStatusNotIn(ProjectDTO.Status.DELETED, ProjectDTO.Status.DELETING).stream()
- .anyMatch(p -> p.getGroups().contains(groupId))) {
- throw new ResourceConflictException("Group can not be removed because it is used in some project");
- }
-
+ projectDAO.getProjectsWithEndpointStatusNotIn(UserInstanceStatus.TERMINATED, UserInstanceStatus.TERMINATING)
+ .stream()
+ .filter(p -> !p.getGroups().contains(groupId))
+ .findAny()
+ .orElseThrow(() -> new ResourceConflictException("Group can not be removed because it is used in some " +
+ "project"));
if (userRoleDao.removeGroup(groupId)) {
userGroupDao.removeGroup(groupId);
}
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 bcbbb3a..d79ddf2 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
@@ -19,9 +19,12 @@
package com.epam.dlab.backendapi.service.impl;
+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.dto.UserInstanceStatus;
import com.epam.dlab.exceptions.DlabException;
import com.epam.dlab.exceptions.ResourceNotFoundException;
import org.junit.Rule;
@@ -49,6 +52,8 @@ public class UserGroupServiceImplTest {
private UserRoleDao userRoleDao;
@Mock
private UserGroupDao userGroupDao;
+ @Mock
+ private ProjectDAO projectDAO;
@InjectMocks
private UserGroupServiceImpl userGroupService;
@@ -151,6 +156,10 @@ public class UserGroupServiceImplTest {
public void removeGroup() {
when(userRoleDao.removeGroup(anyString())).thenReturn(true);
+ final ProjectDTO projectDTO = new ProjectDTO(
+ "name", Collections.emptySet(), "", "", null, Collections.emptyList());
+ when(projectDAO.getProjectsWithEndpointStatusNotIn(UserInstanceStatus.TERMINATED,
+ UserInstanceStatus.TERMINATING)).thenReturn(Collections.singletonList(projectDTO));
doNothing().when(userGroupDao).removeGroup(anyString());
userGroupService.removeGroup(GROUP);
@@ -161,8 +170,31 @@ public class UserGroupServiceImplTest {
}
@Test
+ public void removeGroupWhenItIsUsedInProject() {
+
+ when(userRoleDao.removeGroup(anyString())).thenReturn(true);
+ when(projectDAO.getProjectsWithEndpointStatusNotIn(UserInstanceStatus.TERMINATED,
+ UserInstanceStatus.TERMINATING)).thenReturn(Collections.emptyList());
+ doNothing().when(userGroupDao).removeGroup(anyString());
+
+ try {
+ userGroupService.removeGroup(GROUP);
+ } catch (Exception e){
+ assertEquals("Group can not be removed because it is used in some project", e.getMessage());
+ }
+
+ verify(userRoleDao, never()).removeGroup(GROUP);
+ verify(userGroupDao, never()).removeGroup(GROUP);
+ verifyNoMoreInteractions(userGroupDao, userRoleDao);
+ }
+
+ @Test
public void removeGroupWhenGroupNotExist() {
+ final ProjectDTO projectDTO = new ProjectDTO(
+ "name", Collections.emptySet(), "", "", null, Collections.emptyList());
+ when(projectDAO.getProjectsWithEndpointStatusNotIn(UserInstanceStatus.TERMINATED,
+ UserInstanceStatus.TERMINATING)).thenReturn(Collections.singletonList(projectDTO));
when(userRoleDao.removeGroup(anyString())).thenReturn(false);
doNothing().when(userGroupDao).removeGroup(anyString());
@@ -175,6 +207,10 @@ public class UserGroupServiceImplTest {
@Test
public void removeGroupWithException() {
+ final ProjectDTO projectDTO = new ProjectDTO(
+ "name", Collections.emptySet(), "", "", null, Collections.emptyList());
+ when(projectDAO.getProjectsWithEndpointStatusNotIn(UserInstanceStatus.TERMINATED,
+ UserInstanceStatus.TERMINATING)).thenReturn(Collections.singletonList(projectDTO));
when(userRoleDao.removeGroup(anyString())).thenThrow(new DlabException("Exception"));
expectedException.expectMessage("Exception");
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org