From aae70f4bfb7126a6fc562604bf48fcd01d6d7af8 Mon Sep 17 00:00:00 2001 From: vasraz Date: Tue, 14 Sep 2021 16:40:39 +0100 Subject: Allow multiple base types for a service Change-Id: I2e37818a432295a6e9f795f38d730d60f66eef78 Signed-off-by: Vasyl Razinkov Issue-ID: SDC-3727 --- .../templates/default/BE-configuration.yaml.erb | 3 +- .../be/components/impl/ElementBusinessLogic.java | 16 +- .../openecomp/sdc/be/servlets/ElementServlet.java | 49 +- .../components/impl/ElementBusinessLogicTest.java | 321 +++++---- .../sdc/be/servlets/ElementServletTest.java | 48 +- .../java/org/openecomp/sdc/be/model/Service.java | 9 +- .../be/model/operations/impl/ElementOperation.java | 72 +- .../operations/impl/ElementOperationTest.java | 775 ++++++++++----------- .../src/test/resources/config/configuration.yaml | 9 +- .../org/openecomp/sdc/be/config/Configuration.java | 2 +- 10 files changed, 636 insertions(+), 668 deletions(-) diff --git a/catalog-be/src/main/docker/backend/chef-repo/cookbooks/sdc-catalog-be/templates/default/BE-configuration.yaml.erb b/catalog-be/src/main/docker/backend/chef-repo/cookbooks/sdc-catalog-be/templates/default/BE-configuration.yaml.erb index 118b48d04b..69fd11da97 100644 --- a/catalog-be/src/main/docker/backend/chef-repo/cookbooks/sdc-catalog-be/templates/default/BE-configuration.yaml.erb +++ b/catalog-be/src/main/docker/backend/chef-repo/cookbooks/sdc-catalog-be/templates/default/BE-configuration.yaml.erb @@ -1018,7 +1018,8 @@ genericAssetNodeTypes: ETSI NFV Network Service: tosca.nodes.nfv.NS serviceNodeTypes: - ETSI NFV Network Service: tosca.nodes.nfv.NS + ETSI NFV Network Service: + - tosca.nodes.nfv.NS workloadContext: Production diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ElementBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ElementBusinessLogic.java index 1bffb4e789..42fa95e642 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ElementBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ElementBusinessLogic.java @@ -116,7 +116,6 @@ public class ElementBusinessLogic extends BaseBusinessLogic { private static final String COMPONENT_TYPE_IS_INVALID = "Component type {} is invalid"; private static final String VALIDATION_OF_USER_ROLE_FAILED_USER_ID = "Validation of user role failed, userId {}"; private final IElementOperation elementOperation; - private final UserBusinessLogic userAdminManager; @Autowired public ElementBusinessLogic(IElementOperation elementDao, IGroupOperation groupOperation, IGroupInstanceOperation groupInstanceOperation, @@ -126,7 +125,6 @@ public class ElementBusinessLogic extends BaseBusinessLogic { super(elementDao, groupOperation, groupInstanceOperation, groupTypeOperation, interfaceOperation, interfaceLifecycleTypeOperation, artifactToscaOperation); this.elementOperation = elementOperation; - this.userAdminManager = userAdminManager; } /** @@ -324,7 +322,7 @@ public class ElementBusinessLogic extends BaseBusinessLogic { return Either.right(responseFormat); } Boolean isCategoryUnique = categoryUniqueEither.left().value(); - if (!isCategoryUnique) { + if (Boolean.FALSE.equals(isCategoryUnique)) { log.debug("Category is not unique, name {}, componentType {}", categoryName, componentType); ResponseFormat responseFormat = componentsUtils .getResponseFormat(ActionStatus.COMPONENT_CATEGORY_ALREADY_EXISTS, componentType, categoryName); @@ -437,7 +435,7 @@ public class ElementBusinessLogic extends BaseBusinessLogic { return Either.right(responseFormat); } Boolean isSubUnique = subCategoryUniqueForCategory.left().value(); - if (!isSubUnique) { + if (Boolean.FALSE.equals(isSubUnique)) { log.debug("Sub-category is not unique for category, parent name {}, subcategory norm name {}, componentType {}", parentCategoryName, normalizedName, componentType); ResponseFormat responseFormat = componentsUtils @@ -618,7 +616,7 @@ public class ElementBusinessLogic extends BaseBusinessLogic { return Either.right(responseFormat); } Boolean isGroupingUnique = groupingUniqueForSubCategory.left().value(); - if (!isGroupingUnique) { + if (Boolean.FALSE.equals(isGroupingUnique)) { log.debug("Grouping is not unique for sub-category, parent name {}, grouping norm name {}, componentType {}", parentSubCategoryName, normalizedName, componentType); ResponseFormat responseFormat = componentsUtils @@ -902,7 +900,7 @@ public class ElementBusinessLogic extends BaseBusinessLogic { return elementOperation.getDefaultHeatTimeout(); } - public Either>, ResponseFormat> getCatalogComponents(String userId, List excludeTypes) { + public Either>, ResponseFormat> getCatalogComponents(List excludeTypes) { try { return toscaOperationFacade.getCatalogOrArchiveComponents(true, excludeTypes) .bimap(this::groupByComponentType, err -> componentsUtils.getResponseFormat(componentsUtils.convertFromStorageResponse(err))); @@ -1120,7 +1118,7 @@ public class ElementBusinessLogic extends BaseBusinessLogic { } CategoryData categoryData = categoryResult.left().value(); Either>, JanusGraphOperationStatus> childrenNodes = janusGraphGenericDao - .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceNewCategory), (String) categoryData.getUniqueId(), + .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceNewCategory), categoryData.getUniqueId(), GraphEdgeLabels.SUB_CATEGORY, NodeTypeEnum.ResourceSubcategory, SubCategoryData.class); if (childrenNodes.isRight()) { return Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(childrenNodes.right().value())); @@ -1280,14 +1278,14 @@ public class ElementBusinessLogic extends BaseBusinessLogic { } } - public CatalogUpdateTimestamp getCatalogUpdateTime(String userId) { + public CatalogUpdateTimestamp getCatalogUpdateTime() { try { return toscaOperationFacade.getCatalogTimes(); } finally { janusGraphDao.commit(); } } - + public Either, ActionStatus> getBaseTypes(final String categoryName, final String userId, final String modelName) { final ActionStatus status = validateUserExistsActionStatus(userId); if (ActionStatus.OK != status) { diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ElementServlet.java b/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ElementServlet.java index f8028583b3..45f99a931e 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ElementServlet.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ElementServlet.java @@ -19,12 +19,20 @@ */ package org.openecomp.sdc.be.servlets; +import com.jcabi.aspects.Loggable; +import fj.data.Either; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.servers.Server; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; - import javax.inject.Inject; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; @@ -40,7 +48,6 @@ import javax.ws.rs.QueryParam; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; - import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic; import org.openecomp.sdc.be.components.impl.ElementBusinessLogic; import org.openecomp.sdc.be.components.impl.ModelBusinessLogic; @@ -75,19 +82,6 @@ import org.openecomp.sdc.common.log.wrappers.Logger; import org.openecomp.sdc.exception.ResponseFormat; import org.springframework.stereotype.Controller; -import com.jcabi.aspects.Loggable; - -import fj.data.Either; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.servers.Server; -import io.swagger.v3.oas.annotations.servers.Servers; -import io.swagger.v3.oas.annotations.tags.Tags; - @Path("/v1/") /** * @@ -96,8 +90,8 @@ import io.swagger.v3.oas.annotations.tags.Tags; * */ @Loggable(prepend = true, value = Loggable.DEBUG, trim = false) -@Tags({@io.swagger.v3.oas.annotations.tags.Tag(name = "SDCE-2 APIs")}) -@Servers({@Server(url = "/sdc2/rest")}) +@io.swagger.v3.oas.annotations.tags.Tag(name = "SDCE-2 APIs") +@Server(url = "/sdc2/rest") @Controller public class ElementServlet extends BeGenericServlet { @@ -197,24 +191,25 @@ public class ElementServlet extends BeGenericServlet { throw e; } } - + @GET @Path("/category/{componentType}/{categoryName}/baseTypes") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) @Operation(description = "Get base types for category", method = "GET", summary = "Get base types for category", - responses = {@ApiResponse(responseCode = "200", description = "Returns base types Ok"), - @ApiResponse(responseCode = "404", description = "No base types were found"), - @ApiResponse(responseCode = "500", description = "Internal Server Error")}) + responses = {@ApiResponse(responseCode = "200", description = "Returns base types Ok"), + @ApiResponse(responseCode = "404", description = "No base types were found"), + @ApiResponse(responseCode = "500", description = "Internal Server Error")}) @PermissionAllowed(AafPermission.PermNames.INTERNAL_ALL_VALUE) public Response getCategoryBaseTypes(@PathParam(value = "categoryName") final String categoryName, - @PathParam(value = "componentType") final String componentType, @Context final HttpServletRequest request, - @HeaderParam(value = Constants.USER_ID_HEADER) String userId, - @Parameter(description = "model", required = false) @QueryParam("model") String modelName) { + @PathParam(value = "componentType") final String componentType, + @Context final HttpServletRequest request, + @HeaderParam(value = Constants.USER_ID_HEADER) String userId, + @Parameter(description = "model", required = false) @QueryParam("model") String modelName) { try { final ElementBusinessLogic elementBL = getElementBL(request.getSession().getServletContext()); final Either, ActionStatus> either = elementBL.getBaseTypes(categoryName, userId, modelName); - + if (either.isRight() || either.left().value() == null) { log.debug("No base types were found"); return buildErrorResponse(getComponentsUtils().getResponseFormat(ActionStatus.NO_CONTENT)); @@ -553,7 +548,7 @@ public class ElementServlet extends BeGenericServlet { String url = request.getMethod() + " " + request.getRequestURI(); log.debug(START_HANDLE_REQUEST_OF, url); Either>, ResponseFormat> catalogData = getElementBL(request.getSession().getServletContext()) - .getCatalogComponents(userId, excludeTypes); + .getCatalogComponents(excludeTypes); if (catalogData.isRight()) { log.debug("failed to get catalog data"); return buildErrorResponse(catalogData.right().value()); @@ -625,7 +620,7 @@ public class ElementServlet extends BeGenericServlet { public Response getCatalogUpdateTime(@Context final HttpServletRequest request, @HeaderParam(value = Constants.USER_ID_HEADER) String userId) { String url = request.getMethod() + " " + request.getRequestURI(); log.debug("(post) Start handle request of {}", url); - CatalogUpdateTimestamp catalogUpdateTimestamp = getElementBL(request.getSession().getServletContext()).getCatalogUpdateTime(userId); + CatalogUpdateTimestamp catalogUpdateTimestamp = getElementBL(request.getSession().getServletContext()).getCatalogUpdateTime(); return buildOkResponse(getComponentsUtils().getResponseFormat(ActionStatus.OK), catalogUpdateTimestamp); } diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ElementBusinessLogicTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ElementBusinessLogicTest.java index 3fdc42fc21..8eb840a664 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ElementBusinessLogicTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ElementBusinessLogicTest.java @@ -21,7 +21,20 @@ */ package org.openecomp.sdc.be.components.impl; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; +import static org.mockito.ArgumentMatchers.anySet; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.when; + import fj.data.Either; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -53,214 +66,201 @@ import org.openecomp.sdc.be.user.Role; import org.openecomp.sdc.be.user.UserBusinessLogic; import org.openecomp.sdc.exception.ResponseFormat; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyBoolean; -import static org.mockito.ArgumentMatchers.anySet; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.doThrow; -import static org.mockito.Mockito.when; - @RunWith(MockitoJUnitRunner.class) public class ElementBusinessLogicTest extends BaseBusinessLogicMock { - private User user; + private User user; - @Mock - private ComponentsUtils componentsUtils; + @Mock + private ComponentsUtils componentsUtils; - @Mock - private UserBusinessLogic userAdminManager; + @Mock + private UserBusinessLogic userAdminManager; - @Mock - private JanusGraphDao janusGraphDao; + @Mock + private JanusGraphDao janusGraphDao; - @Mock - private UserValidations userValidations; + @Mock + private UserValidations userValidations; - @Mock - private ToscaOperationFacade toscaOperationFacade; + @Mock + private ToscaOperationFacade toscaOperationFacade; - @InjectMocks - ElementBusinessLogic elementBusinessLogic; + @InjectMocks + private ElementBusinessLogic elementBusinessLogic; @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - elementBusinessLogic = new ElementBusinessLogic(elementDao, groupOperation, groupInstanceOperation, groupTypeOperation, - groupBusinessLogic, interfaceOperation, interfaceLifecycleTypeOperation, artifactToscaOperation, elementDao, userAdminManager); - elementBusinessLogic.setComponentsUtils(componentsUtils); - elementBusinessLogic.setJanusGraphDao(janusGraphDao); - elementBusinessLogic.setToscaOperationFacade(toscaOperationFacade); - elementBusinessLogic.setUserValidations(userValidations); - user = new User(); - user.setUserId("admin"); - } + public void setUp() { + MockitoAnnotations.initMocks(this); + elementBusinessLogic = new ElementBusinessLogic(elementDao, groupOperation, groupInstanceOperation, groupTypeOperation, + groupBusinessLogic, interfaceOperation, interfaceLifecycleTypeOperation, artifactToscaOperation, elementDao, userAdminManager); + elementBusinessLogic.setComponentsUtils(componentsUtils); + elementBusinessLogic.setJanusGraphDao(janusGraphDao); + elementBusinessLogic.setToscaOperationFacade(toscaOperationFacade); + elementBusinessLogic.setUserValidations(userValidations); + user = new User(); + user.setUserId("admin"); + } @Test - public void testGetFollowed_givenUserWithDesignerRole_thenReturnsSuccessful() { - user.setUserId("designer1"); - user.setRole(Role.DESIGNER.name()); + public void testGetFollowed_givenUserWithDesignerRole_thenReturnsSuccessful() { + user.setUserId("designer1"); + user.setRole(Role.DESIGNER.name()); - Set resources = new HashSet<>(); - Set services = new HashSet<>(); + Set resources = new HashSet<>(); + Set services = new HashSet<>(); - Resource resource = new Resource(); - Service service = new Service(); + Resource resource = new Resource(); + Service service = new Service(); - resources.add(resource); - services.add(service); + resources.add(resource); + services.add(service); - Mockito.when(toscaOperationFacade.getFollowed(eq(user.getUserId()), Mockito.anySet(), Mockito.anySet(), Mockito.eq(ComponentTypeEnum.RESOURCE))) - .thenReturn(Either.left(resources)); - Mockito.when(toscaOperationFacade.getFollowed(eq(user.getUserId()), anySet(), anySet(), eq(ComponentTypeEnum.SERVICE))) - .thenReturn(Either.left(services)); + Mockito.when( + toscaOperationFacade.getFollowed(eq(user.getUserId()), Mockito.anySet(), Mockito.anySet(), Mockito.eq(ComponentTypeEnum.RESOURCE))) + .thenReturn(Either.left(resources)); + Mockito.when(toscaOperationFacade.getFollowed(eq(user.getUserId()), anySet(), anySet(), eq(ComponentTypeEnum.SERVICE))) + .thenReturn(Either.left(services)); - Map> result = elementBusinessLogic.getFollowed(user).left().value(); - Assert.assertTrue(result.get("services").size() == 1); - Assert.assertTrue(result.get("resources").size() == 1); - } + Map> result = elementBusinessLogic.getFollowed(user).left().value(); + Assert.assertTrue(result.get("services").size() == 1); + Assert.assertTrue(result.get("resources").size() == 1); + } - @Test - public void testGetFollowed_givenUserWithProductStrategistRole_thenReturnsEmptyList(){ - user.setUserId("pstra1"); - user.setRole(Role.PRODUCT_STRATEGIST.name()); + @Test + public void testGetFollowed_givenUserWithProductStrategistRole_thenReturnsEmptyList() { + user.setUserId("pstra1"); + user.setRole(Role.PRODUCT_STRATEGIST.name()); - Map> result = elementBusinessLogic.getFollowed(user).left().value(); - Assert.assertEquals("products list should be empty", 0, result.get("products").size()); + Map> result = elementBusinessLogic.getFollowed(user).left().value(); + Assert.assertEquals("products list should be empty", 0, result.get("products").size()); - } + } - @Test - public void testGetFollowed_givenUserWithProductManagerRole_thenReturnsProducts(){ - user.setUserId("pmanager1"); - user.setRole(Role.PRODUCT_MANAGER.name()); + @Test + public void testGetFollowed_givenUserWithProductManagerRole_thenReturnsProducts() { + user.setUserId("pmanager1"); + user.setRole(Role.PRODUCT_MANAGER.name()); - Set products = new HashSet<>(); - products.add(new Product()); + Set products = new HashSet<>(); + products.add(new Product()); - when(toscaOperationFacade.getFollowed(any(), anySet(), any(), eq(ComponentTypeEnum.PRODUCT))) - .thenReturn(Either.left(products)); + when(toscaOperationFacade.getFollowed(any(), anySet(), any(), eq(ComponentTypeEnum.PRODUCT))) + .thenReturn(Either.left(products)); - Map> result = elementBusinessLogic.getFollowed(user).left().value(); - Assert.assertEquals("1 product should exist", 1, result.get("products").size()); + Map> result = elementBusinessLogic.getFollowed(user).left().value(); + Assert.assertEquals("1 product should exist", 1, result.get("products").size()); - } + } - @Test - public void testGetFollowed_givenUserWithRoleAdminErrorOccursGettingResources_thenReturnsError() { - user.setUserId("admin1"); - user.setRole(Role.ADMIN.name()); + @Test + public void testGetFollowed_givenUserWithRoleAdminErrorOccursGettingResources_thenReturnsError() { + user.setUserId("admin1"); + user.setRole(Role.ADMIN.name()); - when(toscaOperationFacade.getFollowed(any(), anySet(), any(), eq(ComponentTypeEnum.RESOURCE))) - .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND)); + when(toscaOperationFacade.getFollowed(any(), anySet(), any(), eq(ComponentTypeEnum.RESOURCE))) + .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND)); - Assert.assertTrue(elementBusinessLogic.getFollowed(user).isRight()); - } + Assert.assertTrue(elementBusinessLogic.getFollowed(user).isRight()); + } - @Test - public void testGetAllCategories_givenUserIsNull_thenReturnsError() { - Assert.assertTrue(elementBusinessLogic.getAllCategories(null, null).isRight()); - } + @Test + public void testGetAllCategories_givenUserIsNull_thenReturnsError() { + Assert.assertTrue(elementBusinessLogic.getAllCategories(null, null).isRight()); + } - @Test(expected = ComponentException.class) - public void testGetAllCategories_givenValidationOfUserFails_thenReturnsError() { - doThrow(new ByResponseFormatComponentException(new ResponseFormat())).when(userValidations).validateUserExists(eq(user.getUserId())); - elementBusinessLogic.getAllCategories(null, user.getUserId()); - } + @Test(expected = ComponentException.class) + public void testGetAllCategories_givenValidationOfUserFails_thenReturnsError() { + doThrow(new ByResponseFormatComponentException(new ResponseFormat())).when(userValidations).validateUserExists(eq(user.getUserId())); + elementBusinessLogic.getAllCategories(null, user.getUserId()); + } - @Test - public void testGetAllCategories_givenInvalidComponentType_thenReturnsError() { - when(userValidations.validateUserExists(eq(user.getUserId()))).thenReturn(user); + @Test + public void testGetAllCategories_givenInvalidComponentType_thenReturnsError() { + when(userValidations.validateUserExists(eq(user.getUserId()))).thenReturn(user); - Assert.assertTrue(elementBusinessLogic.getAllCategories("NONE", user.getUserId()).isRight()); + Assert.assertTrue(elementBusinessLogic.getAllCategories("NONE", user.getUserId()).isRight()); - } + } - @Test - public void testGetAllCategories_givenValidUserAndComponentType_thenReturnsSuccessful() { + @Test + public void testGetAllCategories_givenValidUserAndComponentType_thenReturnsSuccessful() { - List categoryDefinitionList = new ArrayList<>(); - categoryDefinitionList.add(new CategoryDefinition()); + List categoryDefinitionList = new ArrayList<>(); + categoryDefinitionList.add(new CategoryDefinition()); - when(userValidations.validateUserExists(eq(user.getUserId()))).thenReturn(user); - when(elementDao.getAllCategories(NodeTypeEnum.ResourceNewCategory, false)) - .thenReturn(Either.left(categoryDefinitionList)); - Assert.assertTrue(elementBusinessLogic.getAllCategories(ComponentTypeEnum.RESOURCE_PARAM_NAME, user.getUserId()) - .isLeft()); - } + when(userValidations.validateUserExists(eq(user.getUserId()))).thenReturn(user); + when(elementDao.getAllCategories(NodeTypeEnum.ResourceNewCategory, false)) + .thenReturn(Either.left(categoryDefinitionList)); + Assert.assertTrue(elementBusinessLogic.getAllCategories(ComponentTypeEnum.RESOURCE_PARAM_NAME, user.getUserId()) + .isLeft()); + } - @Test - public void testGetAllCategories_givenValidUserId_thenReturnsSuccessful() { + @Test + public void testGetAllCategories_givenValidUserId_thenReturnsSuccessful() { - List dummyCategoryDefinitionList = new ArrayList<>(); - dummyCategoryDefinitionList.add(new CategoryDefinition()); + List dummyCategoryDefinitionList = new ArrayList<>(); + dummyCategoryDefinitionList.add(new CategoryDefinition()); - when(userValidations.validateUserExists(eq(user.getUserId()))) - .thenReturn(user); - when(elementDao.getAllCategories(any(NodeTypeEnum.class), anyBoolean())) - .thenReturn(Either.left(dummyCategoryDefinitionList)); + when(userValidations.validateUserExists(eq(user.getUserId()))) + .thenReturn(user); + when(elementDao.getAllCategories(any(NodeTypeEnum.class), anyBoolean())) + .thenReturn(Either.left(dummyCategoryDefinitionList)); - Assert.assertTrue(elementBusinessLogic.getAllCategories(user.getUserId()).isLeft()); - } + Assert.assertTrue(elementBusinessLogic.getAllCategories(user.getUserId()).isLeft()); + } - @Test - public void testDeleteCategory_givenValidComponentTypeAndCategoryId_thenReturnsSuccessful() { + @Test + public void testDeleteCategory_givenValidComponentTypeAndCategoryId_thenReturnsSuccessful() { - when(elementDao.deleteCategory(any(NodeTypeEnum.class), anyString())) - .thenReturn(Either.left(new CategoryDefinition())); + when(elementDao.deleteCategory(any(NodeTypeEnum.class), anyString())) + .thenReturn(Either.left(new CategoryDefinition())); - Assert.assertTrue(elementBusinessLogic.deleteCategory("cat1", "resources", user.getUserId()).isLeft()); - } + Assert.assertTrue(elementBusinessLogic.deleteCategory("cat1", "resources", user.getUserId()).isLeft()); + } - @Test - public void testCreateSubCategory_givenValidSubCategory_thenReturnsSuccessful() { - user.setRole(Role.ADMIN.name()); - SubCategoryDefinition subCatDef = new SubCategoryDefinition(); - subCatDef.setName("subCat1"); + @Test + public void testCreateSubCategory_givenValidSubCategory_thenReturnsSuccessful() { + user.setRole(Role.ADMIN.name()); + SubCategoryDefinition subCatDef = new SubCategoryDefinition(); + subCatDef.setName("subCat1"); + + when(userValidations.validateUserExists(eq(user.getUserId()))) + .thenReturn(user); + when(elementDao.getCategory(any(NodeTypeEnum.class), anyString())) + .thenReturn(Either.left(new CategoryDefinition())); + when(elementDao.isSubCategoryUniqueForCategory(any(NodeTypeEnum.class), anyString(), anyString())) + .thenReturn(Either.left(Boolean.TRUE)); + when(elementDao.getSubCategoryUniqueForType(any(NodeTypeEnum.class), anyString())) + .thenReturn(Either.left(subCatDef)); + when(elementDao.createSubCategory(anyString(), any(SubCategoryDefinition.class), any(NodeTypeEnum.class))) + .thenReturn(Either.left(subCatDef)); + + Assert.assertTrue(elementBusinessLogic.createSubCategory(subCatDef, "resources", + "cat1", user.getUserId()).isLeft()); + } - when(userValidations.validateUserExists(eq(user.getUserId()))) - .thenReturn(user); - when(elementDao.getCategory(any(NodeTypeEnum.class), anyString())) - .thenReturn(Either.left(new CategoryDefinition())); - when(elementDao.isSubCategoryUniqueForCategory(any(NodeTypeEnum.class), anyString(), anyString())) - .thenReturn(Either.left(Boolean.TRUE)); - when(elementDao.getSubCategoryUniqueForType(any(NodeTypeEnum.class), anyString())) - .thenReturn(Either.left(subCatDef)); - when(elementDao.createSubCategory(anyString(), any(SubCategoryDefinition.class), any(NodeTypeEnum.class))) - .thenReturn(Either.left(subCatDef)); + @Test + public void testCreateSubCategory_givenNullSubCategory_thenReturnsError() { + Assert.assertTrue(elementBusinessLogic.createSubCategory(null, "resources", + "cat1", user.getUserId()).isRight()); + } - Assert.assertTrue(elementBusinessLogic.createSubCategory(subCatDef, "resources", - "cat1", user.getUserId()).isLeft()); - } + @Test(expected = ComponentException.class) + public void testCreateSubCategory_givenUserValidationFails_thenReturnsException() { + SubCategoryDefinition subCategoryDefinition = new SubCategoryDefinition(); + doThrow(new ByResponseFormatComponentException(new ResponseFormat())).when(userValidations).validateUserExists(eq(user.getUserId())); + elementBusinessLogic.createSubCategory(subCategoryDefinition, "resources", "cat1", user.getUserId()); + } - @Test - public void testCreateSubCategory_givenNullSubCategory_thenReturnsError() { - Assert.assertTrue(elementBusinessLogic.createSubCategory(null, "resources", - "cat1", user.getUserId()).isRight()); - } - - @Test(expected = ComponentException.class) - public void testCreateSubCategory_givenUserValidationFails_thenReturnsException() { - SubCategoryDefinition subCategoryDefinition = new SubCategoryDefinition(); - doThrow(new ByResponseFormatComponentException(new ResponseFormat())).when(userValidations).validateUserExists(eq(user.getUserId())); - elementBusinessLogic.createSubCategory(subCategoryDefinition, "resources", "cat1", user.getUserId()); - } - - @Test(expected=ComponentException.class) + @Test(expected = ComponentException.class) public void testcreateCategory_VALIDATION_OF_USER_FAILED() { CategoryDefinition catdefinition = new CategoryDefinition(); String userid = ""; ResponseFormat responseFormat = new ResponseFormat(7); when(userValidations.validateUserExists("")).thenThrow(new ByResponseFormatComponentException(responseFormat)); - elementBusinessLogic.createCategory(catdefinition,"Service", userid); + elementBusinessLogic.createCategory(catdefinition, "Service", userid); } @Test @@ -270,7 +270,7 @@ public class ElementBusinessLogicTest extends BaseBusinessLogicMock { User user = new User(); when(userValidations.validateUserExists("USR")).thenReturn(user); when(componentsUtils.getResponseFormat(ActionStatus.INVALID_CONTENT)).thenReturn(responseFormat); - Either response = elementBusinessLogic.createCategory(catdefinition,"Service", "USR"); + Either response = elementBusinessLogic.createCategory(catdefinition, "Service", "USR"); Assert.assertTrue(response.isRight()); Assert.assertEquals((Integer) 9, response.right().value().getStatus()); } @@ -286,7 +286,7 @@ public class ElementBusinessLogicTest extends BaseBusinessLogicMock { when(userValidations.validateUserExists("USR")).thenReturn(user); when(componentsUtils.getResponseFormat(ActionStatus.INVALID_CONTENT)).thenReturn(responseFormat); - Either response = elementBusinessLogic.createCategory(catdefinition,"Service", "USR"); + Either response = elementBusinessLogic.createCategory(catdefinition, "Service", "USR"); Assert.assertTrue(response.isRight()); Assert.assertEquals((Integer) 9, response.right().value().getStatus()); } @@ -301,11 +301,11 @@ public class ElementBusinessLogicTest extends BaseBusinessLogicMock { when(userValidations.validateUserExists("USR")).thenReturn(user); when(componentsUtils.getResponseFormat(ActionStatus.INVALID_CONTENT)).thenReturn(responseFormat); - Either response = elementBusinessLogic.createCategory(catdefinition,"SERVICE_PARAM_NAME", "USR"); + Either response = elementBusinessLogic.createCategory(catdefinition, "SERVICE_PARAM_NAME", "USR"); Assert.assertTrue(response.isRight()); Assert.assertEquals((Integer) 9, response.right().value().getStatus()); } - + @Test public void testGetBaseTypes_givenValidUserAndComponentType_thenReturnsSuccessful() { @@ -316,10 +316,9 @@ public class ElementBusinessLogicTest extends BaseBusinessLogicMock { when(userValidations.validateUserExistsActionStatus(eq(user.getUserId()))).thenReturn(ActionStatus.OK); when(elementDao.getBaseTypes(categoryName, modelName)).thenReturn(baseTypes); - Assert.assertTrue(elementBusinessLogic.getBaseTypes(categoryName, user.getUserId(), modelName) - .isLeft()); + Assert.assertTrue(elementBusinessLogic.getBaseTypes(categoryName, user.getUserId(), modelName).isLeft()); } - + @Test public void testGetBaseTypes_givenUserValidationFails_thenReturnsException() { when(userValidations.validateUserExistsActionStatus(eq(user.getUserId()))).thenReturn(ActionStatus.RESTRICTED_OPERATION); diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ElementServletTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ElementServletTest.java index f4ca52b0c2..c9e41bfa5f 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ElementServletTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ElementServletTest.java @@ -28,11 +28,11 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.when; +import fj.data.Either; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; - import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; @@ -40,7 +40,6 @@ import javax.ws.rs.client.Entity; import javax.ws.rs.core.Application; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; - import org.apache.commons.text.StrSubstitutor; import org.apache.http.HttpStatus; import org.assertj.core.util.Lists; @@ -92,8 +91,6 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.web.context.WebApplicationContext; -import fj.data.Either; - class ElementServletTest extends JerseyTest { public static final HttpServletRequest request = Mockito.mock(HttpServletRequest.class); @@ -103,8 +100,7 @@ class ElementServletTest extends JerseyTest { public static final BeGenericServlet beGenericServlet = Mockito.mock(BeGenericServlet.class); public static final Resource resource = Mockito.mock(Resource.class); public static final UserBusinessLogic userBusinessLogic = Mockito.mock(UserBusinessLogic.class); - public static final ComponentInstanceBusinessLogic componentInstanceBusinessLogic = Mockito - .mock(ComponentInstanceBusinessLogic.class); + public static final ComponentInstanceBusinessLogic componentInstanceBusinessLogic = Mockito.mock(ComponentInstanceBusinessLogic.class); public static final ArtifactsBusinessLogic artifactsBusinessLogic = Mockito.mock(ArtifactsBusinessLogic.class); private static final ServletContext servletContext = Mockito.mock(ServletContext.class); @@ -113,15 +109,13 @@ class ElementServletTest extends JerseyTest { private static final ServletUtils servletUtils = Mockito.mock(ServletUtils.class); private static final UserBusinessLogic userAdmin = Mockito.mock(UserBusinessLogic.class); private static final ComponentsUtils componentUtils = Mockito.mock(ComponentsUtils.class); - private static final ComponentsCleanBusinessLogic componentsCleanBusinessLogic = Mockito - .mock(ComponentsCleanBusinessLogic.class); + private static final ComponentsCleanBusinessLogic componentsCleanBusinessLogic = Mockito.mock(ComponentsCleanBusinessLogic.class); private static final ElementBusinessLogic elementBusinessLogic = Mockito.mock(ElementBusinessLogic.class); private static final ModelBusinessLogic modelBusinessLogic = Mockito.mock(ModelBusinessLogic.class); private static final ResponseFormat okResponseFormat = new ResponseFormat(HttpStatus.SC_OK); private static final ResponseFormat conflictResponseFormat = new ResponseFormat(HttpStatus.SC_CONFLICT); - private static final ResponseFormat generalErrorResponseFormat = new ResponseFormat( - HttpStatus.SC_INTERNAL_SERVER_ERROR); + private static final ResponseFormat generalErrorResponseFormat = new ResponseFormat(HttpStatus.SC_INTERNAL_SERVER_ERROR); private static final ResponseFormat createdResponseFormat = new ResponseFormat(HttpStatus.SC_CREATED); private static final ResponseFormat noContentResponseFormat = new ResponseFormat(HttpStatus.SC_NO_CONTENT); private static final ResponseFormat unauthorizedResponseFormat = Mockito.mock(ResponseFormat.class); @@ -137,8 +131,7 @@ class ElementServletTest extends JerseyTest { /* Users */ private static User designerUser = new User("designer", "designer", "designer", "designer@email.com", - Role.DESIGNER.name(), System - .currentTimeMillis()); + Role.DESIGNER.name(), System.currentTimeMillis()); private static ConfigurationManager configurationManager; @@ -146,14 +139,12 @@ class ElementServletTest extends JerseyTest { public static void setup() { //Needed for User Authorization - when(servletContext.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR)) - .thenReturn(webAppContextWrapper); + when(servletContext.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR)).thenReturn(webAppContextWrapper); when(webAppContextWrapper.getWebAppContext(servletContext)).thenReturn(webApplicationContext); when(webApplicationContext.getBean(ServletUtils.class)).thenReturn(servletUtils); when(servletUtils.getUserAdmin()).thenReturn(userAdmin); when(servletUtils.getComponentsUtils()).thenReturn(componentUtils); - when(componentUtils.getResponseFormat(ActionStatus.RESTRICTED_OPERATION)) - .thenReturn(unauthorizedResponseFormat); + when(componentUtils.getResponseFormat(ActionStatus.RESTRICTED_OPERATION)).thenReturn(unauthorizedResponseFormat); when(unauthorizedResponseFormat.getStatus()).thenReturn(HttpStatus.SC_UNAUTHORIZED); when(componentUtils.getResponseFormat(ActionStatus.OK)).thenReturn(okResponseFormat); @@ -161,8 +152,7 @@ class ElementServletTest extends JerseyTest { when(componentUtils.getResponseFormat(ActionStatus.NO_CONTENT)).thenReturn(noContentResponseFormat); when(componentUtils.getResponseFormat(ActionStatus.INVALID_CONTENT)).thenReturn(badRequestResponseFormat); when(componentUtils.getResponseFormat(ActionStatus.GENERAL_ERROR)).thenReturn(generalErrorResponseFormat); - when(componentUtils.getResponseFormat(any(ComponentException.class))) - .thenReturn(generalErrorResponseFormat); + when(componentUtils.getResponseFormat(any(ComponentException.class))).thenReturn(generalErrorResponseFormat); ByResponseFormatComponentException ce = Mockito.mock(ByResponseFormatComponentException.class); when(ce.getResponseFormat()).thenReturn(unauthorizedResponseFormat); @@ -1044,7 +1034,7 @@ class ElementServletTest extends JerseyTest { Either>, ResponseFormat> screenEither = Either .right(badRequestResponseFormat); - when(elementBusinessLogic.getCatalogComponents(eq(designerUser.getUserId()), any())) + when(elementBusinessLogic.getCatalogComponents(any())) .thenReturn(screenEither); Response response = target() @@ -1061,7 +1051,7 @@ class ElementServletTest extends JerseyTest { void screenExceptionDuringProcessingTest() { String path = "/v1/screen"; - when(elementBusinessLogic.getCatalogComponents(eq(designerUser.getUserId()), any())) + when(elementBusinessLogic.getCatalogComponents(any())) .thenThrow(new RuntimeException("Test exception: screen")); Response response = target() @@ -1079,7 +1069,7 @@ class ElementServletTest extends JerseyTest { String path = "/v1/screen"; Either>, ResponseFormat> screenEither = Either.left(new HashMap<>()); - when(elementBusinessLogic.getCatalogComponents(eq(designerUser.getUserId()), any())) + when(elementBusinessLogic.getCatalogComponents(any())) .thenReturn(screenEither); Response response = target() @@ -1095,7 +1085,7 @@ class ElementServletTest extends JerseyTest { @Override protected Application configure() { ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); - forceSet(TestProperties.CONTAINER_PORT, "0"); + forceSet(TestProperties.CONTAINER_PORT, "0"); return new ResourceConfig(ElementServlet.class) .register(new AbstractBinder() { @@ -1112,13 +1102,12 @@ class ElementServletTest extends JerseyTest { }) .property("contextConfig", context); } - + @Test void getBaseTypesTest() { String path = "/v1/category/services/CAT1/baseTypes"; Either, ActionStatus> baseTypesEither = Either.left(new ArrayList<>()); - when(elementBusinessLogic.getBaseTypes("CAT1", designerUser.getUserId(), null)) - .thenReturn(baseTypesEither); + when(elementBusinessLogic.getBaseTypes("CAT1", designerUser.getUserId(), null)).thenReturn(baseTypesEither); Response response = target() .path(path) @@ -1129,14 +1118,13 @@ class ElementServletTest extends JerseyTest { assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_OK); } - + @Test void getBaseTypesNoBaseTypesFoundTest() { String path = "/v1/category/services/CAT1/baseTypes"; Either, ActionStatus> baseTypesEither = Either.right(ActionStatus.NO_CONTENT); - when(elementBusinessLogic.getBaseTypes("CAT1", designerUser.getUserId(), null)) - .thenReturn(baseTypesEither); + when(elementBusinessLogic.getBaseTypes("CAT1", designerUser.getUserId(), null)).thenReturn(baseTypesEither); Response response = target() .path(path) @@ -1147,5 +1135,5 @@ class ElementServletTest extends JerseyTest { assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); } - -} \ No newline at end of file + +} diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/Service.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/Service.java index 9728e8ccb8..a06f737c83 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/Service.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/Service.java @@ -19,9 +19,11 @@ */ package org.openecomp.sdc.be.model; +import static java.util.Optional.ofNullable; + import java.util.HashMap; +import java.util.List; import java.util.Map; -import java.util.Optional; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; @@ -165,8 +167,9 @@ public class Service extends Component { } private String fetchToscaNameFromConfigBasedOnService(final String serviceCategory) { - return Optional.ofNullable(ConfigurationManager.getConfigurationManager().getConfiguration().getServiceNodeTypes()) - .map(serviceNames -> serviceNames.get(serviceCategory)).orElse(null); + final Map> serviceNodeTypes = ConfigurationManager.getConfigurationManager().getConfiguration().getServiceNodeTypes(); + final List stringList = ofNullable(serviceNodeTypes).map(serviceNames -> serviceNames.get(serviceCategory)).orElse(null); + return stringList != null ? stringList.get(0) : null; } @Override diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ElementOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ElementOperation.java index 4c97b45830..b98f8d9dea 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ElementOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ElementOperation.java @@ -40,10 +40,10 @@ import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge; import org.openecomp.sdc.be.dao.graph.datatype.GraphNode; import org.openecomp.sdc.be.dao.graph.datatype.GraphRelation; +import org.openecomp.sdc.be.dao.janusgraph.HealingJanusGraphDao; import org.openecomp.sdc.be.dao.janusgraph.JanusGraphGenericDao; import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus; import org.openecomp.sdc.be.dao.jsongraph.GraphVertex; -import org.openecomp.sdc.be.dao.janusgraph.HealingJanusGraphDao; import org.openecomp.sdc.be.dao.jsongraph.types.EdgeLabelEnum; import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum; import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum; @@ -80,10 +80,12 @@ public class ElementOperation implements IElementOperation { private static final String COULDN_T_FETCH_janusGraph_GRAPH = "Couldn't fetch janusgraph graph"; private static final String UNKNOWN_CATEGORY_TYPE = "Unknown category type {}"; private static final Logger log = Logger.getLogger(ElementOperation.class.getName()); + private static final String PROBLEM_WHILE_CREATING_CATEGORY_REASON = "Problem while creating category, reason {}"; private JanusGraphGenericDao janusGraphGenericDao; private HealingJanusGraphDao janusGraphDao; - public ElementOperation(@Qualifier("janusgraph-generic-dao") JanusGraphGenericDao janusGraphGenericDao, @Qualifier("janusgraph-dao") HealingJanusGraphDao janusGraphDao) { + public ElementOperation(@Qualifier("janusgraph-generic-dao") JanusGraphGenericDao janusGraphGenericDao, + @Qualifier("janusgraph-dao") HealingJanusGraphDao janusGraphDao) { super(); this.janusGraphGenericDao = janusGraphGenericDao; this.janusGraphDao = janusGraphDao; @@ -143,7 +145,7 @@ public class ElementOperation implements IElementOperation { if (createNode.isRight()) { JanusGraphOperationStatus value = createNode.right().value(); ActionStatus actionStatus = ActionStatus.GENERAL_ERROR; - log.debug("Problem while creating category, reason {}", value); + log.debug(PROBLEM_WHILE_CREATING_CATEGORY_REASON, value); if (value == JanusGraphOperationStatus.JANUSGRAPH_SCHEMA_VIOLATION) { actionStatus = ActionStatus.COMPONENT_CATEGORY_ALREADY_EXISTS; } @@ -179,7 +181,7 @@ public class ElementOperation implements IElementOperation { if (updatedNode.isRight()) { JanusGraphOperationStatus value = updatedNode.right().value(); ActionStatus actionStatus = ActionStatus.GENERAL_ERROR; - log.debug("Problem while creating category, reason {}", value); + log.debug(PROBLEM_WHILE_CREATING_CATEGORY_REASON, value); result = Either.right(actionStatus); return result; } @@ -228,7 +230,7 @@ public class ElementOperation implements IElementOperation { .createNode(subCategoryData, SubCategoryData.class); if (subCategoryNode.isRight()) { JanusGraphOperationStatus janusGraphOperationStatus = subCategoryNode.right().value(); - log.debug("Problem while creating category, reason {}", janusGraphOperationStatus); + log.debug(PROBLEM_WHILE_CREATING_CATEGORY_REASON, janusGraphOperationStatus); if (janusGraphOperationStatus == JanusGraphOperationStatus.JANUSGRAPH_SCHEMA_VIOLATION) { actionStatus = ActionStatus.COMPONENT_SUB_CATEGORY_EXISTS_FOR_CATEGORY; } @@ -380,50 +382,54 @@ public class ElementOperation implements IElementOperation { } @Override - public List getBaseTypes(final String categoryName, final String modelName){ + public List getBaseTypes(final String categoryName, final String modelName) { final ArrayList baseTypes = new ArrayList<>(); - final Map categoriesSpecificBaseTypes = ConfigurationManager.getConfigurationManager().getConfiguration().getServiceNodeTypes(); - final String categorySpecificBaseType = categoriesSpecificBaseTypes == null ? null : categoriesSpecificBaseTypes.get(categoryName); + final Map> categoriesSpecificBaseTypes = ConfigurationManager.getConfigurationManager().getConfiguration().getServiceNodeTypes(); + final List categorySpecificBaseType = categoriesSpecificBaseTypes == null ? null : categoriesSpecificBaseTypes.get(categoryName); final String generalBaseType = ConfigurationManager.getConfigurationManager().getConfiguration().getGenericAssetNodeTypes().get("Service"); - final String baseToscaResourceName = categorySpecificBaseType == null? generalBaseType : categorySpecificBaseType; + final List baseToscaResourceNames = categorySpecificBaseType == null ? List.of(generalBaseType) : categorySpecificBaseType; - final Map props = new EnumMap<>(GraphPropertyEnum.class); - props.put(GraphPropertyEnum.TOSCA_RESOURCE_NAME, baseToscaResourceName); - props.put(GraphPropertyEnum.STATE, LifecycleStateEnum.CERTIFIED.name()); - final Either, JanusGraphOperationStatus> baseTypeVertex = janusGraphDao + baseToscaResourceNames.forEach(baseToscaResourceName -> { + final Map props = new EnumMap<>(GraphPropertyEnum.class); + props.put(GraphPropertyEnum.TOSCA_RESOURCE_NAME, baseToscaResourceName); + props.put(GraphPropertyEnum.STATE, LifecycleStateEnum.CERTIFIED.name()); + final Either, JanusGraphOperationStatus> baseTypeVertex = janusGraphDao .getByCriteria(VertexTypeEnum.NODE_TYPE, props, null, JsonParseFlagEnum.ParseAll, modelName); - - if (baseTypeVertex.isLeft()) { - BaseType baseType = new BaseType(baseToscaResourceName); - baseTypes.add(baseType); - - final Map> typesDerivedFromBaseType = new LinkedHashMap<>(); - baseTypeVertex.left().value().forEach(v -> { - baseType.addVersion((String)v.getMetadataProperty(GraphPropertyEnum.VERSION)); - addTypesDerivedFromVertex(typesDerivedFromBaseType, v); - }); - - typesDerivedFromBaseType.forEach((k,v) -> baseTypes.add(new BaseType(k, v))); - } + + if (baseTypeVertex.isLeft()) { + BaseType baseType = new BaseType(baseToscaResourceName); + baseTypes.add(baseType); + + final Map> typesDerivedFromBaseType = new LinkedHashMap<>(); + baseTypeVertex.left().value().forEach(v -> { + baseType.addVersion((String) v.getMetadataProperty(GraphPropertyEnum.VERSION)); + addTypesDerivedFromVertex(typesDerivedFromBaseType, v); + }); + + typesDerivedFromBaseType.forEach((k, v) -> baseTypes.add(new BaseType(k, v))); + } + }); return baseTypes; } private Map> addTypesDerivedFromVertex(final Map> types, final GraphVertex vertex) { final Either, JanusGraphOperationStatus> derivedFromVertex = - janusGraphDao.getParentVertices(vertex, EdgeLabelEnum.DERIVED_FROM, JsonParseFlagEnum.ParseAll); + janusGraphDao.getParentVertices(vertex, EdgeLabelEnum.DERIVED_FROM, JsonParseFlagEnum.ParseAll); if (derivedFromVertex.isLeft()) { - derivedFromVertex.left().value().stream().filter(v -> v.getMetadataProperty(GraphPropertyEnum.STATE).equals(LifecycleStateEnum.CERTIFIED.name())) + derivedFromVertex.left().value().stream() + .filter(v -> v.getMetadataProperty(GraphPropertyEnum.STATE).equals(LifecycleStateEnum.CERTIFIED.name())) .forEach(v -> { - addBaseTypeVersion(types, (String) v.getMetadataProperty(GraphPropertyEnum.TOSCA_RESOURCE_NAME), (String) v.getMetadataProperty(GraphPropertyEnum.VERSION)); - addTypesDerivedFromVertex(types, v); + addBaseTypeVersion(types, (String) v.getMetadataProperty(GraphPropertyEnum.TOSCA_RESOURCE_NAME), + (String) v.getMetadataProperty(GraphPropertyEnum.VERSION)); + addTypesDerivedFromVertex(types, v); }); } return types; } private void addBaseTypeVersion(final Map> baseTypes, final String baseTypeToscaResourceName, final String baseTypeVersion) { - List versions = baseTypes.get(baseTypeToscaResourceName) == null ? new ArrayList<>(): baseTypes.get(baseTypeToscaResourceName); + List versions = baseTypes.get(baseTypeToscaResourceName) == null ? new ArrayList<>() : baseTypes.get(baseTypeToscaResourceName); versions.add(baseTypeVersion); baseTypes.put(baseTypeToscaResourceName, versions); } @@ -619,7 +625,7 @@ public class ElementOperation implements IElementOperation { } Vertex artifactV = iterator.next(); artifactV.remove(); - ; + SubCategoryDefinition deleted = new SubCategoryDefinition(subCategoryDataEither.left().value().getSubCategoryDataDefinition()); result = Either.left(deleted); return result; @@ -664,7 +670,7 @@ public class ElementOperation implements IElementOperation { } Vertex artifactV = iterator.next(); artifactV.remove(); - ; + GroupingDefinition deleted = new GroupingDefinition(groupingDataEither.left().value().getGroupingDataDefinition()); result = Either.left(deleted); return result; diff --git a/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/ElementOperationTest.java b/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/ElementOperationTest.java index 58ee0d52af..cf3b6dad8b 100644 --- a/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/ElementOperationTest.java +++ b/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/ElementOperationTest.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -20,19 +20,36 @@ package org.openecomp.sdc.be.model.operations.impl; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.eq; +import static org.mockito.Mockito.isNull; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + import fj.data.Either; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import org.apache.tinkerpop.gremlin.structure.T; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; import org.openecomp.sdc.be.config.ArtifactConfiguration; import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.dao.impl.HealingPipelineDao; +import org.openecomp.sdc.be.dao.janusgraph.HealingJanusGraphDao; import org.openecomp.sdc.be.dao.janusgraph.JanusGraphClient; import org.openecomp.sdc.be.dao.janusgraph.JanusGraphGenericDao; import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus; import org.openecomp.sdc.be.dao.jsongraph.GraphVertex; -import org.openecomp.sdc.be.dao.janusgraph.HealingJanusGraphDao; import org.openecomp.sdc.be.dao.jsongraph.types.EdgeLabelEnum; import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum; import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum; @@ -51,70 +68,62 @@ import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; import org.openecomp.sdc.be.model.operations.impl.util.OperationTestsUtil; import org.openecomp.sdc.be.resources.data.category.CategoryData; import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.*; - -@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:application-context-test.xml") public class ElementOperationTest extends ModelTestBase { - @javax.annotation.Resource(name = "element-operation") + @InjectMocks private ElementOperation elementOperation; - @javax.annotation.Resource(name = "janusgraph-generic-dao") + @Mock private JanusGraphGenericDao janusGraphDao; private static String CATEGORY = "category"; private static String SUBCATEGORY = "subcategory"; - @BeforeClass + @BeforeAll public static void setupBeforeClass() { ModelTestBase.init(); } + @BeforeEach + void beforeEachInit() { + MockitoAnnotations.openMocks(this); + } + @Test public void testGetArtifactsTypes() { final List expectedArtifactConfigurationList = new ArrayList<>(); - final ArtifactConfiguration artifactConfiguration1 = new ArtifactConfiguration(); - artifactConfiguration1.setType("type1"); - expectedArtifactConfigurationList.add(artifactConfiguration1); - final ArtifactConfiguration artifactConfiguration2 = new ArtifactConfiguration(); - artifactConfiguration2.setType("type2"); - expectedArtifactConfigurationList.add(artifactConfiguration2); - final ArtifactConfiguration artifactConfiguration3 = new ArtifactConfiguration(); - artifactConfiguration3.setType("type3"); - expectedArtifactConfigurationList.add(artifactConfiguration3); - configurationManager.getConfiguration().setArtifacts(expectedArtifactConfigurationList); + final ArtifactConfiguration artifactConfiguration1 = new ArtifactConfiguration(); + artifactConfiguration1.setType("type1"); + expectedArtifactConfigurationList.add(artifactConfiguration1); + final ArtifactConfiguration artifactConfiguration2 = new ArtifactConfiguration(); + artifactConfiguration2.setType("type2"); + expectedArtifactConfigurationList.add(artifactConfiguration2); + final ArtifactConfiguration artifactConfiguration3 = new ArtifactConfiguration(); + artifactConfiguration3.setType("type3"); + expectedArtifactConfigurationList.add(artifactConfiguration3); + configurationManager.getConfiguration().setArtifacts(expectedArtifactConfigurationList); List actualArtifactTypes = elementOperation.getAllArtifactTypes(); - assertNotNull(actualArtifactTypes); + assertNotNull(actualArtifactTypes); assertEquals(expectedArtifactConfigurationList.size(), actualArtifactTypes.size()); - boolean allMatch = actualArtifactTypes.stream().allMatch(artifactType -> - expectedArtifactConfigurationList.stream() - .anyMatch(artifactConfiguration -> artifactConfiguration.getType().equals(artifactType.getName())) - ); - assertTrue(allMatch); + boolean allMatch = actualArtifactTypes.stream().allMatch(artifactType -> + expectedArtifactConfigurationList.stream() + .anyMatch(artifactConfiguration -> artifactConfiguration.getType().equals(artifactType.getName())) + ); + assertTrue(allMatch); expectedArtifactConfigurationList.remove(0); actualArtifactTypes = elementOperation.getAllArtifactTypes(); - assertNotNull(actualArtifactTypes); + assertNotNull(actualArtifactTypes); assertEquals(expectedArtifactConfigurationList.size(), actualArtifactTypes.size()); - allMatch = actualArtifactTypes.stream().allMatch(artifactType -> - expectedArtifactConfigurationList.stream() - .anyMatch(artifactConfiguration -> artifactConfiguration.getType().equals(artifactType.getName())) - ); - assertTrue(allMatch); + allMatch = actualArtifactTypes.stream().allMatch(artifactType -> + expectedArtifactConfigurationList.stream() + .anyMatch(artifactConfiguration -> artifactConfiguration.getType().equals(artifactType.getName())) + ); + assertTrue(allMatch); } // @Test @@ -133,350 +142,318 @@ public class ElementOperationTest extends ModelTestBase { assertTrue(res.isLeft()); categoryDefinition = (CategoryDefinition) res.left().value(); assertEquals(CATEGORY, categoryDefinition.getName()); - } - - private ElementOperation createTestSubject() { - return new ElementOperation(new JanusGraphGenericDao(new JanusGraphClient()), new HealingJanusGraphDao(new HealingPipelineDao(), new JanusGraphClient())); - } - - - @Test - public void testGetAllServiceCategories() throws Exception { - ElementOperation testSubject; - Either, ActionStatus> result; - - // default test - testSubject = createTestSubject(); - result = testSubject.getAllServiceCategories(); - } - - - @Test - public void testGetAllResourceCategories() throws Exception { - ElementOperation testSubject; - Either, ActionStatus> result; - - // default test - testSubject = createTestSubject(); - result = testSubject.getAllResourceCategories(); - } - - - @Test - public void testGetAllProductCategories() throws Exception { - ElementOperation testSubject; - Either, ActionStatus> result; - - // default test - testSubject = createTestSubject(); - result = testSubject.getAllProductCategories(); - } - - - @Test - public void testCreateCategory() throws Exception { - ElementOperation testSubject; - CategoryDefinition category = new CategoryDefinition(); - NodeTypeEnum nodeType = NodeTypeEnum.AdditionalInfoParameters; - Either result; - - // default test - testSubject = createTestSubject(); - result = testSubject.createCategory(category, nodeType); - } - - - @Test - public void testCreateCategory_1() throws Exception { - ElementOperation testSubject; - CategoryDefinition category = new CategoryDefinition(); - NodeTypeEnum nodeType = NodeTypeEnum.ArtifactRef; - boolean inTransaction = false; - Either result; - - // default test - testSubject = createTestSubject(); - result = testSubject.createCategory(category, nodeType, inTransaction); - } - - - @Test - public void testCreateSubCategory() throws Exception { - ElementOperation testSubject; - String categoryId = ""; - SubCategoryDefinition subCategory = null; - NodeTypeEnum nodeType = null; - Either result; - - // default test - testSubject = createTestSubject(); - result = testSubject.createSubCategory(categoryId, subCategory, nodeType); - } - - - @Test - public void testCreateSubCategory_1() throws Exception { - ElementOperation testSubject; - String categoryId = ""; - SubCategoryDefinition subCategory = null; - NodeTypeEnum nodeType = null; - boolean inTransaction = false; - Either result; - - // default test - testSubject = createTestSubject(); - result = testSubject.createSubCategory(categoryId, subCategory, nodeType, inTransaction); - } - - - @Test - public void testCreateGrouping() throws Exception { - ElementOperation testSubject; - String subCategoryId = ""; - GroupingDefinition grouping = null; - NodeTypeEnum nodeType = null; - Either result; - - // default test - testSubject = createTestSubject(); - result = testSubject.createGrouping(subCategoryId, grouping, nodeType); - } - - - @Test - public void testGetAllCategories() throws Exception { - ElementOperation testSubject; - NodeTypeEnum nodeType = NodeTypeEnum.Capability; - boolean inTransaction = false; - Either, ActionStatus> result; - - // default test - testSubject = createTestSubject(); - result = testSubject.getAllCategories(nodeType, inTransaction); - } - - - - - - - - - - @Test - public void testGetCategory() throws Exception { - ElementOperation testSubject; - NodeTypeEnum nodeType = NodeTypeEnum.CapabilityType; - String categoryId = ""; - Either result; - - // default test - testSubject = createTestSubject(); - result = testSubject.getCategory(nodeType, categoryId); - } - - - @Test - public void testGetSubCategory() throws Exception { - ElementOperation testSubject; - NodeTypeEnum nodeType = NodeTypeEnum.Group; - String subCategoryId = ""; - Either result; - - // default test - testSubject = createTestSubject(); - result = testSubject.getSubCategory(nodeType, subCategoryId); - } - - - @Test - public void testDeleteCategory() throws Exception { - ElementOperation testSubject; - NodeTypeEnum nodeType = NodeTypeEnum.getByName("resource"); - String categoryId = ""; - Either result; - - // default test - testSubject = createTestSubject(); - result = testSubject.deleteCategory(nodeType, categoryId); - } - - - @Test - public void testDeleteSubCategory() throws Exception { - ElementOperation testSubject; - NodeTypeEnum nodeType = NodeTypeEnum.Attribute; - String subCategoryId = ""; - Either result; - - // default test - testSubject = createTestSubject(); - result = testSubject.deleteSubCategory(nodeType, subCategoryId); - } - - - @Test - public void testDeleteGrouping() throws Exception { - ElementOperation testSubject; - NodeTypeEnum nodeType = NodeTypeEnum.DataType; - String groupingId = ""; - Either result; - - // default test - testSubject = createTestSubject(); - result = testSubject.deleteGrouping(nodeType, groupingId); - } - - - @Test - public void testIsCategoryUniqueForType() throws Exception { - ElementOperation testSubject; - NodeTypeEnum nodeType = null; - String normalizedName = ""; - Either result; - - // default test - testSubject = createTestSubject(); - result = testSubject.isCategoryUniqueForType(nodeType, normalizedName); - } - - - @Test - public void testIsSubCategoryUniqueForCategory() throws Exception { - ElementOperation testSubject; - NodeTypeEnum nodeType = null; - String subCategoryNormName = ""; - String parentCategoryId = ""; - Either result; - - // default test - testSubject = createTestSubject(); - result = testSubject.isSubCategoryUniqueForCategory(nodeType, subCategoryNormName, parentCategoryId); - } - - - @Test - public void testIsGroupingUniqueForSubCategory() throws Exception { - ElementOperation testSubject; - NodeTypeEnum nodeType = null; - String groupingNormName = ""; - String parentSubCategoryId = ""; - Either result; - - // default test - testSubject = createTestSubject(); - result = testSubject.isGroupingUniqueForSubCategory(nodeType, groupingNormName, parentSubCategoryId); - } - - - @Test - public void testGetSubCategoryUniqueForType() throws Exception { - ElementOperation testSubject; - NodeTypeEnum nodeType = null; - String normalizedName = ""; - Either result; - - // default test - testSubject = createTestSubject(); - result = testSubject.getSubCategoryUniqueForType(nodeType, normalizedName); - } - - - @Test - public void testGetGroupingUniqueForType() throws Exception { - ElementOperation testSubject; - NodeTypeEnum nodeType = null; - String groupingNormalizedName = ""; - Either result; - - // default test - testSubject = createTestSubject(); - result = testSubject.getGroupingUniqueForType(nodeType, groupingNormalizedName); - } - - - @Test - public void testGetAllTags() throws Exception { - ElementOperation testSubject; - Either, ActionStatus> result; - - // default test - testSubject = createTestSubject(); - result = testSubject.getAllTags(); - } - - - @Test - public void testGetCategoryData() throws Exception { - ElementOperation testSubject; - String name = ""; - NodeTypeEnum type = NodeTypeEnum.DataType; - Class clazz = null; - Either result; - - // test 1 - testSubject = createTestSubject(); - name = null; - result = testSubject.getCategoryData(name, type, null); - - // test 2 - testSubject = createTestSubject(); - name = ""; - result = testSubject.getCategoryData(name, type, null); - } - - - - - - @Test - public void testGetAllPropertyScopes() throws Exception { - ElementOperation testSubject; - Either, ActionStatus> result; - - // default test - testSubject = createTestSubject(); - result = testSubject.getAllPropertyScopes(); - } - - @Test - public void testGetResourceTypesMap() throws Exception { - ElementOperation testSubject; - Either, ActionStatus> result; - - // default test - testSubject = createTestSubject(); - result = testSubject.getResourceTypesMap(); - } - - @Test - public void testGetNewCategoryData() throws Exception { - ElementOperation testSubject; - String name = ""; - NodeTypeEnum type = NodeTypeEnum.HeatParameter; - Class clazz = null; - Either result; - - // test 1 - testSubject = createTestSubject(); - name = null; - result = testSubject.getNewCategoryData(name, type, null); - - // test 2 - testSubject = createTestSubject(); - name = ""; - result = testSubject.getNewCategoryData(name, type, null); } - + + private ElementOperation createTestSubject() { + return new ElementOperation(new JanusGraphGenericDao(new JanusGraphClient()), + new HealingJanusGraphDao(new HealingPipelineDao(), new JanusGraphClient())); + } + + @Test + public void testGetAllServiceCategories() throws Exception { + ElementOperation testSubject; + Either, ActionStatus> result; + + // default test + testSubject = createTestSubject(); + result = testSubject.getAllServiceCategories(); + } + + @Test + public void testGetAllResourceCategories() throws Exception { + ElementOperation testSubject; + Either, ActionStatus> result; + + // default test + testSubject = createTestSubject(); + result = testSubject.getAllResourceCategories(); + } + + @Test + public void testGetAllProductCategories() throws Exception { + ElementOperation testSubject; + Either, ActionStatus> result; + + // default test + testSubject = createTestSubject(); + result = testSubject.getAllProductCategories(); + } + + @Test + public void testCreateCategory() throws Exception { + ElementOperation testSubject; + CategoryDefinition category = new CategoryDefinition(); + NodeTypeEnum nodeType = NodeTypeEnum.AdditionalInfoParameters; + Either result; + + // default test + testSubject = createTestSubject(); + result = testSubject.createCategory(category, nodeType); + } + + @Test + public void testCreateCategory_1() throws Exception { + ElementOperation testSubject; + CategoryDefinition category = new CategoryDefinition(); + NodeTypeEnum nodeType = NodeTypeEnum.ArtifactRef; + boolean inTransaction = false; + Either result; + + // default test + testSubject = createTestSubject(); + result = testSubject.createCategory(category, nodeType, inTransaction); + } + + @Test + public void testCreateSubCategory() throws Exception { + ElementOperation testSubject; + String categoryId = ""; + SubCategoryDefinition subCategory = null; + NodeTypeEnum nodeType = null; + Either result; + + // default test + testSubject = createTestSubject(); + result = testSubject.createSubCategory(categoryId, subCategory, nodeType); + } + + @Test + public void testCreateSubCategory_1() throws Exception { + ElementOperation testSubject; + String categoryId = ""; + SubCategoryDefinition subCategory = null; + NodeTypeEnum nodeType = null; + boolean inTransaction = false; + Either result; + + // default test + testSubject = createTestSubject(); + result = testSubject.createSubCategory(categoryId, subCategory, nodeType, inTransaction); + } + + @Test + public void testCreateGrouping() throws Exception { + ElementOperation testSubject; + String subCategoryId = ""; + GroupingDefinition grouping = null; + NodeTypeEnum nodeType = null; + Either result; + + // default test + testSubject = createTestSubject(); + result = testSubject.createGrouping(subCategoryId, grouping, nodeType); + } + + @Test + public void testGetAllCategories() throws Exception { + ElementOperation testSubject; + NodeTypeEnum nodeType = NodeTypeEnum.Capability; + boolean inTransaction = false; + Either, ActionStatus> result; + + // default test + testSubject = createTestSubject(); + result = testSubject.getAllCategories(nodeType, inTransaction); + } + + @Test + public void testGetCategory() throws Exception { + ElementOperation testSubject; + NodeTypeEnum nodeType = NodeTypeEnum.CapabilityType; + String categoryId = ""; + Either result; + + // default test + testSubject = createTestSubject(); + result = testSubject.getCategory(nodeType, categoryId); + } + + @Test + public void testGetSubCategory() throws Exception { + ElementOperation testSubject; + NodeTypeEnum nodeType = NodeTypeEnum.Group; + String subCategoryId = ""; + Either result; + + // default test + testSubject = createTestSubject(); + result = testSubject.getSubCategory(nodeType, subCategoryId); + } + + @Test + public void testDeleteCategory() throws Exception { + ElementOperation testSubject; + NodeTypeEnum nodeType = NodeTypeEnum.getByName("resource"); + String categoryId = ""; + Either result; + + // default test + testSubject = createTestSubject(); + result = testSubject.deleteCategory(nodeType, categoryId); + } + + @Test + public void testDeleteSubCategory() throws Exception { + ElementOperation testSubject; + NodeTypeEnum nodeType = NodeTypeEnum.Attribute; + String subCategoryId = ""; + Either result; + + // default test + testSubject = createTestSubject(); + result = testSubject.deleteSubCategory(nodeType, subCategoryId); + } + + @Test + public void testDeleteGrouping() throws Exception { + ElementOperation testSubject; + NodeTypeEnum nodeType = NodeTypeEnum.DataType; + String groupingId = ""; + Either result; + + // default test + testSubject = createTestSubject(); + result = testSubject.deleteGrouping(nodeType, groupingId); + } + + @Test + public void testIsCategoryUniqueForType() throws Exception { + ElementOperation testSubject; + NodeTypeEnum nodeType = null; + String normalizedName = ""; + Either result; + + // default test + testSubject = createTestSubject(); + result = testSubject.isCategoryUniqueForType(nodeType, normalizedName); + } + + @Test + public void testIsSubCategoryUniqueForCategory() throws Exception { + ElementOperation testSubject; + NodeTypeEnum nodeType = null; + String subCategoryNormName = ""; + String parentCategoryId = ""; + Either result; + + // default test + testSubject = createTestSubject(); + result = testSubject.isSubCategoryUniqueForCategory(nodeType, subCategoryNormName, parentCategoryId); + } + + @Test + public void testIsGroupingUniqueForSubCategory() throws Exception { + ElementOperation testSubject; + NodeTypeEnum nodeType = null; + String groupingNormName = ""; + String parentSubCategoryId = ""; + Either result; + + // default test + testSubject = createTestSubject(); + result = testSubject.isGroupingUniqueForSubCategory(nodeType, groupingNormName, parentSubCategoryId); + } + + @Test + public void testGetSubCategoryUniqueForType() throws Exception { + ElementOperation testSubject; + NodeTypeEnum nodeType = null; + String normalizedName = ""; + Either result; + + // default test + testSubject = createTestSubject(); + result = testSubject.getSubCategoryUniqueForType(nodeType, normalizedName); + } + + @Test + public void testGetGroupingUniqueForType() throws Exception { + ElementOperation testSubject; + NodeTypeEnum nodeType = null; + String groupingNormalizedName = ""; + Either result; + + // default test + testSubject = createTestSubject(); + result = testSubject.getGroupingUniqueForType(nodeType, groupingNormalizedName); + } + + @Test + public void testGetAllTags() throws Exception { + ElementOperation testSubject; + Either, ActionStatus> result; + + // default test + testSubject = createTestSubject(); + result = testSubject.getAllTags(); + } + + @Test + public void testGetCategoryData() throws Exception { + ElementOperation testSubject; + String name = ""; + NodeTypeEnum type = NodeTypeEnum.DataType; + Class clazz = null; + Either result; + + // test 1 + testSubject = createTestSubject(); + name = null; + result = testSubject.getCategoryData(name, type, null); + + // test 2 + testSubject = createTestSubject(); + name = ""; + result = testSubject.getCategoryData(name, type, null); + } + + @Test + public void testGetAllPropertyScopes() throws Exception { + ElementOperation testSubject; + Either, ActionStatus> result; + + // default test + testSubject = createTestSubject(); + result = testSubject.getAllPropertyScopes(); + } + + @Test + public void testGetResourceTypesMap() throws Exception { + ElementOperation testSubject; + Either, ActionStatus> result; + + // default test + testSubject = createTestSubject(); + result = testSubject.getResourceTypesMap(); + } + + @Test + public void testGetNewCategoryData() throws Exception { + ElementOperation testSubject; + String name = ""; + NodeTypeEnum type = NodeTypeEnum.HeatParameter; + Class clazz = null; + Either result; + + // test 1 + testSubject = createTestSubject(); + name = null; + result = testSubject.getNewCategoryData(name, type, null); + + // test 2 + testSubject = createTestSubject(); + name = ""; + result = testSubject.getNewCategoryData(name, type, null); + } + @Test public void testBaseTypes_serviceSpecific() { - Map preExistingServiceNodeTypes = configurationManager.getConfiguration().getServiceNodeTypes(); - Map preExistingGenericNodeTypes = - configurationManager.getConfiguration().getGenericAssetNodeTypes(); + Map> preExistingServiceNodeTypes = configurationManager.getConfiguration().getServiceNodeTypes(); + Map preExistingGenericNodeTypes = configurationManager.getConfiguration().getGenericAssetNodeTypes(); try { - Map serviceNodeTypes = new HashMap<>(); - serviceNodeTypes.put("serviceCategoryA", "org.base.type"); + Map> serviceNodeTypes = new HashMap<>(); + serviceNodeTypes.put("serviceCategoryA", List.of("org.base.type")); configurationManager.getConfiguration().setServiceNodeTypes(serviceNodeTypes); Map genericNodeTypes = new HashMap<>(); @@ -484,28 +461,27 @@ public class ElementOperationTest extends ModelTestBase { configurationManager.getConfiguration().setGenericAssetNodeTypes(genericNodeTypes); HealingJanusGraphDao healingJanusGraphDao = mock(HealingJanusGraphDao.class); - ElementOperation elementOperation = - new ElementOperation(new JanusGraphGenericDao(new JanusGraphClient()), healingJanusGraphDao); + ElementOperation elementOperation = new ElementOperation(new JanusGraphGenericDao(new JanusGraphClient()), healingJanusGraphDao); GraphVertex baseTypeVertex = mock(GraphVertex.class); when(baseTypeVertex.getMetadataProperty(GraphPropertyEnum.VERSION)).thenReturn("1.0"); when(healingJanusGraphDao.getByCriteria(eq(VertexTypeEnum.NODE_TYPE), any(), isNull(), eq(JsonParseFlagEnum.ParseAll), any())) - .thenReturn(Either.left(Collections.singletonList(baseTypeVertex))); + .thenReturn(Either.left(Collections.singletonList(baseTypeVertex))); GraphVertex derivedTypeVertex = mock(GraphVertex.class); when(derivedTypeVertex.getMetadataProperty(GraphPropertyEnum.STATE)).thenReturn(LifecycleStateEnum.CERTIFIED.name()); when(derivedTypeVertex.getMetadataProperty(GraphPropertyEnum.VERSION)).thenReturn("1.0"); - + GraphVertex derivedTypeVertexUncertified = mock(GraphVertex.class); - when(derivedTypeVertexUncertified.getMetadataProperty(GraphPropertyEnum.STATE)).thenReturn(LifecycleStateEnum.NOT_CERTIFIED_CHECKIN.name()); + when(derivedTypeVertexUncertified.getMetadataProperty(GraphPropertyEnum.STATE)).thenReturn( + LifecycleStateEnum.NOT_CERTIFIED_CHECKIN.name()); when(derivedTypeVertexUncertified.getMetadataProperty(GraphPropertyEnum.VERSION)).thenReturn("1.1"); - + when(healingJanusGraphDao.getParentVertices(baseTypeVertex, EdgeLabelEnum.DERIVED_FROM, - JsonParseFlagEnum.ParseAll)).thenReturn(Either.left(Collections.singletonList(derivedTypeVertex))); + JsonParseFlagEnum.ParseAll)).thenReturn(Either.left(Collections.singletonList(derivedTypeVertex))); when(healingJanusGraphDao.getParentVertices(derivedTypeVertex, EdgeLabelEnum.DERIVED_FROM, - JsonParseFlagEnum.ParseAll)).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)); - when(derivedTypeVertex.getMetadataProperty(GraphPropertyEnum.TOSCA_RESOURCE_NAME)) - .thenReturn("org.parent.type"); + JsonParseFlagEnum.ParseAll)).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)); + when(derivedTypeVertex.getMetadataProperty(GraphPropertyEnum.TOSCA_RESOURCE_NAME)).thenReturn("org.parent.type"); List baseTypes = elementOperation.getBaseTypes("serviceCategoryA", null); @@ -519,12 +495,12 @@ public class ElementOperationTest extends ModelTestBase { configurationManager.getConfiguration().setGenericAssetNodeTypes(preExistingGenericNodeTypes); } } - + @Test public void testBaseTypes_default() { - Map preExistingServiceNodeTypes = configurationManager.getConfiguration().getServiceNodeTypes(); + Map> preExistingServiceNodeTypes = configurationManager.getConfiguration().getServiceNodeTypes(); Map preExistingGenericNodeTypes = - configurationManager.getConfiguration().getGenericAssetNodeTypes(); + configurationManager.getConfiguration().getGenericAssetNodeTypes(); try { Map genericNodeTypes = new HashMap<>(); @@ -533,16 +509,15 @@ public class ElementOperationTest extends ModelTestBase { configurationManager.getConfiguration().setServiceNodeTypes(null); HealingJanusGraphDao healingJanusGraphDao = mock(HealingJanusGraphDao.class); - ElementOperation elementOperation = - new ElementOperation(new JanusGraphGenericDao(new JanusGraphClient()), healingJanusGraphDao); + final var elementOperation = new ElementOperation(new JanusGraphGenericDao(new JanusGraphClient()), healingJanusGraphDao); GraphVertex baseTypeVertex = mock(GraphVertex.class); when(baseTypeVertex.getMetadataProperty(GraphPropertyEnum.VERSION)).thenReturn("1.0"); when(healingJanusGraphDao.getByCriteria(eq(VertexTypeEnum.NODE_TYPE), any(), isNull(), eq(JsonParseFlagEnum.ParseAll), any())) - .thenReturn(Either.left(Collections.singletonList(baseTypeVertex))); + .thenReturn(Either.left(Collections.singletonList(baseTypeVertex))); when(healingJanusGraphDao.getParentVertices(baseTypeVertex, EdgeLabelEnum.DERIVED_FROM, - JsonParseFlagEnum.ParseAll)).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)); + JsonParseFlagEnum.ParseAll)).thenReturn(Either.right(JanusGraphOperationStatus.NOT_FOUND)); List baseTypes = elementOperation.getBaseTypes("serviceCategoryA", null); diff --git a/catalog-model/src/test/resources/config/configuration.yaml b/catalog-model/src/test/resources/config/configuration.yaml index 95695b7ce8..02b9af9c1b 100644 --- a/catalog-model/src/test/resources/config/configuration.yaml +++ b/catalog-model/src/test/resources/config/configuration.yaml @@ -394,9 +394,12 @@ genericAssetNodeTypes: Service: org.openecomp.resource.abstract.nodes.service serviceNodeTypes: - CategoryA: org.openecomp.resource.abstract.nodes.A - CategoryB: org.openecomp.resource.abstract.nodes.B - CategoryC: org.openecomp.resource.abstract.nodes.C + CategoryA: + - org.openecomp.resource.abstract.nodes.A + CategoryB: + - org.openecomp.resource.abstract.nodes.B + CategoryC: + - org.openecomp.resource.abstract.nodes.C workloadContext: Production environmentContext: diff --git a/common-app-api/src/main/java/org/openecomp/sdc/be/config/Configuration.java b/common-app-api/src/main/java/org/openecomp/sdc/be/config/Configuration.java index 9b3772f4fc..29ef6c4cae 100644 --- a/common-app-api/src/main/java/org/openecomp/sdc/be/config/Configuration.java +++ b/common-app-api/src/main/java/org/openecomp/sdc/be/config/Configuration.java @@ -119,7 +119,7 @@ public class Configuration extends BasicConfiguration { private Boolean consumerBusinessLogic; private Map vfModuleProperties; private Map genericAssetNodeTypes; - private Map serviceNodeTypes; + private Map> serviceNodeTypes; private Map> resourceNodeTypes; private String appVersion; private String artifactGeneratorConfig; -- cgit 1.2.3-korg