package org.openecomp.mso.bpmn.infrastructure.scripts import static org.mockito.Mockito.* import org.camunda.bpm.engine.delegate.BpmnError import org.camunda.bpm.engine.ProcessEngineServices import org.camunda.bpm.engine.RepositoryService import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity import org.camunda.bpm.engine.impl.pvm.process.ProcessDefinitionImpl import org.camunda.bpm.engine.repository.ProcessDefinition import org.camunda.bpm.engine.runtime.Execution; import org.mockito.MockitoAnnotations import org.mockito.runners.MockitoJUnitRunner import org.mockito.internal.debugging.MockitoDebuggerImpl import org.openecomp.mso.bpmn.common.scripts.MsoUtils import org.openecomp.mso.bpmn.core.WorkflowException import org.junit.Before import org.junit.Rule; import org.junit.Test import org.junit.Ignore import org.junit.runner.RunWith import static org.junit.Assert.*; import com.github.tomakehurst.wiremock.client.WireMock; import com.github.tomakehurst.wiremock.junit.WireMockRule; import java.util.HashMap; import java.util.Map; import java.util.UUID; import org.apache.commons.lang3.* @RunWith(MockitoJUnitRunner.class) class DoUpdateNetworkInstanceRollbackTest { @Rule public WireMockRule wireMockRule = new WireMockRule(28090); def utils = new MsoUtils() String Prefix="UPDNETIR_" String rollbackNetworkRequest = """ MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641 c4f4e878-cde0-4b15-ae9a-bda857759cea CONTRAIL_EXTERNAL true 7dd5365547234ee8937416c65507d266 RDM2WAGPLCP 1ef47428-cade-45bd-a103-0751e8b2deb0 """ String rollbackActivateSDNCRequest = """ 88f65519-9a38-4c4b-8445-9eb4a5a5af56 f70e927b-6087-4974-9ef8-c5e4d5847ca4 rollback network-topology-operation sdncCallback generic-resource 88f65519-9a38-4c4b-8445-9eb4a5a5af56 CreateNetworkInstance VID a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb MSO-dev-service-type f70e927b-6087-4974-9ef8-c5e4d5847ca4 MSO_1610_dev 8abc633a-810b-4ca5-8b3a-09511d13a2ce CONTRAIL_EXTERNAL invariant-uuid customization-uuid uuid version CONTRAIL_EXTERNAL 8abc633a-810b-4ca5-8b3a-09511d13a2ce CONTRAIL_EXTERNAL MNS-25180-L-01-dmz_direct_net_1 7dd5365547234ee8937416c65507d266 RDM2WAGPLCP """ String rollbackSDNCRequest = """ 88f65519-9a38-4c4b-8445-9eb4a5a5af56 f70e927b-6087-4974-9ef8-c5e4d5847ca4 rollback network-topology-operation sdncCallback generic-resource 88f65519-9a38-4c4b-8445-9eb4a5a5af56 CreateNetworkInstance VID a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb MSO-dev-service-type f70e927b-6087-4974-9ef8-c5e4d5847ca4 MSO_1610_dev 8abc633a-810b-4ca5-8b3a-09511d13a2ce CONTRAIL_EXTERNAL invariant-uuid customization-uuid uuid version CONTRAIL_EXTERNAL 8abc633a-810b-4ca5-8b3a-09511d13a2ce CONTRAIL_EXTERNAL MNS-25180-L-01-dmz_direct_net_1 7dd5365547234ee8937416c65507d266 RDM2WAGPLCP """ // - - - - - - - - @Before public void init() { MockitoAnnotations.initMocks(this) } public void initializeVariables (Execution mockExecution) { verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", null) verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", null) verify(mockExecution).setVariable(Prefix + "WorkflowException", null) verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", "") verify(mockExecution).setVariable(Prefix + "rollbackNetworkResponse", "") verify(mockExecution).setVariable(Prefix + "rollbackNetworkReturnCode", "") verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", "") verify(mockExecution).setVariable(Prefix + "rollbackSDNCResponse", "") verify(mockExecution).setVariable(Prefix + "rollbackSDNCReturnCode", "") verify(mockExecution).setVariable(Prefix + "Success", false) verify(mockExecution).setVariable(Prefix + "fullRollback", false) } @Test //@Ignore public void preProcessRequest() { println "************ preProcessRequest ************* " WorkflowException workflowException = new WorkflowException("DoUpdateNetworkInstanceRollback", 2500, "Received error from Network Adapter: JBWEB000065: HTTP Status 500.") Map rollbackData = new HashMap(); rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest) rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest) ExecutionEntity mockExecution = setupMock() // Initialize prerequisite variables when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true") when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "") when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException) when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData) when(mockExecution.getVariable("sdncVersion")).thenReturn("1610") when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B") when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7") when(mockExecution.getVariable("URN_mso_adapters_sdnc_endpoint")).thenReturn("http://localhost:28090/SDNCAdapter") when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:28090/networks/NetworkAdapter") when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:28090/SDNCAdapterRpc") // preProcessRequest(Execution execution) DoUpdateNetworkInstanceRollback DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback() DoUpdateNetworkInstanceRollback.preProcessRequest(mockExecution) verify(mockExecution).getVariable("isDebugLogEnabled") verify(mockExecution).setVariable("prefix", Prefix) //verify variable initialization initializeVariables(mockExecution) } @Test @Ignore public void validateRollbackResponses_Good() { WorkflowException workflowException = new WorkflowException("DoUpdateNetworkInstanceRollback", 2500, "AAI Update Contrail Failed. Error 404.") WorkflowException expectedWorkflowException = new WorkflowException("DoUpdateNetworkInstanceRollback", 2500, "AAI Update Contrail Failed. Error 404. + SNDC activate rollback completed. + PO Network rollback completed. + SNDC assign rollback completed.") println "************ validateRollbackResponses_Good() ************* " ExecutionEntity mockExecution = setupMock() // Initialize prerequisite variables when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true") when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "") when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good") when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good") when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200") when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse") when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200") when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse") when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(workflowException) when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(false) DoUpdateNetworkInstanceRollback DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback() DoUpdateNetworkInstanceRollback.validateRollbackResponses(mockExecution) // verify set prefix = Prefix + "" verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix) verify(mockExecution, atLeast(1)).setVariable("rolledBack", true) verify(mockExecution, atLeast(1)).setVariable("wasDeleted", true) verify(mockExecution).setVariable("WorkflowException", refEq(expectedWorkflowException, any(WorkflowException.class))) //verify(mockExecution).setVariable("WorkflowException", expectedWorkflowException) } @Test //@Ignore public void validateRollbackResponses_FullRollback() { Map rollbackData = new HashMap(); rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest) rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest) println "************ validateRollbackResponses_FullRollback() ************* " ExecutionEntity mockExecution = setupMock() // Initialize prerequisite variables when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true") when(mockExecution.getVariable("prefix")).thenReturn(Prefix) when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good") when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good") when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200") when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse") when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200") when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse") when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(null) when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(true) when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData) DoUpdateNetworkInstanceRollback DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback() DoUpdateNetworkInstanceRollback.validateRollbackResponses(mockExecution) // verify set prefix = Prefix + "" verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix) verify(mockExecution, atLeast(1)).setVariable("rollbackSuccessful", true) verify(mockExecution, atLeast(1)).setVariable("rollbackError", false) } private ExecutionEntity setupMock() { ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class) when(mockProcessDefinition.getKey()).thenReturn("DoUpdateNetworkInstanceRollback") RepositoryService mockRepositoryService = mock(RepositoryService.class) when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition) when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DoUpdateNetworkInstanceRollback") when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100") ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class) when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService) ExecutionEntity mockExecution = mock(ExecutionEntity.class) // Initialize prerequisite variables when(mockExecution.getId()).thenReturn("100") when(mockExecution.getProcessDefinitionId()).thenReturn("DoUpdateNetworkInstanceRollback") when(mockExecution.getProcessInstanceId()).thenReturn("DoUpdateNetworkInstanceRollback") when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices) when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition) return mockExecution } }