From 98998cca3b2c2467d33b9a8e806c98941672ead0 Mon Sep 17 00:00:00 2001 From: Lukasz Muszkieta Date: Tue, 21 Jan 2020 16:21:56 +0100 Subject: Create WaitForPnfReadyBB Issue-ID: SO-2606 Signed-off-by: Lukasz Muszkieta Change-Id: I55281130c8ce0fde68d7a0554dd9023e44b9f2b0 Signed-off-by: Lukasz Muszkieta --- .../pnf/delegate/RegisterForPnfReadyEventTest.java | 125 +++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/RegisterForPnfReadyEventTest.java (limited to 'bpmn/so-bpmn-infrastructure-common/src/test') diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/RegisterForPnfReadyEventTest.java b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/RegisterForPnfReadyEventTest.java new file mode 100644 index 0000000000..a82fb5d823 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/RegisterForPnfReadyEventTest.java @@ -0,0 +1,125 @@ +package org.onap.so.bpmn.infrastructure.pnf.delegate; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.inOrder; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import java.util.HashMap; +import org.camunda.bpm.engine.ProcessEngineServices; +import org.camunda.bpm.engine.RuntimeService; +import org.camunda.bpm.engine.delegate.DelegateExecution; +import org.camunda.bpm.engine.runtime.MessageCorrelationBuilder; +import org.junit.Before; +import org.junit.Test; +import org.mockito.InOrder; +import org.onap.so.bpmn.common.BuildingBlockExecution; +import org.onap.so.bpmn.common.DelegateExecutionImpl; +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; + +public class RegisterForPnfReadyEventTest { + + private static final String PNF_NAME = "pnfNameTest"; + + private DelegateExecution delegateExecution; + private ExtractPojosForBB extractPojosForBBMock; + private DmaapClientTestImpl dmaapClientTest; + private MessageCorrelationBuilder messageCorrelationBuilder; + private ExceptionBuilder exceptionBuilderMock; + private BuildingBlockExecution buildingBlockExecution; + private static final String PNF_ENTRY_NOTIFICATION_TIMEOUT = "P14D"; + + private RegisterForPnfReadyEvent testedObject; + + @Before + public void init() { + delegateExecution = prepareExecution(); + dmaapClientTest = new DmaapClientTestImpl(); + exceptionBuilderMock = mock(ExceptionBuilder.class); + extractPojosForBBMock = mock(ExtractPojosForBB.class); + buildingBlockExecution = new DelegateExecutionImpl(new HashMap<>()); + when(delegateExecution.getVariable("gBuildingBlockExecution")).thenReturn(buildingBlockExecution); + } + + @Test + public void shouldRegisterForDmaapClient() throws BBObjectNotFoundException { + // given + testedObject = new RegisterForPnfReadyEvent(dmaapClientTest, extractPojosForBBMock, exceptionBuilderMock, + PNF_ENTRY_NOTIFICATION_TIMEOUT); + Pnf pnf = new Pnf(); + pnf.setPnfName(PNF_NAME); + when(extractPojosForBBMock.extractByKey(buildingBlockExecution, ResourceKey.PNF)).thenReturn(pnf); + // when + testedObject.execute(delegateExecution); + // then + verify(delegateExecution).setVariable(ExecutionVariableNames.PNF_CORRELATION_ID, PNF_NAME); + verify(delegateExecution).setVariable(ExecutionVariableNames.TIMEOUT_FOR_NOTIFICATION, + PNF_ENTRY_NOTIFICATION_TIMEOUT); + checkIfInformConsumerThreadIsRunProperly(dmaapClientTest); + } + + @Test + public void pnfNotFoundInBBexecution_WorkflowExIsThrown() throws BBObjectNotFoundException { + // given + testedObject = new RegisterForPnfReadyEvent(dmaapClientTest, extractPojosForBBMock, exceptionBuilderMock, + PNF_ENTRY_NOTIFICATION_TIMEOUT); + when(extractPojosForBBMock.extractByKey(buildingBlockExecution, ResourceKey.PNF)) + .thenThrow(BBObjectNotFoundException.class); + // when + testedObject.execute(delegateExecution); + // then + verify(exceptionBuilderMock).buildAndThrowWorkflowException(delegateExecution, 7000, + "pnf resource not found in buildingBlockExecution while registering to dmaap listener"); + } + + @Test + public void pnfNameIsNull_WorkflowExIsThrown() throws BBObjectNotFoundException { + // given + testedObject = new RegisterForPnfReadyEvent(dmaapClientTest, extractPojosForBBMock, exceptionBuilderMock, + PNF_ENTRY_NOTIFICATION_TIMEOUT); + when(extractPojosForBBMock.extractByKey(buildingBlockExecution, ResourceKey.PNF)).thenReturn(new Pnf()); + // when + testedObject.execute(delegateExecution); + // then + verify(exceptionBuilderMock).buildAndThrowWorkflowException(delegateExecution, 7000, "pnf name is not set"); + } + + @Test + public void pnfEventNotificationTimeoutNotSet_WorkflowExIsThrown() throws BBObjectNotFoundException { + // given + testedObject = new RegisterForPnfReadyEvent(dmaapClientTest, extractPojosForBBMock, exceptionBuilderMock, null); + when(extractPojosForBBMock.extractByKey(buildingBlockExecution, ResourceKey.PNF)).thenReturn(new Pnf()); + // when + testedObject.execute(delegateExecution); + // then + verify(exceptionBuilderMock).buildAndThrowWorkflowException(delegateExecution, 7000, + "pnfEntryNotificationTimeout value not defined"); + } + + private void checkIfInformConsumerThreadIsRunProperly(DmaapClientTestImpl dmaapClientTest) { + dmaapClientTest.getInformConsumer().run(); + InOrder inOrder = inOrder(messageCorrelationBuilder); + inOrder.verify(messageCorrelationBuilder).processInstanceBusinessKey("testBusinessKey"); + inOrder.verify(messageCorrelationBuilder).correlateWithResult(); + } + + private DelegateExecution prepareExecution() { + DelegateExecution delegateExecution = mock(DelegateExecution.class); + when(delegateExecution.getProcessBusinessKey()).thenReturn("testBusinessKey"); + ProcessEngineServices processEngineServices = mock(ProcessEngineServices.class); + when(delegateExecution.getProcessEngineServices()).thenReturn(processEngineServices); + RuntimeService runtimeService = mock(RuntimeService.class); + when(processEngineServices.getRuntimeService()).thenReturn(runtimeService); + + messageCorrelationBuilder = mock(MessageCorrelationBuilder.class); + when(runtimeService.createMessageCorrelation(any())).thenReturn(messageCorrelationBuilder); + when(messageCorrelationBuilder.processInstanceBusinessKey(any())).thenReturn(messageCorrelationBuilder); + + return delegateExecution; + } + +} -- cgit 1.2.3-korg