033f77c1063d2a5ad05715c87c9c741b37639153
[so.git] /
1 /*-\r
2  * ============LICENSE_START=======================================================\r
3  * ONAP - SO\r
4  * ================================================================================\r
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
6  * ================================================================================\r
7  * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * you may not use this file except in compliance with the License.\r
9  * You may obtain a copy of the License at\r
10  *\r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  *\r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  * ============LICENSE_END=========================================================\r
19  */\r
20 \r
21 package org.openecomp.mso.bpmn.infrastructure;\r
22 \r
23 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;\r
24 import static com.github.tomakehurst.wiremock.client.WireMock.containing;\r
25 import static com.github.tomakehurst.wiremock.client.WireMock.delete;\r
26 import static com.github.tomakehurst.wiremock.client.WireMock.post;\r
27 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;\r
28 import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;\r
29 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;\r
30 import static org.junit.Assert.assertEquals;\r
31 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIDeleteVfModule;\r
32 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIGenericVnfSearch;\r
33 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteGenericVnf;\r
34 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById;\r
35 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;\r
36 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;\r
37 \r
38 import java.io.IOException;\r
39 import java.util.HashMap;\r
40 import java.util.Map;\r
41 import java.util.UUID;\r
42 \r
43 import org.camunda.bpm.engine.test.Deployment;\r
44 import org.junit.Assert;\r
45 import org.junit.Ignore;\r
46 import org.junit.Test;\r
47 import org.openecomp.mso.bpmn.common.BPMNUtil;\r
48 import org.openecomp.mso.bpmn.common.WorkflowTest;\r
49 import org.openecomp.mso.bpmn.mock.FileUtil;\r
50 \r
51 public class DoDeleteVnfAndModulesTest extends WorkflowTest {\r
52     private final CallbackSet callbacks = new CallbackSet();\r
53     private static final String EOL = "\n";\r
54     private final String vnfAdapterDeleteCallback =\r
55             "<deleteVfModuleResponse>" + EOL +\r
56                     "    <vnfId>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnfId>" + EOL +\r
57                     "    <vfModuleId>973ed047-d251-4fb9-bf1a-65b8949e0a73</vfModuleId>" + EOL +\r
58                     "    <vfModuleDeleted>true</vfModuleDeleted>" + EOL +\r
59                     "    <messageId>{{MESSAGE-ID}}</messageId>" + EOL +\r
60                     "</deleteVfModuleResponse>" + EOL;\r
61 \r
62     public DoDeleteVnfAndModulesTest() throws IOException {\r
63         callbacks.put("deactivate", FileUtil.readResourceFile(\r
64                 "__files/VfModularity/SDNCTopologyActivateCallback.xml"));\r
65         callbacks.put("unassign", FileUtil.readResourceFile(\r
66                 "__files/VfModularity/SDNCTopologyActivateCallback.xml"));\r
67         callbacks.put("vnfDelete", vnfAdapterDeleteCallback);\r
68 \r
69     }\r
70 \r
71     @Test\r
72     @Deployment(resources = {"subprocess/DoDeleteVnfAndModules.bpmn", "subprocess/SDNCAdapterV1.bpmn", "subprocess/GenericGetVnf.bpmn", "subprocess/GenericDeleteVnf.bpmn", "subprocess/DoDeleteVnf.bpmn", "subprocess/DoDeleteVfModule.bpmn"})\r
73     public void testDoDeleteVnfAndModules_successVnfOnly() throws Exception {\r
74         MockGetGenericVnfById("testVnfId123.*", "GenericFlows/getGenericVnfByNameResponse.xml");\r
75         MockDeleteGenericVnf("testVnfId123", "testReVer123");\r
76         mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");\r
77         mockSDNCAdapter(200);\r
78 \r
79         String businessKey = UUID.randomUUID().toString();\r
80         Map<String, Object> variables = new HashMap<>();\r
81         setVariablesVnfOnly(variables);\r
82         invokeSubProcess("DoDeleteVnfAndModules", businessKey, variables);\r
83 \r
84         injectSDNCCallbacks(callbacks, "deactivate");\r
85         injectSDNCCallbacks(callbacks, "unassign");\r
86 \r
87         waitForProcessEnd(businessKey, 10000);\r
88 \r
89         Assert.assertTrue(isProcessEnded(businessKey));\r
90 \r
91         String workflowException = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnfAndModules", "WorkflowException");\r
92 \r
93         assertEquals(null, workflowException);\r
94     }\r
95 \r
96 \r
97     private void setVariablesVnfOnly(Map<String, Object> variables) {\r
98         variables.put("mso-request-id", "testRequestId123");\r
99         variables.put("isDebugLogEnabled", "true");\r
100         variables.put("vnfId", "testVnfId123");\r
101         variables.put("serviceInstanceId", "MIS%2F1604%2F0026%2FSW_INTERNET");\r
102         //variables.put("vnfName", "testVnfName123");\r
103         variables.put("disableRollback", "true");\r
104         variables.put("msoRequestId", "testVnfId123");\r
105         variables.put("testVnfId", "testVnfId123");\r
106         //variables.put("vnfType", "STMTN");\r
107         variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");\r
108         String vnfModelInfo = "{ " + "\"modelType\": \"vnf\"," +\r
109                 "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +\r
110                 "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +\r
111                 "\"modelName\": \"vSAMP12\"," +\r
112                 "\"modelVersion\": \"1.0\"," +\r
113                 "\"modelCustomizationUuid\": \"MODEL-ID-1234\"," +\r
114                 "}";\r
115         //variables.put("vnfModelInfo", vnfModelInfo);\r
116 \r
117         variables.put("lcpCloudRegionId", "mdt1");\r
118         variables.put("tenantId", "88a6ca3ee0394ade9403f075db23167e");\r
119 \r
120         String serviceModelInfo = "{ " + "\"modelType\": \"service\"," +\r
121                 "\"modelInvariantUuid\": \"995256d2-5a33-55df-13ab-12abad84e7ff\"," +\r
122                 "\"modelUuid\": \"ab6478e5-ea33-3346-ac12-ab121484a3fe\"," +\r
123                 "\"modelName\": \"ServicevSAMP12\"," +\r
124                 "\"modelVersion\": \"1.0\"," +\r
125                 "}";\r
126         //variables.put("serviceModelInfo", serviceModelInfo);\r
127         variables.put("globalSubscriberId", "MSO-1610");\r
128         variables.put("sdncVersion", "1707");\r
129 \r
130     }\r
131 \r
132     @Test\r
133     @Deployment(resources = {"subprocess/DoDeleteVnfAndModules.bpmn", "subprocess/SDNCAdapterV1.bpmn", "subprocess/GenericGetVnf.bpmn", "subprocess/GenericDeleteVnf.bpmn", "subprocess/DoDeleteVnf.bpmn", "subprocess/DoDeleteVfModuleFromVnf.bpmn", "subprocess/VnfAdapterRestV1.bpmn", "subprocess/DeleteAAIVfModule.bpmn"})\r
134     public void testDoDeleteVnfAndModules_successVnfAndModules() throws Exception {\r
135         MockAAIGenericVnfSearch();\r
136         MockGetGenericVnfById("testVnfId123.*", "GenericFlows/getGenericVnfByNameResponse.xml");\r
137         MockDeleteGenericVnf("testVnfId123", "testReVer123");\r
138         mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");\r
139         mockSDNCAdapter(200);\r
140         MockDoDeleteVfModule_SDNCSuccess();\r
141         MockDoDeleteVfModule_DeleteVNFSuccess();\r
142         MockAAIDeleteVfModule();\r
143 \r
144         String businessKey = UUID.randomUUID().toString();\r
145         Map<String, Object> variables = new HashMap<>();\r
146         setVariablesVnfAndModules(variables);\r
147         invokeSubProcess("DoDeleteVnfAndModules", businessKey, variables);\r
148 \r
149         injectSDNCCallbacks(callbacks, "deactivate");\r
150         injectSDNCCallbacks(callbacks, "deactivate");\r
151         injectVNFRestCallbacks(callbacks, "vnfDelete");\r
152         injectSDNCCallbacks(callbacks, "unassign");\r
153         MockGetGenericVnfById("a27ce5a9-29c4-4c22-a017-6615ac73c721", "GenericFlows/getGenericVnfByNameResponse.xml");\r
154         injectSDNCCallbacks(callbacks, "unassign");\r
155         //MockGetGenericVnfById("a27ce5a9-29c4-4c22-a017-6615ac73c721", "GenericFlows/getGenericVnfByNameResponse.xml");\r
156 \r
157         waitForProcessEnd(businessKey, 10000);\r
158 \r
159         Assert.assertTrue(isProcessEnded(businessKey));\r
160 \r
161         String workflowException = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnfAndModules", "WorkflowException");\r
162 \r
163         assertEquals(null, workflowException);\r
164     }\r
165 \r
166 \r
167     private void setVariablesVnfAndModules(Map<String, Object> variables) {\r
168         variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
169         variables.put("isDebugLogEnabled", "true");\r
170         variables.put("vnfId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
171         variables.put("serviceInstanceId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
172 \r
173         variables.put("msoRequestId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
174         //variables.put("testVnfId","testVnfId123");\r
175 \r
176         variables.put("lcpCloudRegionId", "RDM2WAGPLCP");\r
177         variables.put("tenantId", "fba1bd1e195a404cacb9ce17a9b2b421");\r
178 \r
179         variables.put("sdncVersion", "1707");\r
180 \r
181     }\r
182 \r
183 \r
184     public static void MockDoDeleteVfModule_SDNCSuccess() {\r
185         stubFor(post(urlEqualTo("/SDNCAdapter"))\r
186                 .withRequestBody(containing("SvcAction>deactivate"))\r
187                 .willReturn(aResponse()\r
188                         .withStatus(200)\r
189                         .withHeader("Content-Type", "text/xml")\r
190                         .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));\r
191         stubFor(post(urlEqualTo("/SDNCAdapter"))\r
192                 .withRequestBody(containing("SvcAction>unassign"))\r
193                 .willReturn(aResponse()\r
194                         .withStatus(200)\r
195                         .withHeader("Content-Type", "text/xml")\r
196                         .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));\r
197     }\r
198 \r
199 \r
200     public static void MockDoDeleteVfModule_DeleteVNFSuccess() {\r
201         stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))\r
202                 .willReturn(aResponse()\r
203                         .withStatus(202)\r
204                         .withHeader("Content-Type", "application/xml")));\r
205         stubFor(delete(urlMatching("/vnfs/v1/volume-groups/78987"))\r
206                 .willReturn(aResponse()\r
207                         .withStatus(202)\r
208                         .withHeader("Content-Type", "application/xml")));\r
209     }\r
210 }