7c79625439504931c3ad49e59fe55ef98ba17648
[so.git] / bpmn / MSOInfrastructureBPMN / src / test / java / org / openecomp / mso / bpmn / infrastructure / DeleteVnfInfraTest.java
1 /*
2  * © 2014 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
3  */
4 /*- 
5  * ============LICENSE_START======================================================= 
6  * ONAP - SO 
7  * ================================================================================ 
8  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. 
9  * ================================================================================ 
10  * Licensed under the Apache License, Version 2.0 (the "License"); 
11  * you may not use this file except in compliance with the License. 
12  * You may obtain a copy of the License at 
13  * 
14  *      http://www.apache.org/licenses/LICENSE-2.0 
15  * 
16  * Unless required by applicable law or agreed to in writing, software 
17  * distributed under the License is distributed on an "AS IS" BASIS, 
18  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
19  * See the License for the specific language governing permissions and 
20  * limitations under the License. 
21  * ============LICENSE_END========================================================= 
22  */
23
24 package org.openecomp.mso.bpmn.infrastructure;
25
26 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
27 import static com.github.tomakehurst.wiremock.client.WireMock.get;
28 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
29 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
30 import static org.junit.Assert.assertEquals;
31 import static org.openecomp.mso.bpmn.common.BPMNUtil.executeWorkFlow;
32 import static org.openecomp.mso.bpmn.common.BPMNUtil.waitForWorkflowToFinish;
33 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
34 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteGenericVnf;
35 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteGenericVnf_404;
36 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById;
37
38 import java.io.IOException;
39 import java.util.HashMap;
40 import java.util.Map;
41
42 import org.camunda.bpm.engine.test.Deployment;
43 import org.junit.Ignore;
44 import org.junit.Test;
45 import org.openecomp.mso.bpmn.common.BPMNUtil;
46 import org.openecomp.mso.bpmn.common.WorkflowTest;
47 import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;
48 import org.openecomp.mso.bpmn.mock.FileUtil;
49
50 /**
51  * Please describe the DeleteVnfInfra.java class
52  */
53 public class DeleteVnfInfraTest extends WorkflowTest {
54
55     private String deleteVnfInfraRequest;
56     private String deleteVnfInfraRequestCascadeDelete;
57
58     public DeleteVnfInfraTest() throws IOException {
59         deleteVnfInfraRequest = FileUtil.readResourceFile("__files/InfrastructureFlows/CreateVnfInfraRequest.json");
60         deleteVnfInfraRequestCascadeDelete = FileUtil.readResourceFile("__files/InfrastructureFlows/DeleteVnfInfraRequestCascadeDelete.json");
61     }
62
63     @Test
64     @Deployment(resources = {"subprocess/GenericGetVnf.bpmn",
65             "subprocess/GenericDeleteVnf.bpmn",
66             "subprocess/DoDeleteVnf.bpmn",
67             "process/DeleteVnfInfra.bpmn",
68             "subprocess/FalloutHandler.bpmn",
69             "subprocess/CompleteMsoProcess.bpmn"})
70     public void testDeleteVnfInfra_success() throws Exception {
71
72         stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/testVnfId123[?]depth=1"))
73                 .willReturn(aResponse()
74                         .withStatus(200)
75                         .withHeader("Content-Type", "text/xml")
76                         .withBodyFile("GenericFlows/getGenericVnfByNameResponse.xml")));
77
78         MockDeleteGenericVnf();
79         mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
80
81         Map<String, String> variables = new HashMap<>();
82         setVariables(variables, deleteVnfInfraRequest, "testRequestId123", "MIS%2F1604%2F0026%2FSW_INTERNET");
83         WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "DeleteVnfInfra", variables);
84         waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());
85         Object cascadeDelete = BPMNUtil.getRawVariable(processEngineRule, "DeleteVnfInfra", "DELVI_cascadeDelete");
86         String found = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnf", "GENGV_FoundIndicator");
87         String inUse = BPMNUtil.getVariable(processEngineRule, "DeleteVnfInfra", "DELVI_vnfInUse");
88         String response = BPMNUtil.getVariable(processEngineRule, "DeleteVnfInfra", "WorkflowResponse");
89         String workflowException = BPMNUtil.getVariable(processEngineRule, "DeleteVnfInfra", "WorkflowException");
90
91         assertEquals(false, cascadeDelete);
92         assertEquals("true", found);
93         assertEquals("false", inUse);
94         assertEquals("Success", response);
95         assertEquals(null, workflowException);
96     }
97
98     @Test
99     @Ignore // DoDeleteVnfAndModules not complete yet
100     @Deployment(resources = {"subprocess/GenericGetVnf.bpmn",
101             "subprocess/GenericDeleteVnf.bpmn",
102             "subprocess/DoDeleteVnfAndModules.bpmn",
103             "process/DeleteVnfInfra.bpmn",
104             "subprocess/FalloutHandler.bpmn",
105             "subprocess/CompleteMsoProcess.bpmn"})
106     public void testDeleteVnfInfra_cascadeDelete() throws Exception {
107         MockGetGenericVnfById();
108         MockDeleteGenericVnf();
109         mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
110
111         Map<String, String> variables = new HashMap<>();
112         setVariables(variables, deleteVnfInfraRequestCascadeDelete, "testRequestId123", "MIS%2F1604%2F0026%2FSW_INTERNET");
113         WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "DeleteVnfInfra", variables);
114         waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());
115
116         String found = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnf", "GENGV_FoundIndicator");
117         String inUse = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnf", "DoDVNF_vnfInUse");
118         String response = BPMNUtil.getVariable(processEngineRule, "DeleteVnfInfra", "WorkflowResponse");
119         String workflowException = BPMNUtil.getVariable(processEngineRule, "DeleteVnfInfra", "WorkflowException");
120         Object cascadeDelete = BPMNUtil.getRawVariable(processEngineRule, "DeleteVnfInfra", "DELVI_cascadeDelete");
121
122         assertEquals(true, cascadeDelete);
123         assertEquals("true", found);
124         assertEquals("false", inUse);
125         assertEquals("Success", response);
126         assertEquals(null, workflowException);
127     }
128
129     @Test
130     @Deployment(resources = {"subprocess/GenericGetVnf.bpmn",
131             "subprocess/GenericDeleteVnf.bpmn",
132             "subprocess/DoDeleteVnf.bpmn",
133             "process/DeleteVnfInfra.bpmn",
134             "subprocess/FalloutHandler.bpmn",
135             "subprocess/CompleteMsoProcess.bpmn"})
136     public void testDeleteVnfInfra_success_vnfNotFound() throws Exception {
137
138         MockDeleteGenericVnf_404();
139         mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
140
141         Map<String, String> variables = new HashMap<>();
142         setVariables(variables, deleteVnfInfraRequest, "testRequestId123", "MIS%2F1604%2F0026%2FSW_INTERNET");
143
144         WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "DeleteVnfInfra", variables);
145         waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());
146
147         String found = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnf", "GENGV_FoundIndicator");
148         String inUse = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnf", "DoDVNF_vnfInUse");
149         String response = BPMNUtil.getVariable(processEngineRule, "DeleteVnfInfra", "WorkflowResponse");
150         String workflowException = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnf", "WorkflowException");
151
152         assertEquals("false", found);
153         assertEquals("false", inUse);
154         assertEquals("Success", response);
155         assertEquals(null, workflowException);
156     }
157
158     @Test
159     @Deployment(resources = {"subprocess/GenericGetVnf.bpmn",
160             "subprocess/GenericDeleteVnf.bpmn",
161             "subprocess/DoDeleteVnf.bpmn",
162             "process/DeleteVnfInfra.bpmn",
163             "subprocess/FalloutHandler.bpmn",
164             "subprocess/CompleteMsoProcess.bpmn"})
165     public void testDeleteVnfInfra_error_vnfInUse() throws Exception {
166
167         stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/testVnfId123[?]depth=1"))
168                 .willReturn(aResponse()
169                         .withStatus(200)
170                         .withHeader("Content-Type", "text/xml")
171                         .withBodyFile("GenericFlows/getGenericVnfResponse_hasRelationships.xml")));
172         MockDeleteGenericVnf();
173         mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
174
175         Map<String, String> variables = new HashMap<>();
176         setVariables(variables, deleteVnfInfraRequest, "testRequestId123", "MIS%2F1604%2F0026%2FSW_INTERNET");
177
178         WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "DeleteVnfInfra", variables);
179         waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());
180
181         String found = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnf", "GENGV_FoundIndicator");
182         String inUse = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnf", "DoDVNF_vnfInUse");
183         String workflowException = BPMNUtil.getVariable(processEngineRule, "DeleteVnfInfra", "SavedWorkflowException1");
184
185         String exWfex = "WorkflowException[processKey=DoDeleteVnf,errorCode=5000,errorMessage=Can't Delete Generic Vnf. Generic Vnf is still in use.]";
186
187         assertEquals("true", found);
188         assertEquals("true", inUse);
189         assertEquals(exWfex, workflowException);
190     }
191
192     private void setVariables(Map<String, String> variables, String request, String requestId, String siId) {
193         variables.put("isDebugLogEnabled", "true");
194         variables.put("bpmnRequest", request);
195         variables.put("mso-request-id", requestId);
196         variables.put("serviceInstanceId", siId);
197         variables.put("vnfId", "testVnfId123");
198     }
199 }