diff options
Diffstat (limited to 'bpmn/so-bpmn-tasks')
3 files changed, 66 insertions, 22 deletions
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/exceptions/VnfNotFoundException.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/exceptions/VnfNotFoundException.java new file mode 100644 index 0000000000..e1c2e01832 --- /dev/null +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/exceptions/VnfNotFoundException.java @@ -0,0 +1,7 @@ +package org.onap.so.bpmn.infrastructure.flowspecific.exceptions; + +public class VnfNotFoundException extends Exception { + public VnfNotFoundException(String modelCustomizationUuidOfSearchedVnf) { + super("Can not find vnf for model customization uuid: " + modelCustomizationUuidOfSearchedVnf); + }; +} diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnf.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnf.java index e73a504291..3a69d27f32 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnf.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnf.java @@ -22,11 +22,13 @@ package org.onap.so.bpmn.infrastructure.flowspecific.tasks; import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.IOException; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.UUID; import org.onap.so.bpmn.common.BuildingBlockExecution; +import org.onap.so.bpmn.infrastructure.flowspecific.exceptions.VnfNotFoundException; import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf; import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance; import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock; @@ -127,12 +129,12 @@ public class ConfigAssignVnf { return getServiceObjectFromServiceMap(serviceMap); } - private Service getServiceObjectFromServiceMap(Map<String, Object> serviceMap) throws Exception { + private Service getServiceObjectFromServiceMap(Map<String, Object> serviceMap) throws IOException { ObjectMapper objectMapper = new ObjectMapper(); String serviceFromJson = objectMapper.writeValueAsString(serviceMap.get("service")); try { return objectMapper.readValue(serviceFromJson, Service.class); - } catch (Exception e) { + } catch (IOException e) { logger.error(String.format( "An exception occurred while converting json object to Service object. The json is: %s", serviceFromJson), e); @@ -141,15 +143,14 @@ public class ConfigAssignVnf { } private List<Map<String, String>> getInstanceParamForVnf(Service service, String genericVnfModelCustomizationUuid) - throws Exception { + throws VnfNotFoundException { Optional<Vnfs> foundedVnf = service.getResources().getVnfs().stream() .filter(vnfs -> vnfs.getModelInfo().getModelCustomizationId().equals(genericVnfModelCustomizationUuid)) .findFirst(); if (foundedVnf.isPresent()) { return foundedVnf.get().getInstanceParams(); } else { - throw new Exception(String.format("Can not find vnf for genericVnfModelCustomizationUuid: %s", - genericVnfModelCustomizationUuid)); + throw new VnfNotFoundException(genericVnfModelCustomizationUuid); } } } diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnfTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnfTest.java index bbc20706a6..2d7649438e 100644 --- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnfTest.java +++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnfTest.java @@ -22,11 +22,16 @@ package org.onap.so.bpmn.infrastructure.flowspecific.tasks; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.IOException; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -36,6 +41,7 @@ import org.junit.Before; import org.junit.Test; import org.onap.so.bpmn.common.BuildingBlockExecution; import org.onap.so.bpmn.common.DelegateExecutionImpl; +import org.onap.so.bpmn.infrastructure.flowspecific.exceptions.VnfNotFoundException; import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf; import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance; import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock; @@ -74,33 +80,63 @@ public class ConfigAssignVnfTest { private static final String INSTANCE_PARAM5_NAME = "paramName5"; private static final String INSTANCE_PARAM5_VALUE = "paramValue5"; - private ConfigAssignVnf testedObject; - private BuildingBlockExecution buildingBlockExecution; private ExtractPojosForBB extractPojosForBB; + private ExceptionBuilder exceptionBuilderMock; @Before public void setup() { - buildingBlockExecution = createBuildingBlockExecution(); extractPojosForBB = mock(ExtractPojosForBB.class); - testedObject = new ConfigAssignVnf(extractPojosForBB, new ExceptionBuilder()); + exceptionBuilderMock = mock(ExceptionBuilder.class); + testedObject = new ConfigAssignVnf(extractPojosForBB, exceptionBuilderMock); } @Test public void prepareAbstractCDSPropertiesBean_success() throws Exception { // given + BuildingBlockExecution buildingBlockExecution = createBuildingBlockExecution(createService(createVnfList())); + prepareExtractPojosForBB(buildingBlockExecution); + // when + testedObject.preProcessAbstractCDSProcessing(buildingBlockExecution); + // then + verifyConfigAssignPropertiesJsonContent(buildingBlockExecution); + } + + @Test + public void invalidServiceJsonContentWhenPrepareCDSBean_flowExIsThrown() throws Exception { + // given + BuildingBlockExecution buildingBlockExecution = createBuildingBlockExecution("{invalidJsonContent}"); + prepareExtractPojosForBB(buildingBlockExecution); + // when + testedObject.preProcessAbstractCDSProcessing(buildingBlockExecution); + // then + verify(exceptionBuilderMock).buildAndThrowWorkflowException(eq(buildingBlockExecution), eq(7000), + any(IOException.class)); + } + + @Test + public void vnfIsNotFoundWhenPrepareCDSBean_flowExIsThrown() throws Exception { + // given + BuildingBlockExecution buildingBlockExecution = + createBuildingBlockExecution(createService(Collections.emptyList())); + prepareExtractPojosForBB(buildingBlockExecution); + // when + testedObject.preProcessAbstractCDSProcessing(buildingBlockExecution); + // then + verify(exceptionBuilderMock).buildAndThrowWorkflowException(eq(buildingBlockExecution), eq(7000), + any(VnfNotFoundException.class)); + } + + private void prepareExtractPojosForBB(BuildingBlockExecution buildingBlockExecution) throws Exception { when(extractPojosForBB.extractByKey(buildingBlockExecution, ResourceKey.GENERIC_VNF_ID)) .thenReturn(createGenericVnf()); when(extractPojosForBB.extractByKey(buildingBlockExecution, ResourceKey.SERVICE_INSTANCE_ID)) .thenReturn(createServiceInstance()); - // when - testedObject.preProcessAbstractCDSProcessing(buildingBlockExecution); - // then - verifyConfigAssignPropertiesJsonContent(); } - private void verifyConfigAssignPropertiesJsonContent() throws Exception { + private void verifyConfigAssignPropertiesJsonContent(BuildingBlockExecution buildingBlockExecution) + throws Exception { AbstractCDSPropertiesBean abstractCDSPropertiesBean = buildingBlockExecution.getVariable("executionObject"); String payload = abstractCDSPropertiesBean.getRequestObject(); ObjectMapper mapper = new ObjectMapper(); @@ -121,9 +157,9 @@ public class ConfigAssignVnfTest { assertThat(configAssignPropertiesNode.get(INSTANCE_PARAM3_NAME).asText()).isEqualTo(INSTANCE_PARAM3_VALUE); } - private BuildingBlockExecution createBuildingBlockExecution() { + private BuildingBlockExecution createBuildingBlockExecution(Object serviceJson) { DelegateExecution execution = new DelegateExecutionFake(); - execution.setVariable(GENERAL_BLOCK_EXECUTION_MAP_KEY, createGeneralBuildingBlock()); + execution.setVariable(GENERAL_BLOCK_EXECUTION_MAP_KEY, createGeneralBuildingBlock(serviceJson)); return new DelegateExecutionImpl(execution); } @@ -148,28 +184,28 @@ public class ConfigAssignVnfTest { return genericVnf; } - private GeneralBuildingBlock createGeneralBuildingBlock() { + private GeneralBuildingBlock createGeneralBuildingBlock(Object serviceJson) { GeneralBuildingBlock generalBuildingBlock = new GeneralBuildingBlock(); RequestContext requestContext = new RequestContext(); RequestParameters requestParameters = new RequestParameters(); - requestParameters.setUserParams(createRequestUserParams()); + requestParameters.setUserParams(createRequestUserParams(serviceJson)); requestContext.setRequestParameters(requestParameters); generalBuildingBlock.setRequestContext(requestContext); return generalBuildingBlock; } - private List<Map<String, Object>> createRequestUserParams() { + private List<Map<String, Object>> createRequestUserParams(Object serviceJson) { List<Map<String, Object>> userParams = new ArrayList<>(); Map<String, Object> userParamMap = new HashMap<>(); - userParamMap.put("service", createService()); + userParamMap.put("service", serviceJson); userParams.add(userParamMap); return userParams; } - private Service createService() { + private Service createService(List<Vnfs> vnfList) { Service service = new Service(); Resources resources = new Resources(); - resources.setVnfs(createVnfList()); + resources.setVnfs(vnfList); service.setResources(resources); return service; } |