diff options
author | Remigiusz Janeczek <remigiusz.janeczek@nokia.com> | 2019-12-12 14:21:20 +0100 |
---|---|---|
committer | Remigiusz Janeczek <remigiusz.janeczek@nokia.com> | 2019-12-20 09:38:24 +0100 |
commit | 6939ace38f276b40b7c07be18450604c5a469607 (patch) | |
tree | 59f3129fe7ca56092cd442c8ff5d35609e66face /bpmn/so-bpmn-infrastructure-common/src | |
parent | b9765b97e0fd8a99c5b27263638eb05483f14e29 (diff) |
Externalize AssignPnf Building Block and refactor existing code accordingly
Issue-ID: SO-2568
Change-Id: I1eec15862d6f0b5e8ae4c952b290be8d5fc786dd
Signed-off-by: Remigiusz Janeczek <remigiusz.janeczek@nokia.com>
Diffstat (limited to 'bpmn/so-bpmn-infrastructure-common/src')
3 files changed, 138 insertions, 0 deletions
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 new file mode 100644 index 0000000000..9176948288 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/AssignPnfInputsCheckerDelegate.java @@ -0,0 +1,40 @@ +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/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 new file mode 100644 index 0000000000..a562da490b --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/AssignPnfInputsCheckerDelegateTest.java @@ -0,0 +1,52 @@ +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 new file mode 100644 index 0000000000..c1c7f06d4e --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PnfInputCheckersTestUtils.java @@ -0,0 +1,46 @@ +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; + } + } +} |