From 5ec955ce08cd3101eed327bbb6d1ceb3903f5bfc Mon Sep 17 00:00:00 2001 From: Remigiusz Janeczek Date: Thu, 9 Jan 2020 12:23:18 +0100 Subject: Align AssignPnfBB with Service Macro Create -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 Change-Id: Ic48e2c1c6ab852c33837091da3e7916b71c26466 --- .../ExtractPojosForBBTest.java | 91 ++++++--------- .../subprocess/BuildingBlock/AssignPnfBB.bpmn | 22 +--- .../delegate/AssignPnfInputsCheckerDelegate.java | 40 ------- .../pnf/tasks/CheckAaiForPnfCorrelationId.java | 45 +++++++ .../pnf/tasks/CreatePnfEntryInAai.java | 34 ++++++ .../infrastructure/pnf/tasks/PnfBaseTasks.java | 29 +++++ .../AssignPnfInputsCheckerDelegateTest.java | 52 --------- .../pnf/delegate/PnfInputCheckersTestUtils.java | 46 -------- .../pnf/tasks/CheckAaiForPnfCorrelationIdTest.java | 129 +++++++++++++++++++++ .../pnf/tasks/CreatePnfEntryInAaiTest.java | 50 ++++++++ .../infrastructure/pnf/tasks/PnfTasksUtils.java | 17 +++ 11 files changed, 345 insertions(+), 210 deletions(-) delete mode 100644 bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/AssignPnfInputsCheckerDelegate.java create mode 100644 bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CheckAaiForPnfCorrelationId.java create mode 100644 bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CreatePnfEntryInAai.java create mode 100644 bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/tasks/PnfBaseTasks.java delete mode 100644 bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/AssignPnfInputsCheckerDelegateTest.java delete mode 100644 bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PnfInputCheckersTestUtils.java create mode 100644 bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CheckAaiForPnfCorrelationIdTest.java create mode 100644 bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CreatePnfEntryInAaiTest.java create mode 100644 bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/tasks/PnfTasksUtils.java diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/ExtractPojosForBBTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/ExtractPojosForBBTest.java index 7bd2beeb92..dbd5000387 100644 --- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/ExtractPojosForBBTest.java +++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/ExtractPojosForBBTest.java @@ -115,6 +115,12 @@ public class ExtractPojosForBBTest extends BaseTest { instanceGroupsPend.add(instanceGroupPend); lookupKeyMap.put(ResourceKey.INSTANCE_GROUP_ID, instanceGroupPend.getId()); + List 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); + } } diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AssignPnfBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AssignPnfBB.bpmn index f9c5d0cdb3..930f666bf0 100644 --- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AssignPnfBB.bpmn +++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AssignPnfBB.bpmn @@ -11,8 +11,8 @@ SequenceFlow_1fu9o4x - - SequenceFlow_02j05kk + + SequenceFlow_1fu9o4x SequenceFlow_081rs5d @@ -20,7 +20,7 @@ SequenceFlow_0fn5kgz SequenceFlow_1ewfz8r - + SequenceFlow_0fn5kgz SequenceFlow_0l6rtzy @@ -36,12 +36,7 @@ #{aaiContainsInfoAboutPnf} - - SequenceFlow_1fu9o4x - SequenceFlow_02j05kk - - - + Inputs: - pnfCorrelationId - String @@ -121,16 +116,9 @@ - - - - - - - - + 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 index 9176948288..0000000000 --- a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/AssignPnfInputsCheckerDelegate.java +++ /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 index 0000000000..29914252d8 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CheckAaiForPnfCorrelationId.java @@ -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 index 0000000000..6e86ad619e --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CreatePnfEntryInAai.java @@ -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 index 0000000000..d8e3379afb --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/tasks/PnfBaseTasks.java @@ -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 index a562da490b..0000000000 --- a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/AssignPnfInputsCheckerDelegateTest.java +++ /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 index c1c7f06d4e..0000000000 --- a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PnfInputCheckersTestUtils.java +++ /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 index 0000000000..3fa9fbf3b5 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CheckAaiForPnfCorrelationIdTest.java @@ -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 index 0000000000..ed8dd82efb --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/tasks/CreatePnfEntryInAaiTest.java @@ -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 index 0000000000..49fe96c3d9 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/tasks/PnfTasksUtils.java @@ -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; + } + +} -- cgit 1.2.3-korg