Change the header to SO
[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  */
54 public class DeleteVnfInfraTest extends WorkflowTest {
55
56         private String deleteVnfInfraRequest;
57         private String deleteVnfInfraRequestCascadeDelete;
58
59         public DeleteVnfInfraTest () throws IOException {
60                 deleteVnfInfraRequest = FileUtil.readResourceFile("__files/InfrastructureFlows/CreateVnfInfraRequest.json");
61                 deleteVnfInfraRequestCascadeDelete = FileUtil.readResourceFile("__files/InfrastructureFlows/DeleteVnfInfraRequestCascadeDelete.json");
62         }
63
64         @Test
65         @Deployment(resources = {"subprocess/GenericGetVnf.bpmn",  
66                                                         "subprocess/GenericDeleteVnf.bpmn", 
67                                                         "subprocess/DoDeleteVnf.bpmn", 
68                                                         "process/DeleteVnfInfra.bpmn", 
69                                                         "subprocess/FalloutHandler.bpmn", 
70                                                         "subprocess/CompleteMsoProcess.bpmn"})
71         public void testDeleteVnfInfra_success() throws Exception{
72                 
73                 stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/testVnfId123[?]depth=1"))
74                                 .willReturn(aResponse()
75                                                 .withStatus(200)
76                                                 .withHeader("Content-Type", "text/xml")
77                                                 .withBodyFile("GenericFlows/getGenericVnfByNameResponse.xml")));
78                 
79                 MockDeleteGenericVnf();
80                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
81
82                 Map<String, String> variables = new HashMap<String, String>();
83                 setVariables(variables, deleteVnfInfraRequest, "testRequestId123", "MIS%2F1604%2F0026%2FSW_INTERNET");
84                 WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "DeleteVnfInfra", variables);
85                 waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());
86                 Object cascadeDelete = BPMNUtil.getRawVariable(processEngineRule, "DeleteVnfInfra", "DELVI_cascadeDelete");
87                 String found = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnf", "GENGV_FoundIndicator") ;
88                 String inUse = BPMNUtil.getVariable(processEngineRule, "DeleteVnfInfra", "DELVI_vnfInUse");
89                 String response = BPMNUtil.getVariable(processEngineRule, "DeleteVnfInfra", "WorkflowResponse");
90                 String workflowException = BPMNUtil.getVariable(processEngineRule, "DeleteVnfInfra", "WorkflowException");
91
92                 assertEquals(false, cascadeDelete);
93                 assertEquals("true", found);
94                 assertEquals("false", inUse);
95                 assertEquals("Success", response);
96                 assertEquals(null, workflowException);
97         }
98         
99         @Test
100         @Ignore // DoDeleteVnfAndModules not complete yet
101         @Deployment(resources = {"subprocess/GenericGetVnf.bpmn", 
102                                                         "subprocess/GenericDeleteVnf.bpmn", 
103                                                         "subprocess/DoDeleteVnfAndModules.bpmn", 
104                                                         "process/DeleteVnfInfra.bpmn", 
105                                                         "subprocess/FalloutHandler.bpmn", 
106                                                         "subprocess/CompleteMsoProcess.bpmn"})
107         public void testDeleteVnfInfra_cascadeDelete() throws Exception{
108                 MockGetGenericVnfById();
109                 MockDeleteGenericVnf();
110                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
111
112                 Map<String, String> variables = new HashMap<String, String>();
113                 setVariables(variables, deleteVnfInfraRequestCascadeDelete, "testRequestId123", "MIS%2F1604%2F0026%2FSW_INTERNET");
114                 WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "DeleteVnfInfra", variables);
115                 waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());
116
117                 String found = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnf", "GENGV_FoundIndicator") ;
118                 String inUse = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnf", "DoDVNF_vnfInUse");
119                 String response = BPMNUtil.getVariable(processEngineRule, "DeleteVnfInfra", "WorkflowResponse");
120                 String workflowException = BPMNUtil.getVariable(processEngineRule, "DeleteVnfInfra", "WorkflowException");
121                 Object cascadeDelete = BPMNUtil.getRawVariable(processEngineRule, "DeleteVnfInfra", "DELVI_cascadeDelete");
122
123                 assertEquals(true, cascadeDelete);
124                 assertEquals("true", found);
125                 assertEquals("false", inUse);
126                 assertEquals("Success", response);
127                 assertEquals(null, workflowException);
128         }
129
130         @Test
131         @Deployment(resources = {"subprocess/GenericGetVnf.bpmn", 
132                                                         "subprocess/GenericDeleteVnf.bpmn", 
133                                                         "subprocess/DoDeleteVnf.bpmn", 
134                                                         "process/DeleteVnfInfra.bpmn", 
135                                                         "subprocess/FalloutHandler.bpmn", 
136                                                         "subprocess/CompleteMsoProcess.bpmn"})
137         public void testDeleteVnfInfra_success_vnfNotFound() throws Exception{
138
139                 MockDeleteGenericVnf_404();
140                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
141
142                 Map<String, String> variables = new HashMap<String, String>();
143                 setVariables(variables, deleteVnfInfraRequest, "testRequestId123", "MIS%2F1604%2F0026%2FSW_INTERNET");
144
145                 WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "DeleteVnfInfra", variables);
146                 waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());
147
148                 String found = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnf", "GENGV_FoundIndicator") ;
149                 String inUse = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnf", "DoDVNF_vnfInUse");
150                 String response = BPMNUtil.getVariable(processEngineRule, "DeleteVnfInfra", "WorkflowResponse");
151                 String workflowException = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnf", "WorkflowException");
152
153                 assertEquals("false", found);
154                 assertEquals("false", inUse);
155                 assertEquals("Success", response);
156                 assertEquals(null, workflowException);
157         }
158
159         @Test
160         @Deployment(resources = {"subprocess/GenericGetVnf.bpmn",  
161                                                         "subprocess/GenericDeleteVnf.bpmn", 
162                                                         "subprocess/DoDeleteVnf.bpmn", 
163                                                         "process/DeleteVnfInfra.bpmn", 
164                                                         "subprocess/FalloutHandler.bpmn", 
165                                                         "subprocess/CompleteMsoProcess.bpmn"})
166         public void testDeleteVnfInfra_error_vnfInUse() throws Exception{
167
168                 stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/testVnfId123[?]depth=1"))
169                                 .willReturn(aResponse()
170                                                 .withStatus(200)
171                                                 .withHeader("Content-Type", "text/xml")
172                                                 .withBodyFile("GenericFlows/getGenericVnfResponse_hasRelationships.xml")));
173                 MockDeleteGenericVnf();
174                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
175
176                 Map<String, String> variables = new HashMap<String, String>();
177                 setVariables(variables, deleteVnfInfraRequest, "testRequestId123", "MIS%2F1604%2F0026%2FSW_INTERNET");
178
179                 WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "DeleteVnfInfra", variables);
180                 waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());
181
182                 String found = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnf", "GENGV_FoundIndicator") ;
183                 String inUse = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnf", "DoDVNF_vnfInUse");
184                 String workflowException = BPMNUtil.getVariable(processEngineRule, "DeleteVnfInfra", "SavedWorkflowException1");
185
186                 String exWfex = "WorkflowException[processKey=DoDeleteVnf,errorCode=5000,errorMessage=Can't Delete Generic Vnf. Generic Vnf is still in use.]";
187
188                 assertEquals("true", found);
189                 assertEquals("true", inUse);
190                 assertEquals(exWfex, workflowException);
191         }
192
193         private void setVariables(Map<String, String> variables, String request, String requestId, String siId) {
194                 variables.put("isDebugLogEnabled", "true");
195                 variables.put("bpmnRequest", request);
196                 variables.put("mso-request-id", requestId);
197                 variables.put("serviceInstanceId",siId);
198                 variables.put("vnfId","testVnfId123");
199         }
200 }