1 package org.openecomp.mso.bpmn.infrastructure;
\r
3 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
\r
4 import static com.github.tomakehurst.wiremock.client.WireMock.containing;
\r
5 import static com.github.tomakehurst.wiremock.client.WireMock.delete;
\r
6 import static com.github.tomakehurst.wiremock.client.WireMock.post;
\r
7 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
\r
8 import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
\r
9 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
\r
10 import static org.junit.Assert.assertEquals;
\r
11 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIDeleteVfModule;
\r
12 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIGenericVnfSearch;
\r
13 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteGenericVnf;
\r
14 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById;
\r
15 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
\r
16 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
\r
18 import java.io.IOException;
\r
19 import java.util.HashMap;
\r
20 import java.util.Map;
\r
21 import java.util.UUID;
\r
23 import org.camunda.bpm.engine.test.Deployment;
\r
24 import org.junit.Assert;
\r
25 import org.junit.Ignore;
\r
26 import org.junit.Test;
\r
27 import org.openecomp.mso.bpmn.common.BPMNUtil;
\r
28 import org.openecomp.mso.bpmn.common.WorkflowTest;
\r
29 import org.openecomp.mso.bpmn.mock.FileUtil;
\r
31 public class DoDeleteVnfAndModulesTest extends WorkflowTest {
\r
32 private final CallbackSet callbacks = new CallbackSet();
\r
33 private static final String EOL = "\n";
\r
34 private final String vnfAdapterDeleteCallback =
\r
35 "<deleteVfModuleResponse>" + EOL +
\r
36 " <vnfId>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnfId>" + EOL +
\r
37 " <vfModuleId>973ed047-d251-4fb9-bf1a-65b8949e0a73</vfModuleId>" + EOL +
\r
38 " <vfModuleDeleted>true</vfModuleDeleted>" + EOL +
\r
39 " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
\r
40 "</deleteVfModuleResponse>" + EOL;
\r
42 public DoDeleteVnfAndModulesTest () throws IOException {
\r
43 callbacks.put("deactivate", FileUtil.readResourceFile(
\r
44 "__files/VfModularity/SDNCTopologyActivateCallback.xml"));
\r
45 callbacks.put("unassign", FileUtil.readResourceFile(
\r
46 "__files/VfModularity/SDNCTopologyActivateCallback.xml"));
\r
47 callbacks.put("vnfDelete", vnfAdapterDeleteCallback);
\r
52 @Deployment(resources = {"subprocess/DoDeleteVnfAndModules.bpmn", "subprocess/SDNCAdapterV1.bpmn", "subprocess/GenericGetVnf.bpmn", "subprocess/GenericDeleteVnf.bpmn", "subprocess/DoDeleteVnf.bpmn", "subprocess/DoDeleteVfModule.bpmn"})
\r
53 public void testDoDeleteVnfAndModules_successVnfOnly() throws Exception{
\r
54 MockGetGenericVnfById("testVnfId123.*", "GenericFlows/getGenericVnfByNameResponse.xml");
\r
55 MockDeleteGenericVnf("testVnfId123", "testReVer123");
\r
56 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
\r
57 mockSDNCAdapter(200);
\r
59 String businessKey = UUID.randomUUID().toString();
\r
60 Map<String, Object> variables = new HashMap<String, Object>();
\r
61 setVariablesVnfOnly(variables);
\r
62 invokeSubProcess("DoDeleteVnfAndModules", businessKey, variables);
\r
64 injectSDNCCallbacks(callbacks, "deactivate");
\r
65 injectSDNCCallbacks(callbacks, "unassign");
\r
67 waitForProcessEnd(businessKey, 10000);
\r
69 Assert.assertTrue(isProcessEnded(businessKey));
\r
71 String workflowException = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnfAndModules", "WorkflowException");
\r
73 assertEquals(null, workflowException);
\r
77 private void setVariablesVnfOnly(Map<String, Object> variables) {
\r
78 variables.put("mso-request-id", "testRequestId123");
\r
79 variables.put("isDebugLogEnabled", "true");
\r
80 variables.put("vnfId","testVnfId123");
\r
81 variables.put("serviceInstanceId", "MIS%2F1604%2F0026%2FSW_INTERNET");
\r
82 //variables.put("vnfName", "testVnfName123");
\r
83 variables.put("disableRollback", "true");
\r
84 variables.put("msoRequestId", "testVnfId123");
\r
85 variables.put("testVnfId","testVnfId123");
\r
86 //variables.put("vnfType", "STMTN");
\r
87 variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");
\r
88 String vnfModelInfo = "{ "+ "\"modelType\": \"vnf\"," +
\r
89 "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +
\r
90 "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
\r
91 "\"modelName\": \"vSAMP12\"," +
\r
92 "\"modelVersion\": \"1.0\"," +
\r
93 "\"modelCustomizationUuid\": \"MODEL-ID-1234\"," +
\r
95 //variables.put("vnfModelInfo", vnfModelInfo);
\r
97 variables.put("lcpCloudRegionId", "mdt1");
\r
98 variables.put("tenantId", "88a6ca3ee0394ade9403f075db23167e");
\r
100 String serviceModelInfo = "{ "+ "\"modelType\": \"service\"," +
\r
101 "\"modelInvariantUuid\": \"995256d2-5a33-55df-13ab-12abad84e7ff\"," +
\r
102 "\"modelUuid\": \"ab6478e5-ea33-3346-ac12-ab121484a3fe\"," +
\r
103 "\"modelName\": \"ServicevSAMP12\"," +
\r
104 "\"modelVersion\": \"1.0\"," +
\r
106 //variables.put("serviceModelInfo", serviceModelInfo);
\r
107 variables.put("globalSubscriberId", "MSO-1610");
\r
108 variables.put("sdncVersion", "1707");
\r
113 @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
114 public void testDoDeleteVnfAndModules_successVnfAndModules() throws Exception{
\r
115 MockAAIGenericVnfSearch();
\r
116 MockGetGenericVnfById("testVnfId123.*", "GenericFlows/getGenericVnfByNameResponse.xml");
\r
117 MockDeleteGenericVnf("testVnfId123", "testReVer123");
\r
118 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
\r
119 mockSDNCAdapter(200);
\r
120 MockDoDeleteVfModule_SDNCSuccess();
\r
121 MockDoDeleteVfModule_DeleteVNFSuccess();
\r
122 MockAAIDeleteVfModule();
\r
124 String businessKey = UUID.randomUUID().toString();
\r
125 Map<String, Object> variables = new HashMap<String, Object>();
\r
126 setVariablesVnfAndModules(variables);
\r
127 invokeSubProcess("DoDeleteVnfAndModules", businessKey, variables);
\r
129 injectSDNCCallbacks(callbacks, "deactivate");
\r
130 injectSDNCCallbacks(callbacks, "deactivate");
\r
131 injectVNFRestCallbacks(callbacks, "vnfDelete");
\r
132 injectSDNCCallbacks(callbacks, "unassign");
\r
133 MockGetGenericVnfById("a27ce5a9-29c4-4c22-a017-6615ac73c721", "GenericFlows/getGenericVnfByNameResponse.xml");
\r
134 injectSDNCCallbacks(callbacks, "unassign");
\r
135 //MockGetGenericVnfById("a27ce5a9-29c4-4c22-a017-6615ac73c721", "GenericFlows/getGenericVnfByNameResponse.xml");
\r
137 waitForProcessEnd(businessKey, 10000);
\r
139 Assert.assertTrue(isProcessEnded(businessKey));
\r
141 String workflowException = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnfAndModules", "WorkflowException");
\r
143 assertEquals(null, workflowException);
\r
147 private void setVariablesVnfAndModules(Map<String, Object> variables) {
\r
148 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
149 variables.put("isDebugLogEnabled", "true");
\r
150 variables.put("vnfId","a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
151 variables.put("serviceInstanceId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
153 variables.put("msoRequestId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
154 //variables.put("testVnfId","testVnfId123");
\r
156 variables.put("lcpCloudRegionId", "RDM2WAGPLCP");
\r
157 variables.put("tenantId", "fba1bd1e195a404cacb9ce17a9b2b421");
\r
159 variables.put("sdncVersion", "1707");
\r
164 public static void MockDoDeleteVfModule_SDNCSuccess() {
\r
165 stubFor(post(urlEqualTo("/SDNCAdapter"))
\r
166 .withRequestBody(containing("SvcAction>deactivate"))
\r
167 .willReturn(aResponse()
\r
169 .withHeader("Content-Type", "text/xml")
\r
170 .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));
\r
171 stubFor(post(urlEqualTo("/SDNCAdapter"))
\r
172 .withRequestBody(containing("SvcAction>unassign"))
\r
173 .willReturn(aResponse()
\r
175 .withHeader("Content-Type", "text/xml")
\r
176 .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));
\r
180 public static void MockDoDeleteVfModule_DeleteVNFSuccess() {
\r
181 stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))
\r
182 .willReturn(aResponse()
\r
184 .withHeader("Content-Type", "application/xml")));
\r
185 stubFor(delete(urlMatching("/vnfs/v1/volume-groups/78987"))
\r
186 .willReturn(aResponse()
\r
188 .withHeader("Content-Type", "application/xml")));
\r