/* * ============LICENSE_START======================================================= * ONAP - SO * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END========================================================= */ package org.onap.so.bpmn.vcpe.scripts import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity import org.junit.Before import org.junit.BeforeClass import org.junit.Rule import org.junit.Test import org.junit.Ignore import org.mockito.MockitoAnnotations import org.camunda.bpm.engine.delegate.BpmnError import org.mockito.Spy import org.onap.so.bpmn.core.UrnPropertiesReader import org.onap.so.bpmn.mock.FileUtil import org.onap.so.client.aai.entities.uri.AAIResourceUri import static org.junit.Assert.*; import static org.mockito.Mockito.* import static org.onap.so.bpmn.mock.StubResponseAAI.MockDeleteAllottedResource import static org.onap.so.bpmn.mock.StubResponseAAI.MockGetAllottedResource import static org.onap.so.bpmn.mock.StubResponseAAI.MockPatchAllottedResource import com.github.tomakehurst.wiremock.junit.WireMockRule class DoDeleteAllottedResourceTXCTest extends GroovyTestBase { @Rule public WireMockRule wireMockRule = new WireMockRule(PORT) String Prefix = "DDARTXC_" @Spy DoDeleteAllottedResourceTXC doDeleteAllottedResourceTXC @BeforeClass public static void setUpBeforeClass() { super.setUpBeforeClass() } @Before public void init() { MockitoAnnotations.initMocks(this) super.init() when(doDeleteAllottedResourceTXC.getAllottedResourceUtils()).thenReturn(allottedResourceUtils_MOCK) } public DoDeleteAllottedResourceTXCTest() { super("DoDeleteAllottedResourceTXC") } // ***** preProcessRequest ***** @Test // @Ignore public void preProcessRequest() { ExecutionEntity mex = setupMock() initPreProcess(mex) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() DoDeleteAllottedResourceTXC.preProcessRequest(mex) //verify(mex).getVariable(DBGFLAG) verify(mex).setVariable("prefix", Prefix) verify(mex).setVariable("sdncCallbackUrl", "sdncurn") assertTrue(checkMissingPreProcessRequest("mso.workflow.sdncadapter.callback")) assertTrue(checkMissingPreProcessRequest("serviceInstanceId")) assertTrue(checkMissingPreProcessRequest("allottedResourceId")) } @Test // @Ignore public void preProcessRequest_BpmnError() { ExecutionEntity mex = setupMock() initPreProcess(mex) when(mex.getVariable("serviceInstanceId")).thenThrow(new BpmnError("expected exception")) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() assertTrue(doBpmnError( { _ -> DoDeleteAllottedResourceTXC.preProcessRequest(mex) })) } @Test // @Ignore public void preProcessRequest_Ex() { ExecutionEntity mex = setupMock() initPreProcess(mex) when(mex.getVariable("serviceInstanceId")).thenThrow(new RuntimeException("expected exception")) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() assertTrue(doBpmnError( { _ -> DoDeleteAllottedResourceTXC.preProcessRequest(mex) })) } // ***** getAaiAR ***** @Test @Ignore public void getAaiAR() { ExecutionEntity mex = setupMock() initGetAaiAR(mex) when(client_MOCK.exists(any(AAIResourceUri.class))).thenReturn(true) doDeleteAllottedResourceTXC.getAaiAR(mex) verify(mex).setVariable("parentServiceInstanceId", INST) } @Test public void getAaiAR_EmptyResponse() { ExecutionEntity mex = setupMock() initGetAaiAR(mex) when(client_MOCK.exists(any(AAIResourceUri.class))).thenReturn(false) assertTrue(doBpmnError( { _ -> doDeleteAllottedResourceTXC.getAaiAR(mex) })) } // ***** updateAaiAROrchStatus ***** @Test @Ignore public void updateAaiAROrchStatus() { ExecutionEntity mex = setupMock() initUpdateAaiAROrchStatus(mex) MockPatchAllottedResource(CUST, SVC, INST, ARID) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() DoDeleteAllottedResourceTXC.updateAaiAROrchStatus(mex, "success") } // ***** buildSDNCRequest ***** @Test // @Ignore public void buildSDNCRequest() { ExecutionEntity mex = setupMock() initBuildSDNCRequest(mex) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() String result = DoDeleteAllottedResourceTXC.buildSDNCRequest(mex, "myact", "myreq") assertTrue(result.indexOf("myreq= 0) assertTrue(result.indexOf("myact= 0) assertTrue(result.indexOf("ari= 0) assertTrue(result.indexOf("sii= 0) assertTrue(result.indexOf("sii= 0) assertTrue(result.indexOf("psii= 0) assertTrue(result.indexOf("sst= 0) assertTrue(result.indexOf("gci= 0) assertTrue(result.indexOf("scu= 0) assertTrue(result.indexOf("mri= 0) assertTrue(result.indexOf("") >= 0) assertTrue(result.indexOf("") >= 0) assertTrue(result.indexOf("") >= 0) assertTrue(result.indexOf("") >= 0) assertTrue(result.indexOf("") >= 0) } @Test // @Ignore public void buildSDNCRequest_Ex() { ExecutionEntity mex = setupMock() initBuildSDNCRequest(mex) when(mex.getVariable("allottedResourceId")).thenThrow(new RuntimeException("expected exception")) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.buildSDNCRequest(mex, "myact", "myreq") })) } // ***** preProcessSDNCUnassign ***** @Test // @Ignore public void preProcessSDNCUnassign() { ExecutionEntity mex = setupMock() def map = setupMap(mex) initPreProcessSDNC(mex) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() DoDeleteAllottedResourceTXC.preProcessSDNCUnassign(mex) def req = map.get("sdncUnassignRequest") assertTrue(req.indexOf("unassign= 0) assertTrue(req.indexOf("DeleteTunnelXConnInstance= 0) assertTrue(req.indexOf("") >= 0) } @Test // @Ignore public void preProcessSDNCUnassign_BpmnError() { ExecutionEntity mex = setupMock() initPreProcessSDNC(mex) when(mex.getVariable("allottedResourceId")).thenThrow(new BpmnError("expected exception")) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessSDNCUnassign(mex) })) } @Test // @Ignore public void preProcessSDNCUnassign_Ex() { ExecutionEntity mex = setupMock() initPreProcessSDNC(mex) when(mex.getVariable("allottedResourceId")).thenThrow(new RuntimeException("expected exception")) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessSDNCUnassign(mex) })) } // ***** preProcessSDNCDelete ***** @Test // @Ignore public void preProcessSDNCDelete() { ExecutionEntity mex = setupMock() def map = setupMap(mex) initPreProcessSDNC(mex) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() DoDeleteAllottedResourceTXC.preProcessSDNCDelete(mex) def req = map.get("sdncDeleteRequest") assertTrue(req.indexOf("delete= 0) assertTrue(req.indexOf("DeleteTunnelXConnInstance= 0) assertTrue(req.indexOf("") >= 0) } @Test // @Ignore public void preProcessSDNCDelete_BpmnError() { ExecutionEntity mex = setupMock() initPreProcessSDNC(mex) when(mex.getVariable("allottedResourceId")).thenThrow(new BpmnError("expected exception")) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessSDNCDelete(mex) })) } @Test // @Ignore public void preProcessSDNCDelete_Ex() { ExecutionEntity mex = setupMock() initPreProcessSDNC(mex) when(mex.getVariable("allottedResourceId")).thenThrow(new RuntimeException("expected exception")) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessSDNCDelete(mex) })) } // ***** preProcessSDNCDeactivate ***** @Test // @Ignore public void preProcessSDNCDeactivate() { ExecutionEntity mex = setupMock() def map = setupMap(mex) initPreProcessSDNC(mex) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() DoDeleteAllottedResourceTXC.preProcessSDNCDeactivate(mex) def req = map.get("sdncDeactivateRequest") assertTrue(req.indexOf("deactivate= 0) assertTrue(req.indexOf("DeleteTunnelXConnInstance= 0) assertTrue(req.indexOf("") >= 0) } @Test // @Ignore public void preProcessSDNCDeactivate_BpmnError() { ExecutionEntity mex = setupMock() initPreProcessSDNC(mex) when(mex.getVariable("allottedResourceId")).thenThrow(new BpmnError("expected exception")) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessSDNCDeactivate(mex) })) } @Test // @Ignore public void preProcessSDNCDeactivate_Ex() { ExecutionEntity mex = setupMock() initPreProcessSDNC(mex) when(mex.getVariable("allottedResourceId")).thenThrow(new RuntimeException("expected exception")) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessSDNCDeactivate(mex) })) } // ***** validateSDNCResp ***** @Test // @Ignore public void validateSDNCResp() { ExecutionEntity mex = setupMock() def data = initValidateSDNCResp(mex) def resp = initValidateSDNCResp_Resp(200) when(mex.getVariable(Prefix+"sdncResponseSuccess")).thenReturn(true) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "create") verify(mex).getVariable("WorkflowException") verify(mex).getVariable("SDNCA_SuccessIndicator") verify(mex).getVariable(Prefix+"sdncResponseSuccess") verify(mex, never()).getVariable(Prefix + "sdncRequestDataResponseCode") verify(mex, never()).setVariable("wasDeleted", false) } @Test // @Ignore public void validateSDNCResp_Fail404_Deactivate_FailNotFound() { ExecutionEntity mex = setupMock() def data = initValidateSDNCResp(mex) def resp = initValidateSDNCResp_Resp(404) when(mex.getVariable(Prefix+"sdncRequestDataResponseCode")).thenReturn("404") when(mex.getVariable("failNotFound")).thenReturn("true") DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() assertTrue(doBpmnError( { _ -> DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "deactivate")})) } @Test // @Ignore public void validateSDNCResp_Fail404_Deactivate() { ExecutionEntity mex = setupMock() def data = initValidateSDNCResp(mex) def resp = initValidateSDNCResp_Resp(404) when(mex.getVariable(Prefix+"sdncRequestDataResponseCode")).thenReturn("404") DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "deactivate") verify(mex).setVariable("ARNotFoundInSDNC", true) verify(mex).setVariable("wasDeleted", false) } @Test // @Ignore public void validateSDNCResp_Fail404() { ExecutionEntity mex = setupMock() def data = initValidateSDNCResp(mex) def resp = initValidateSDNCResp_Resp(404) when(mex.getVariable(Prefix+"sdncRequestDataResponseCode")).thenReturn("404") DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() assertTrue(doBpmnError( { _ -> DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "create")})) } @Test // @Ignore public void validateSDNCResp_Deactivate() { ExecutionEntity mex = setupMock() def data = initValidateSDNCResp(mex) def resp = initValidateSDNCResp_Resp(200) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() assertTrue(doBpmnError( { _ -> DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "deactivate")})) } @Test // @Ignore public void validateSDNCResp_BpmnError() { ExecutionEntity mex = setupMock() initValidateSDNCResp(mex) def resp = initValidateSDNCResp_Resp(200) when(mex.getVariable("WorkflowException")).thenThrow(new BpmnError("expected exception")) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "create") })) } @Test // @Ignore public void validateSDNCResp_Ex() { ExecutionEntity mex = setupMock() initValidateSDNCResp(mex) def resp = initValidateSDNCResp_Resp(200) when(mex.getVariable("WorkflowException")).thenThrow(new RuntimeException("expected exception")) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "create") })) } @Test @Ignore public void deleteAaiAR() { ExecutionEntity mex = setupMock() initDeleteAaiAR(mex) MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoDeleteAllottedResourceTXC/arGetById.xml") MockDeleteAllottedResource(CUST, SVC, INST, ARID, VERS) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() DoDeleteAllottedResourceTXC.deleteAaiAR(mex) } @Test // @Ignore public void deleteAaiAR_NoArPath() { ExecutionEntity mex = setupMock() initDeleteAaiAR(mex) MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoDeleteAllottedResourceTXC/arGetById.xml") MockDeleteAllottedResource(CUST, SVC, INST, ARID, VERS) when(mex.getVariable("aaiARPath")).thenReturn("") DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() assertTrue(doBpmnError( { _ -> DoDeleteAllottedResourceTXC.deleteAaiAR(mex) })) } @Test // @Ignore public void deleteAaiAR_BpmnError() { ExecutionEntity mex = setupMock() initDeleteAaiAR(mex) MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoDeleteAllottedResourceTXC/arGetById.xml") MockDeleteAllottedResource(CUST, SVC, INST, ARID, VERS) when(mex.getVariable("aaiARPath")).thenThrow(new BpmnError("expected exception")) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() assertTrue(doBpmnError( { _ -> DoDeleteAllottedResourceTXC.deleteAaiAR(mex) })) } @Test // @Ignore public void deleteAaiAR_Ex() { ExecutionEntity mex = setupMock() initDeleteAaiAR(mex) MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoDeleteAllottedResourceTXC/arGetById.xml") MockDeleteAllottedResource(CUST, SVC, INST, ARID, VERS) when(mex.getVariable("aaiARPath")).thenThrow(new RuntimeException("expected exception")) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() assertTrue(doBpmnError( { _ -> DoDeleteAllottedResourceTXC.deleteAaiAR(mex) })) } private boolean checkMissingPreProcessRequest(String fieldnm) { ExecutionEntity mex = setupMock() initPreProcess(mex) DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC() when(mex.getVariable(fieldnm)).thenReturn("") return doBpmnError( { _ -> DoDeleteAllottedResourceTXC.preProcessRequest(mex) }) } private void initPreProcess(ExecutionEntity mex) { when(mex.getVariable(DBGFLAG)).thenReturn("true") when(mex.getVariable("mso.workflow.sdncadapter.callback")).thenReturn("sdncurn") when(mex.getVariable("serviceInstanceId")).thenReturn("sii") when(mex.getVariable("allottedResourceId")).thenReturn("ari") } private void initGetAaiAR(ExecutionEntity mex) { when(mex.getVariable(DBGFLAG)).thenReturn("true") when(mex.getVariable("allottedResourceType")).thenReturn("TXC") when(mex.getVariable("allottedResourceRole")).thenReturn("TXC") when(mex.getVariable("allottedResourceId")).thenReturn(ARID) when(mex.getVariable("CSI_service")).thenReturn(FileUtil.readResourceFile("__files/VCPE/DoDeleteAllottedResourceTXC/getAR.xml")) when(mex.getVariable("mso.workflow.global.default.aai.namespace")).thenReturn(UrnPropertiesReader.getVariable("mso.workflow.global.default.aai.namespace")) when(mex.getVariable("mso.workflow.global.default.aai.version")).thenReturn(UrnPropertiesReader.getVariable("mso.workflow.global.default.aai.version")) when(mex.getVariable("mso.workflow.default.aai.v8.nodes.query.uri")).thenReturn(UrnPropertiesReader.getVariable("mso.workflow.default.aai.v8.nodes-query.uri")) when(mex.getVariable("aai.endpoint")).thenReturn(aaiUriPfx) when(mex.getVariable("aaiARPath")).thenReturn("/business/customers/customer/"+CUST+"/service-subscriptions/service-subscription/"+SVC+"/service-instances/service-instance/"+INST+"/allotted-resources/allotted-resource/"+ARID) when(mex.getVariable("aaiAROrchStatus")).thenReturn("Active") } private initUpdateAaiAROrchStatus(ExecutionEntity mex) { when(mex.getVariable(DBGFLAG)).thenReturn("true") when(mex.getVariable("aaiARPath")).thenReturn("/business/customers/customer/"+CUST+"/service-subscriptions/service-subscription/"+SVC+"/service-instances/service-instance/"+INST+"/allotted-resources/allotted-resource/"+ARID) } private initBuildSDNCRequest(ExecutionEntity mex) { when(mex.getVariable(DBGFLAG)).thenReturn("true") when(mex.getVariable("allottedResourceId")).thenReturn("ari") when(mex.getVariable("serviceInstanceId")).thenReturn("sii") when(mex.getVariable("parentServiceInstanceId")).thenReturn("psii") when(mex.getVariable("subscriptionServiceType")).thenReturn("sst") when(mex.getVariable("globalCustomerId")).thenReturn("gci") when(mex.getVariable("sdncCallbackUrl")).thenReturn("scu") when(mex.getVariable("msoRequestId")).thenReturn("mri") } private initPreProcessSDNC(ExecutionEntity mex) { when(mex.getVariable(DBGFLAG)).thenReturn("true") } private initValidateSDNCResp(ExecutionEntity mex) { when(mex.getVariable(DBGFLAG)).thenReturn("true") when(mex.getVariable("prefix")).thenReturn(Prefix) when(mex.getVariable("SDNCA_SuccessIndicator")).thenReturn(true) } private String initValidateSDNCResp_Resp(int code) { return "<response-code>${code}</response-code>" } private initDeleteAaiAR(ExecutionEntity mex) { when(mex.getVariable(DBGFLAG)).thenReturn("true") when(mex.getVariable("aaiARPath")).thenReturn("/business/customers/customer/"+CUST+"/service-subscriptions/service-subscription/"+SVC+"/service-instances/service-instance/"+INST+"/allotted-resources/allotted-resource/"+ARID) when(mex.getVariable("aaiARResourceVersion")).thenReturn("myvers") when(mex.getVariable("aai.endpoint")).thenReturn(aaiUriPfx) } }