From 181c470b61fae79acb05aedae67a0ceb486f1ee5 Mon Sep 17 00:00:00 2001 From: Jozsef Csongvai Date: Tue, 30 Jun 2020 06:59:43 -0400 Subject: Fix incorrect error handling for resolveWorkflowOutputs Issue-ID: CCSDK-2504 Change-Id: Ie910e47bb97be2db4f4a4e94653e5ae474a78c0d Signed-off-by: Jozsef Csongvai --- .../BluePrintWorkflowExecutionServiceImplTest.kt | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'ms/blueprintsprocessor/modules/services/workflow-service/src/test') diff --git a/ms/blueprintsprocessor/modules/services/workflow-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/workflow/BluePrintWorkflowExecutionServiceImplTest.kt b/ms/blueprintsprocessor/modules/services/workflow-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/workflow/BluePrintWorkflowExecutionServiceImplTest.kt index 90b7200c9..47fbe1021 100644 --- a/ms/blueprintsprocessor/modules/services/workflow-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/workflow/BluePrintWorkflowExecutionServiceImplTest.kt +++ b/ms/blueprintsprocessor/modules/services/workflow-service/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/services/workflow/BluePrintWorkflowExecutionServiceImplTest.kt @@ -16,7 +16,10 @@ package org.onap.ccsdk.cds.blueprintsprocessor.services.workflow +import com.fasterxml.jackson.databind.JsonNode +import com.fasterxml.jackson.databind.node.ObjectNode import io.mockk.every +import io.mockk.mockk import io.mockk.mockkObject import io.mockk.unmockkAll import kotlinx.coroutines.runBlocking @@ -24,20 +27,29 @@ import org.junit.After import org.junit.Before import org.junit.Test import org.junit.runner.RunWith +import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ActionIdentifiers +import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.CommonHeader import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceInput import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ExecutionServiceOutput import org.onap.ccsdk.cds.blueprintsprocessor.core.service.BluePrintClusterService import org.onap.ccsdk.cds.blueprintsprocessor.services.workflow.mock.MockComponentFunction import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants +import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintError import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintProcessorException +import org.onap.ccsdk.cds.controllerblueprints.core.asJsonType +import org.onap.ccsdk.cds.controllerblueprints.core.data.Step +import org.onap.ccsdk.cds.controllerblueprints.core.data.Workflow import org.onap.ccsdk.cds.controllerblueprints.core.interfaces.BluePrintWorkflowExecutionService +import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintContext import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintDependencyService +import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintRuntimeService import org.onap.ccsdk.cds.controllerblueprints.core.utils.BluePrintMetadataUtils import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.mock.mockito.MockBean import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.junit4.SpringRunner +import java.lang.RuntimeException import kotlin.test.assertEquals import kotlin.test.assertFailsWith import kotlin.test.assertNotNull @@ -131,4 +143,42 @@ class BluePrintWorkflowExecutionServiceImplTest { } } } + + @Test + fun `Should handle errors from resolve workflow output`() { + val imperativeWorkflowExecutionService: ImperativeWorkflowExecutionService = mockk() + val bluePrintWorkflowExecutionServiceImpl = BluePrintWorkflowExecutionServiceImpl( + mockk(), mockk(), imperativeWorkflowExecutionService) + val bluePrintRuntimeService: BluePrintRuntimeService> = mockk() + val bluePrintContext: BluePrintContext = mockk() + val executionServiceInput = ExecutionServiceInput().apply { + this.actionIdentifiers = ActionIdentifiers().apply { this.actionName = "config-assign" } + this.commonHeader = CommonHeader() + this.payload = """{"config-assign-request": {}}""".asJsonType() as ObjectNode + } + val workflow = Workflow().apply { + this.steps = mutableMapOf("one" to Step(), "two" to Step()) + } + val blueprintError = BluePrintError() + + every { bluePrintRuntimeService.bluePrintContext() } returns bluePrintContext + every { bluePrintRuntimeService.assignWorkflowInputs(any(), any()) } returns Unit + every { bluePrintContext.workflowByName(any()) } returns workflow + every { + bluePrintRuntimeService.resolveWorkflowOutputs(any()) + } throws RuntimeException("failed to resolve property...") + every { + runBlocking { + imperativeWorkflowExecutionService.executeBluePrintWorkflow(any(), any(), any()) + } + } returns ExecutionServiceOutput() + every { bluePrintRuntimeService.getBluePrintError() } returns blueprintError + + runBlocking { + val output = bluePrintWorkflowExecutionServiceImpl.executeBluePrintWorkflow( + bluePrintRuntimeService, executionServiceInput, mutableMapOf()) + assertEquals("failed to resolve property...", blueprintError.errors[0]) + assertEquals("""{"config-assign-response":{}}""".asJsonType(), output.payload) + } + } } -- cgit 1.2.3-korg