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