add junit coverage and sonar fix 23/97323/1
authorLukasz Muszkieta <lukasz.muszkieta@nokia.com>
Fri, 18 Oct 2019 16:23:40 +0000 (18:23 +0200)
committerLukasz Muszkieta <lukasz.muszkieta@nokia.com>
Fri, 18 Oct 2019 16:31:08 +0000 (18:31 +0200)
Change-Id: I80632046b259cd75b0ab57e2c7bf673c3d021bcd
Issue-ID: SO-1576
Signed-off-by: Lukasz Muszkieta <lukasz.muszkieta@nokia.com>
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/exceptions/VnfNotFoundException.java [new file with mode: 0644]
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnf.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/ConfigAssignVnfTest.java

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 (file)
index 0000000..e1c2e01
--- /dev/null
@@ -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);
+    };
+}
index e73a504..3a69d27 100644 (file)
 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);
         }
     }
 }
index bbc2070..2d76494 100644 (file)
 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;
     }