Align AssignPnfBB with Service Macro Create 20/100120/6
authorRemigiusz Janeczek <remigiusz.janeczek@nokia.com>
Thu, 9 Jan 2020 11:23:18 +0000 (12:23 +0100)
committerRemigiusz Janeczek <remigiusz.janeczek@nokia.com>
Fri, 10 Jan 2020 15:01:26 +0000 (16:01 +0100)
-move and align logic of BB delegates with tests
-remove unnecessary classes
-add tests cases for Pnfs in ExtractPojosForBBTests

Issue-ID: SO-2568
Signed-off-by: Remigiusz Janeczek <remigiusz.janeczek@nokia.com>
Change-Id: Ic48e2c1c6ab852c33837091da3e7916b71c26466

bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/ExtractPojosForBBTest.java
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AssignPnfBB.bpmn
bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/AssignPnfInputsCheckerDelegate.java [deleted file]
bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CheckAaiForPnfCorrelationId.java [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CreatePnfEntryInAai.java [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/tasks/PnfBaseTasks.java [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/AssignPnfInputsCheckerDelegateTest.java [deleted file]
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PnfInputCheckersTestUtils.java [deleted file]
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CheckAaiForPnfCorrelationIdTest.java [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CreatePnfEntryInAaiTest.java [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/tasks/PnfTasksUtils.java [new file with mode: 0644]

index 7bd2bee..dbd5000 100644 (file)
@@ -115,6 +115,12 @@ public class ExtractPojosForBBTest extends BaseTest {
         instanceGroupsPend.add(instanceGroupPend);
         lookupKeyMap.put(ResourceKey.INSTANCE_GROUP_ID, instanceGroupPend.getId());
 
+        List<Pnf> pnfsPend = serviceInstancePend.getPnfs();
+        Pnf pnfPend = new Pnf();
+        pnfPend.setPnfId("abc");
+        pnfsPend.add(pnfPend);
+        lookupKeyMap.put(ResourceKey.PNF, pnfPend.getPnfId());
+
         customer.getServiceSubscription().getServiceInstances().add(serviceInstancePend);
         gBBInput.setCustomer(customer);
 
@@ -143,89 +149,49 @@ public class ExtractPojosForBBTest extends BaseTest {
 
         InstanceGroup extractInstanceGroupPend = extractPojos.extractByKey(execution, ResourceKey.INSTANCE_GROUP_ID);
         assertEquals(instanceGroupPend.getId(), extractInstanceGroupPend.getId());
+
+        Pnf extractPnfPend = extractPojos.extractByKey(execution, ResourceKey.PNF);
+        assertEquals(extractPnfPend.getPnfId(), pnfPend.getPnfId());
     }
 
     @Test
     public void siError() throws BBObjectNotFoundException {
-        expectedException.expect(BBObjectNotFoundException.class);
-
-        Customer customer = new Customer();
-        customer.setServiceSubscription(new ServiceSubscription());
-        ServiceInstance serviceInstance = new ServiceInstance();
-        customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
-        gBBInput.setCustomer(customer);
-
-        extractPojos.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
+        assertThrowsBBObjectNotFoundForResource_WhenServiceEmpty(ResourceKey.SERVICE_INSTANCE_ID);
     }
 
     @Test
     public void vnfError() throws BBObjectNotFoundException {
-        expectedException.expect(BBObjectNotFoundException.class);
-
-        Customer customer = new Customer();
-        customer.setServiceSubscription(new ServiceSubscription());
-        ServiceInstance serviceInstance = new ServiceInstance();
-        customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
-        gBBInput.setCustomer(customer);
-        extractPojos.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
+        assertThrowsBBObjectNotFoundForResource_WhenServiceEmpty(ResourceKey.GENERIC_VNF_ID);
     }
 
     @Test
     public void vfModuleError() throws BBObjectNotFoundException {
-        expectedException.expect(BBObjectNotFoundException.class);
-
-        Customer customer = new Customer();
-        customer.setServiceSubscription(new ServiceSubscription());
-        ServiceInstance serviceInstance = new ServiceInstance();
-        customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
-        gBBInput.setCustomer(customer);
-        extractPojos.extractByKey(execution, ResourceKey.VF_MODULE_ID);
+        assertThrowsBBObjectNotFoundForResource_WhenServiceEmpty(ResourceKey.VF_MODULE_ID);
     }
 
     @Test
     public void configurationError() throws BBObjectNotFoundException {
-        expectedException.expect(BBObjectNotFoundException.class);
-
-        Customer customer = new Customer();
-        customer.setServiceSubscription(new ServiceSubscription());
-        ServiceInstance serviceInstance = new ServiceInstance();
-        customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
-        gBBInput.setCustomer(customer);
-        extractPojos.extractByKey(execution, ResourceKey.CONFIGURATION_ID);
+        assertThrowsBBObjectNotFoundForResource_WhenServiceEmpty(ResourceKey.CONFIGURATION_ID);
     }
 
     @Test
     public void allotedError() throws BBObjectNotFoundException {
-        expectedException.expect(BBObjectNotFoundException.class);
-
-        Customer customer = new Customer();
-        customer.setServiceSubscription(new ServiceSubscription());
-        ServiceInstance serviceInstance = new ServiceInstance();
-        customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
-        gBBInput.setCustomer(customer);
-        extractPojos.extractByKey(execution, ResourceKey.ALLOTTED_RESOURCE_ID);
+        assertThrowsBBObjectNotFoundForResource_WhenServiceEmpty(ResourceKey.ALLOTTED_RESOURCE_ID);
     }
 
     @Test
     public void vpnBindingError() throws BBObjectNotFoundException {
-        expectedException.expect(BBObjectNotFoundException.class);
-        Customer customer = new Customer();
-        customer.setServiceSubscription(new ServiceSubscription());
-        ServiceInstance serviceInstance = new ServiceInstance();
-        customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
-        gBBInput.setCustomer(customer);
-        extractPojos.extractByKey(execution, ResourceKey.VPN_ID);
+        assertThrowsBBObjectNotFoundForResource_WhenServiceEmpty(ResourceKey.VPN_ID);
     }
 
     @Test
     public void vpnBondingLinkError() throws BBObjectNotFoundException {
-        expectedException.expect(BBObjectNotFoundException.class);
-        Customer customer = new Customer();
-        customer.setServiceSubscription(new ServiceSubscription());
-        ServiceInstance serviceInstance = new ServiceInstance();
-        customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
-        gBBInput.setCustomer(customer);
-        extractPojos.extractByKey(execution, ResourceKey.VPN_BONDING_LINK_ID);
+        assertThrowsBBObjectNotFoundForResource_WhenServiceEmpty(ResourceKey.VPN_BONDING_LINK_ID);
+    }
+
+    @Test
+    public void pnfError() throws BBObjectNotFoundException {
+        assertThrowsBBObjectNotFoundForResource_WhenServiceEmpty(ResourceKey.PNF);
     }
 
     @Test
@@ -239,4 +205,19 @@ public class ExtractPojosForBBTest extends BaseTest {
         ServiceInstance extractServPend = extractPojos.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
         assertEquals(extractServPend.getServiceInstanceId(), serviceInstancePend.getServiceInstanceId());
     }
+
+    private void assertThrowsBBObjectNotFoundForResource_WhenServiceEmpty(ResourceKey key)
+            throws BBObjectNotFoundException {
+        expectedException.expect(BBObjectNotFoundException.class);
+        setCustomerWithEmptyServiceInstance();
+        extractPojos.extractByKey(execution, key);
+    }
+
+    private void setCustomerWithEmptyServiceInstance() {
+        Customer customer = new Customer();
+        customer.setServiceSubscription(new ServiceSubscription());
+        ServiceInstance serviceInstance = new ServiceInstance();
+        customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
+        gBBInput.setCustomer(customer);
+    }
 }
index f9c5d0c..930f666 100644 (file)
@@ -11,8 +11,8 @@
     <bpmn:startEvent id="AssignPnf_StartEvent">
       <bpmn:outgoing>SequenceFlow_1fu9o4x</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:serviceTask id="CheckAaiForPnfCorrelationId" name="Check AAI for pnf_correlation_id" camunda:delegateExpression="${CheckAaiForPnfCorrelationIdDelegate}">
-      <bpmn:incoming>SequenceFlow_02j05kk</bpmn:incoming>
+    <bpmn:serviceTask id="CheckAaiForPnfCorrelationId" name="Check AAI for pnf_correlation_id" camunda:expression="${CheckAaiForPnfCorrelationId.execute(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+      <bpmn:incoming>SequenceFlow_1fu9o4x</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_081rs5d</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:exclusiveGateway id="DoesAaiContainInfoAboutPnf" name="Does AAI contain info about pnf?">
@@ -20,7 +20,7 @@
       <bpmn:outgoing>SequenceFlow_0fn5kgz</bpmn:outgoing>
       <bpmn:outgoing>SequenceFlow_1ewfz8r</bpmn:outgoing>
     </bpmn:exclusiveGateway>
-    <bpmn:serviceTask id="CreatePnfEntryInAai" name="Create Pnf entry in AAI" camunda:delegateExpression="${CreatePnfEntryInAaiDelegate}">
+    <bpmn:serviceTask id="CreatePnfEntryInAai" name="Create Pnf entry in AAI" camunda:expression="${CreatePnfEntryInAai.execute(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0fn5kgz</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0l6rtzy</bpmn:outgoing>
     </bpmn:serviceTask>
       <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{aaiContainsInfoAboutPnf}</bpmn:conditionExpression>
     </bpmn:sequenceFlow>
     <bpmn:sequenceFlow id="SequenceFlow_0l6rtzy" sourceRef="CreatePnfEntryInAai" targetRef="AaiEntryExists" />
-    <bpmn:serviceTask id="CheckInputs" name="Check Inputs" camunda:delegateExpression="${AssignPnfInputsCheckerDelegate}">
-      <bpmn:incoming>SequenceFlow_1fu9o4x</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_02j05kk</bpmn:outgoing>
-    </bpmn:serviceTask>
-    <bpmn:sequenceFlow id="SequenceFlow_02j05kk" sourceRef="CheckInputs" targetRef="CheckAaiForPnfCorrelationId" />
-    <bpmn:sequenceFlow id="SequenceFlow_1fu9o4x" sourceRef="AssignPnf_StartEvent" targetRef="CheckInputs" />
+    <bpmn:sequenceFlow id="SequenceFlow_1fu9o4x" sourceRef="AssignPnf_StartEvent" targetRef="CheckAaiForPnfCorrelationId" />
     <bpmn:textAnnotation id="TextAnnotation_184cxp4">
       <bpmn:text>Inputs:
  - pnfCorrelationId - String
         <di:waypoint x="1020" y="287" />
         <di:waypoint x="1152" y="287" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ServiceTask_0tv92eb_di" bpmnElement="CheckInputs">
-        <dc:Bounds x="400" y="247" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_02j05kk_di" bpmnElement="SequenceFlow_02j05kk">
-        <di:waypoint x="500" y="287" />
-        <di:waypoint x="640" y="287" />
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1fu9o4x_di" bpmnElement="SequenceFlow_1fu9o4x">
         <di:waypoint x="255" y="287" />
-        <di:waypoint x="400" y="287" />
+        <di:waypoint x="640" y="287" />
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/AssignPnfInputsCheckerDelegate.java b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/AssignPnfInputsCheckerDelegate.java
deleted file mode 100644 (file)
index 9176948..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.onap.so.bpmn.infrastructure.pnf.delegate;
-
-import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PNF_CORRELATION_ID;
-import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PNF_UUID;
-import com.google.common.base.Strings;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.camunda.bpm.engine.delegate.JavaDelegate;
-import org.onap.so.bpmn.common.scripts.ExceptionUtil;
-import org.springframework.stereotype.Component;
-
-@Component
-public class AssignPnfInputsCheckerDelegate implements JavaDelegate {
-
-    public static final String UUID_REGEX =
-            "(?i)^[0-9a-f]{8}-[0-9a-f]{4}-[1-5]{1}[0-9a-f]{3}-[89ab]{1}[0-9a-f]{3}-[0-9a-f]{12}$";
-
-    @Override
-    public void execute(DelegateExecution execution) {
-        validatePnfCorrelationId(execution);
-        validatePnfUuid(execution);
-    }
-
-    private void validatePnfCorrelationId(DelegateExecution execution) {
-        String pnfCorrelationId = (String) execution.getVariable(PNF_CORRELATION_ID);
-        if (Strings.isNullOrEmpty(pnfCorrelationId)) {
-            new ExceptionUtil().buildAndThrowWorkflowException(execution, 9999,
-                    "pnfCorrelationId variable not defined");
-        }
-    }
-
-    private void validatePnfUuid(DelegateExecution execution) {
-        String pnfUuid = (String) execution.getVariable(PNF_UUID);
-        if (Strings.isNullOrEmpty(pnfUuid)) {
-            new ExceptionUtil().buildAndThrowWorkflowException(execution, 9999, "pnfUuid variable not defined");
-        }
-        if (!pnfUuid.matches(UUID_REGEX)) {
-            new ExceptionUtil().buildAndThrowWorkflowException(execution, 9999, "pnfUuid is not a valid UUID");
-        }
-    }
-}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CheckAaiForPnfCorrelationId.java b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CheckAaiForPnfCorrelationId.java
new file mode 100644 (file)
index 0000000..2991425
--- /dev/null
@@ -0,0 +1,45 @@
+package org.onap.so.bpmn.infrastructure.pnf.tasks;
+
+import joptsimple.internal.Strings;
+import org.onap.so.bpmn.common.BuildingBlockExecution;
+import org.onap.so.client.exception.BBObjectNotFoundException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+import java.io.IOException;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.AAI_CONTAINS_INFO_ABOUT_PNF;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PNF_CORRELATION_ID;
+
+@Component
+public class CheckAaiForPnfCorrelationId extends PnfBaseTasks {
+    private static final Logger logger = LoggerFactory.getLogger(CheckAaiForPnfCorrelationId.class);
+
+    @Override
+    public void execute(BuildingBlockExecution execution) {
+        try {
+            String pnfCorrelationId = extractPnf(execution).getPnfName();
+            checkIfPnfCorrelationIdPresent(execution, pnfCorrelationId);
+            checkIfPnfExistsInAai(execution, pnfCorrelationId);
+        } catch (BBObjectNotFoundException e) {
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, e);
+        }
+
+    }
+
+    private void checkIfPnfCorrelationIdPresent(BuildingBlockExecution execution, String pnfCorrelationId) {
+        if (Strings.isNullOrEmpty(pnfCorrelationId)) {
+            exceptionUtil.buildAndThrowWorkflowException(execution, 500, PNF_CORRELATION_ID + " is not set");
+        }
+    }
+
+    private void checkIfPnfExistsInAai(BuildingBlockExecution execution, String pnfCorrelationId) {
+        try {
+            boolean isEntry = pnfManagement.getEntryFor(pnfCorrelationId).isPresent();
+            logger.debug("AAI entry is found for pnf correlation id {}: {}", PNF_CORRELATION_ID, isEntry);
+            execution.setVariable(AAI_CONTAINS_INFO_ABOUT_PNF, isEntry);
+        } catch (IOException e) {
+            logger.error("Exception in check AAI for pnf_correlation_id execution", e);
+            exceptionUtil.buildAndThrowWorkflowException(execution, 9999, e);
+        }
+    }
+}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CreatePnfEntryInAai.java b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CreatePnfEntryInAai.java
new file mode 100644 (file)
index 0000000..6e86ad6
--- /dev/null
@@ -0,0 +1,34 @@
+package org.onap.so.bpmn.infrastructure.pnf.tasks;
+
+import org.onap.aai.domain.yang.Pnf;
+import org.onap.so.bpmn.common.BuildingBlockExecution;
+import org.onap.so.client.exception.BBObjectNotFoundException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class CreatePnfEntryInAai extends PnfBaseTasks {
+    private static final Logger logger = LoggerFactory.getLogger(CreatePnfEntryInAai.class);
+
+    @Override
+    public void execute(BuildingBlockExecution execution) throws Exception {
+        try {
+            org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf = extractPnf(execution);
+            String pnfCorrelationId = pnf.getPnfName();
+            pnfManagement.createEntry(pnfCorrelationId, preparePnfForAai(pnf));
+            logger.debug("AAI entry is created for pnf correlation id: {}, pnf uuid: {}", pnfCorrelationId,
+                    pnf.getPnfId());
+        } catch (BBObjectNotFoundException e) {
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, e);
+        }
+    }
+
+    private Pnf preparePnfForAai(org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf) {
+        Pnf pnfAai = new Pnf();
+        pnfAai.setPnfId(pnf.getPnfId());
+        pnfAai.setPnfName(pnf.getPnfName());
+        return pnfAai;
+    }
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/tasks/PnfBaseTasks.java b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/tasks/PnfBaseTasks.java
new file mode 100644 (file)
index 0000000..d8e3379
--- /dev/null
@@ -0,0 +1,29 @@
+package org.onap.so.bpmn.infrastructure.pnf.tasks;
+
+import org.onap.so.bpmn.common.BuildingBlockExecution;
+import org.onap.so.bpmn.infrastructure.pnf.management.PnfManagement;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf;
+import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
+import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
+import org.onap.so.client.exception.BBObjectNotFoundException;
+import org.onap.so.client.exception.ExceptionBuilder;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public abstract class PnfBaseTasks {
+    protected PnfManagement pnfManagement;
+    @Autowired
+    protected ExceptionBuilder exceptionUtil;
+    @Autowired
+    protected ExtractPojosForBB extractPojosForBB;
+
+    @Autowired
+    public void setPnfManagement(PnfManagement pnfManagement) {
+        this.pnfManagement = pnfManagement;
+    }
+
+    public abstract void execute(BuildingBlockExecution execution) throws Exception;
+
+    protected Pnf extractPnf(BuildingBlockExecution execution) throws BBObjectNotFoundException {
+        return extractPojosForBB.extractByKey(execution, ResourceKey.PNF);
+    }
+}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/AssignPnfInputsCheckerDelegateTest.java b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/AssignPnfInputsCheckerDelegateTest.java
deleted file mode 100644 (file)
index a562da4..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-package org.onap.so.bpmn.infrastructure.pnf.delegate;
-
-import org.apache.commons.lang3.StringUtils;
-import org.camunda.bpm.engine.delegate.BpmnError;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.junit.Before;
-import org.junit.Test;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.onap.so.bpmn.infrastructure.pnf.delegate.PnfInputCheckersTestUtils.DelegateExecutionBuilder;
-import static org.onap.so.bpmn.infrastructure.pnf.delegate.PnfInputCheckersTestUtils.RESERVED_UUID;
-import static org.onap.so.bpmn.infrastructure.pnf.delegate.PnfInputCheckersTestUtils.VALID_UUID;
-
-public class AssignPnfInputsCheckerDelegateTest {
-
-    private DelegateExecutionBuilder delegateExecutionBuilder;
-    private AssignPnfInputsCheckerDelegate testedObject;
-    private DelegateExecution execution;
-
-    @Before
-    public void setUp() {
-        testedObject = new AssignPnfInputsCheckerDelegate();
-        delegateExecutionBuilder = new DelegateExecutionBuilder();
-    }
-
-    @Test
-    public void shouldThrowException_whenPnfCorrelationIdNotSet() {
-        execution = delegateExecutionBuilder.setPnfCorrelationId(null).setPnfUuid(VALID_UUID).build();
-        assertThatSutExecutionThrowsExceptionOfInstance(BpmnError.class);
-    }
-
-    @Test
-    public void shouldThrowException_whenPnfUuidIsNotSet() {
-        execution = delegateExecutionBuilder.setPnfUuid(null).build();
-        assertThatSutExecutionThrowsExceptionOfInstance(BpmnError.class);
-    }
-
-    @Test
-    public void shouldThrowException_whenPnfUuidIsEmptyString() {
-        execution = delegateExecutionBuilder.setPnfUuid(StringUtils.EMPTY).build();
-        assertThatSutExecutionThrowsExceptionOfInstance(BpmnError.class);
-    }
-
-    @Test
-    public void shouldThrowException_whenPnfUuidIsReservedUuid() {
-        execution = delegateExecutionBuilder.setPnfUuid(RESERVED_UUID).build();
-        assertThatSutExecutionThrowsExceptionOfInstance(BpmnError.class);
-    }
-
-    private void assertThatSutExecutionThrowsExceptionOfInstance(Class<?> type) {
-        assertThatThrownBy(() -> testedObject.execute(execution)).isInstanceOf(type);
-    }
-}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PnfInputCheckersTestUtils.java b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PnfInputCheckersTestUtils.java
deleted file mode 100644 (file)
index c1c7f06..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.onap.so.bpmn.infrastructure.pnf.delegate;
-
-import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.*;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
-import java.util.UUID;
-
-
-public class PnfInputCheckersTestUtils {
-
-    static final String PNF_ENTRY_NOTIFICATION_TIMEOUT = "P1D";
-    static final String VALID_UUID = UUID.nameUUIDFromBytes("testUuid".getBytes()).toString();
-    static final String RESERVED_UUID = new UUID(0, 0).toString();
-    private static final String DEFAULT_SERVICE_INSTANCE_ID = "da7d07d9-b71c-4128-809d-2ec01c807169";
-    private static final String DEFAULT_PNF_CORRELATION_ID = "testPnfCorrelationId";
-
-    static class DelegateExecutionBuilder {
-        private String pnfCorrelationId = DEFAULT_PNF_CORRELATION_ID;
-        private String pnfUuid = VALID_UUID;
-        private String serviceInstanceId = DEFAULT_SERVICE_INSTANCE_ID;
-
-        public DelegateExecutionBuilder setPnfCorrelationId(String pnfCorrelationId) {
-            this.pnfCorrelationId = pnfCorrelationId;
-            return this;
-        }
-
-        public DelegateExecutionBuilder setPnfUuid(String pnfUuid) {
-            this.pnfUuid = pnfUuid;
-            return this;
-        }
-
-        public DelegateExecutionBuilder setServiceInstanceId(String serviceInstanceId) {
-            this.serviceInstanceId = serviceInstanceId;
-            return this;
-        }
-
-        public DelegateExecution build() {
-            DelegateExecution execution = new DelegateExecutionFake();
-            execution.setVariable("testProcessKey", "testProcessKeyValue");
-            execution.setVariable(PNF_CORRELATION_ID, this.pnfCorrelationId);
-            execution.setVariable(PNF_UUID, this.pnfUuid);
-            execution.setVariable(SERVICE_INSTANCE_ID, this.serviceInstanceId);
-            return execution;
-        }
-    }
-}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CheckAaiForPnfCorrelationIdTest.java b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CheckAaiForPnfCorrelationIdTest.java
new file mode 100644 (file)
index 0000000..3fa9fbf
--- /dev/null
@@ -0,0 +1,129 @@
+package org.onap.so.bpmn.infrastructure.pnf.tasks;
+
+import org.camunda.bpm.engine.delegate.BpmnError;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.runners.Enclosed;
+import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.onap.so.bpmn.common.BuildingBlockExecution;
+import org.onap.so.bpmn.infrastructure.pnf.delegate.PnfManagementTestImpl;
+import org.onap.so.bpmn.infrastructure.pnf.delegate.PnfManagementThrowingException;
+import org.onap.so.bpmn.infrastructure.pnf.management.PnfManagement;
+import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
+import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
+import org.onap.so.client.exception.ExceptionBuilder;
+import java.io.IOException;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.anyInt;
+import static org.mockito.Mockito.anyString;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.AAI_CONTAINS_INFO_ABOUT_PNF;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PNF_CORRELATION_ID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.PnfManagementTestImpl.ID_WITHOUT_ENTRY;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.PnfManagementTestImpl.ID_WITH_ENTRY;
+import static org.onap.so.bpmn.infrastructure.pnf.tasks.PnfTasksUtils.PNF_UUID;
+import static org.onap.so.bpmn.infrastructure.pnf.tasks.PnfTasksUtils.preparePnf;
+
+@RunWith(Enclosed.class)
+public class CheckAaiForPnfCorrelationIdTest {
+
+    @RunWith(MockitoJUnitRunner.class)
+    public static class ConnectionOkTests {
+
+        @Mock
+        private ExtractPojosForBB extractPojosForBB;
+        @Mock
+        private ExceptionBuilder exceptionUtil;
+        @Rule
+        public ExpectedException expectedException = ExpectedException.none();
+
+        @InjectMocks
+        private CheckAaiForPnfCorrelationId task = new CheckAaiForPnfCorrelationId();
+        private PnfManagement pnfManagementTest = new PnfManagementTestImpl();
+
+        @Before
+        public void setUp() {
+            task.setPnfManagement(pnfManagementTest);
+        }
+
+        @Test
+        public void shouldThrowExceptionWhenPnfCorrelationIdIsNotSet() throws Exception {
+            // given
+            when(extractPojosForBB.extractByKey(any(), eq(ResourceKey.PNF))).thenReturn(preparePnf(null, PNF_UUID));
+            BuildingBlockExecution execution = mock(BuildingBlockExecution.class);
+            doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(eq(execution),
+                    anyInt(), anyString());
+            // when, then
+            expectedException.expect(BpmnError.class);
+            task.execute(execution);
+            verify(exceptionUtil).buildAndThrowWorkflowException(eq(execution), anyInt(), anyString());
+        }
+
+        @Test
+        public void shouldSetCorrectVariablesWhenAaiDoesNotContainInfoAboutPnf() throws Exception {
+            // given
+            when(extractPojosForBB.extractByKey(any(), eq(ResourceKey.PNF)))
+                    .thenReturn(preparePnf(ID_WITHOUT_ENTRY, PNF_UUID));
+            BuildingBlockExecution execution = mock(BuildingBlockExecution.class);
+            // when
+            task.execute(execution);
+            // then
+            verify(execution).setVariable(AAI_CONTAINS_INFO_ABOUT_PNF, false);
+        }
+
+        @Test
+        public void shouldSetCorrectVariablesWhenAaiContainsInfoAboutPnfWithoutIp() throws Exception {
+            // given
+            when(extractPojosForBB.extractByKey(any(), eq(ResourceKey.PNF)))
+                    .thenReturn(preparePnf(ID_WITH_ENTRY, PNF_UUID));
+            BuildingBlockExecution execution = mock(BuildingBlockExecution.class);
+            // when
+            task.execute(execution);
+            // then
+            verify(execution).setVariable(AAI_CONTAINS_INFO_ABOUT_PNF, true);
+        }
+    }
+
+    @RunWith(MockitoJUnitRunner.class)
+    public static class NoConnectionTests {
+
+        @Mock
+        private ExtractPojosForBB extractPojosForBB;
+        @Mock
+        private ExceptionBuilder exceptionUtil;
+        @Rule
+        public ExpectedException expectedException = ExpectedException.none();
+
+        @InjectMocks
+        private CheckAaiForPnfCorrelationId task = new CheckAaiForPnfCorrelationId();
+        private PnfManagement pnfManagementTest = new PnfManagementThrowingException();
+
+        @Before
+        public void setUp() throws Exception {
+            task.setPnfManagement(pnfManagementTest);
+            when(extractPojosForBB.extractByKey(any(), eq(ResourceKey.PNF)))
+                    .thenReturn(preparePnf(PNF_CORRELATION_ID, PNF_UUID));
+        }
+
+        @Test
+        public void shouldThrowExceptionWhenIoExceptionOnConnectionToAai() {
+            // given
+            BuildingBlockExecution execution = mock(BuildingBlockExecution.class);
+            doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(eq(execution),
+                    anyInt(), any(IOException.class));
+            // when, then
+            expectedException.expect(BpmnError.class);
+            task.execute(execution);
+            verify(exceptionUtil).buildAndThrowWorkflowException(eq(execution), anyInt(), any(IOException.class));
+        }
+    }
+}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CreatePnfEntryInAaiTest.java b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CreatePnfEntryInAaiTest.java
new file mode 100644 (file)
index 0000000..ed8dd82
--- /dev/null
@@ -0,0 +1,50 @@
+package org.onap.so.bpmn.infrastructure.pnf.tasks;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.onap.aai.domain.yang.Pnf;
+import org.onap.so.bpmn.common.BuildingBlockExecution;
+import org.onap.so.bpmn.infrastructure.pnf.delegate.PnfManagementTestImpl;
+import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
+import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
+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.when;
+import static org.onap.so.bpmn.infrastructure.pnf.tasks.PnfTasksUtils.PNF_CORRELATION_ID;
+import static org.onap.so.bpmn.infrastructure.pnf.tasks.PnfTasksUtils.PNF_UUID;
+import static org.onap.so.bpmn.infrastructure.pnf.tasks.PnfTasksUtils.preparePnf;
+
+@RunWith(MockitoJUnitRunner.class)
+public class CreatePnfEntryInAaiTest {
+
+    @Mock
+    private ExtractPojosForBB extractPojosForBB;
+    @InjectMocks
+    private CreatePnfEntryInAai task = new CreatePnfEntryInAai();
+    private PnfManagementTestImpl pnfManagementTest = new PnfManagementTestImpl();
+
+    @Before
+    public void setUp() throws Exception {
+        task.setPnfManagement(pnfManagementTest);
+        when(extractPojosForBB.extractByKey(any(), eq(ResourceKey.PNF)))
+                .thenReturn(preparePnf(PNF_CORRELATION_ID, PNF_UUID));
+    }
+
+    @Test
+    public void shouldSetPnfIdAndPnfName() throws Exception {
+        // when
+        task.execute(mock(BuildingBlockExecution.class));
+        // then
+        Pnf createdEntry = pnfManagementTest.getCreated().get(PNF_CORRELATION_ID);
+        assertThat(createdEntry.getPnfId()).isEqualTo(PNF_UUID);
+        assertThat(createdEntry.getPnfName()).isEqualTo(PNF_CORRELATION_ID);
+        assertThat(createdEntry.isInMaint()).isNull();
+    }
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/tasks/PnfTasksUtils.java b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/tasks/PnfTasksUtils.java
new file mode 100644 (file)
index 0000000..49fe96c
--- /dev/null
@@ -0,0 +1,17 @@
+package org.onap.so.bpmn.infrastructure.pnf.tasks;
+
+import org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf;
+import java.util.UUID;
+
+public class PnfTasksUtils {
+    static final String PNF_UUID = UUID.nameUUIDFromBytes("testUuid".getBytes()).toString();
+    static final String PNF_CORRELATION_ID = "testPnfCorrelationId";
+
+    public static Pnf preparePnf(String pnfName, String pnfUuid) {
+        Pnf pnf = new Pnf();
+        pnf.setPnfName(pnfName);
+        pnf.setPnfId(pnfUuid);
+        return pnf;
+    }
+
+}