AT&T 1712 and 1802 release code
[so.git] / bpmn / MSOInfrastructureBPMN / src / test / java / org / openecomp / mso / bpmn / vcpe / CreateVcpeResCustServiceTest.java
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20 package org.openecomp.mso.bpmn.vcpe;
21
22 import static org.junit.Assert.assertEquals;
23 import static org.junit.Assert.assertNotNull;
24 import static org.junit.Assert.assertTrue;
25 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteAllottedResource;
26 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetAllottedResource;
27 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetCustomer;
28 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
29 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
30 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
31 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutAllottedResource;
32 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutServiceInstance;
33 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogData;
34 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
35 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
36
37 import java.io.IOException;
38 import java.util.HashMap;
39 import java.util.Map;
40 import java.util.UUID;
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.mock.FileUtil;
47
48 public class CreateVcpeResCustServiceTest extends AbstractTestBase {
49
50         private static final String PROCNAME = "CreateVcpeResCustService";
51         private static final String Prefix = "CVRCS_";
52         
53         private final CallbackSet callbacks = new CallbackSet();
54         private final String request;
55         
56         public CreateVcpeResCustServiceTest() throws IOException {
57                 callbacks.put("assign", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyAssignCallback.xml"));
58                 callbacks.put("create", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyCreateCallback.xml"));
59                 callbacks.put("activate", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyActivateCallback.xml"));
60                 callbacks.put("queryTXC", FileUtil.readResourceFile("__files/VCPE/CreateVcpeResCustService/SDNCTopologyQueryTXCCallback.xml"));
61                 callbacks.put("queryBRG", FileUtil.readResourceFile("__files/VCPE/CreateVcpeResCustService/SDNCTopologyQueryBRGCallback.xml"));
62                 callbacks.put("deactivate", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyDeactivateCallback.xml"));
63                 callbacks.put("delete", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyDeleteCallback.xml"));
64                 callbacks.put("unassign", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyUnassignCallback.xml"));
65                 
66                 request = FileUtil.readResourceFile("__files/VCPE/CreateVcpeResCustService/requestNoSIName.json");
67         }
68         
69         @Test
70         @Ignore // 1802 merge
71         @Deployment(resources = {
72                         "process/CreateVcpeResCustService.bpmn",
73                         "subprocess/SDNCAdapterV1.bpmn",
74                         "subprocess/FalloutHandler.bpmn",
75                         "subprocess/GenericGetService.bpmn",
76                         "subprocess/GenericPutService.bpmn",
77                         "subprocess/BuildingBlock/DecomposeService.bpmn",
78             "subprocess/DoCreateServiceInstance.bpmn",
79                         "subprocess/DoCreateAllottedResourceTXC.bpmn",
80                         "subprocess/DoCreateAllottedResourceBRG.bpmn",
81             "subprocess/CompleteMsoProcess.bpmn",
82
83             // stubs
84                         "VCPE/stubprocess/Homing.bpmn",
85             "VCPE/stubprocess/DoCreateVnfAndModules.bpmn"})
86         
87         public void testCreateVcpeResCustService_Success() throws Exception {
88
89                 System.out.println("starting:  testCreateVcpeResCustService_Success\n");
90                 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "2", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesData.json");
91                 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesData.json");
92                 MockGetCustomer(CUST, "VCPE/CreateVcpeResCustService/getCustomer.xml");
93                 
94                 // TODO: the SI should NOT have to be URL-encoded yet again!
95                 MockPutServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
96                 MockGetServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
97                 
98                 MockNodeQueryServiceInstanceById(INST, "GenericFlows/getSIUrlById.xml");
99                 MockNodeQueryServiceInstanceById(PARENT_INST, "GenericFlows/getParentSIUrlById.xml");           
100                 MockGetServiceInstance(CUST, SVC, INST, "GenericFlows/getServiceInstance.xml");
101                 MockGetServiceInstance(CUST, SVC, PARENT_INST, "GenericFlows/getParentServiceInstance.xml");
102                 MockPutAllottedResource(CUST, SVC, PARENT_INST, ARID);
103                 MockPatchAllottedResource(CUST, SVC, PARENT_INST, ARID);
104
105                 mockSDNCAdapter(200);
106                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
107                 
108                 Map<String, Object> variables = setupVariables();
109
110                 String businessKey = UUID.randomUUID().toString();
111                 invokeAsyncProcess(PROCNAME, "v1", businessKey, request, variables);
112                 
113                 // for SI
114                 injectSDNCCallbacks(callbacks, "assign");
115                 
116                 // for TXC
117                 injectSDNCCallbacks(callbacks, "assign");
118                 injectSDNCCallbacks(callbacks, "create");
119                 injectSDNCCallbacks(callbacks, "activate");
120                 injectSDNCCallbacks(callbacks, "queryTXC");
121                 
122                 // for BRG
123                 injectSDNCCallbacks(callbacks, "assign");
124                 injectSDNCCallbacks(callbacks, "create");
125                 injectSDNCCallbacks(callbacks, "activate");
126                 injectSDNCCallbacks(callbacks, "queryBRG");
127                 
128                 waitForProcessEnd(businessKey, 10000);
129
130                 String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
131                 System.out.println("workflowException:\n" + workflowException);
132
133                 String completionReq = BPMNUtil.getVariable(processEngineRule, PROCNAME, Prefix+VAR_COMP_REQ);
134                 System.out.println("completionReq:\n" + completionReq);
135                 
136                 assertEquals("true", BPMNUtil.getVariable(processEngineRule, PROCNAME, PROCNAME+VAR_SUCCESS_IND));
137                 assertEquals("200", BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_RESP_CODE));
138                 assertEquals(null, workflowException);
139                 assertTrue(completionReq.contains("request-id>testRequestId<"));
140                 assertTrue(completionReq.contains("action>CREATE<"));
141                 assertTrue(completionReq.contains("source>VID<"));
142
143                 assertEquals("1", BPMNUtil.getVariable(processEngineRule, PROCNAME, Prefix+"VnfsCreatedCount"));
144         }
145         
146         @Test
147         @Ignore // 1802 merge
148         @Deployment(resources = {
149                         "process/CreateVcpeResCustService.bpmn",
150                         "subprocess/SDNCAdapterV1.bpmn",
151                         "subprocess/FalloutHandler.bpmn",
152                         "subprocess/GenericGetService.bpmn",
153                         "subprocess/GenericPutService.bpmn",
154                         "subprocess/BuildingBlock/DecomposeService.bpmn",
155             "subprocess/DoCreateServiceInstance.bpmn",
156                         "subprocess/DoCreateAllottedResourceTXC.bpmn",
157                         "subprocess/DoCreateAllottedResourceBRG.bpmn",
158             "subprocess/CompleteMsoProcess.bpmn",
159
160             // stubs
161                         "VCPE/stubprocess/Homing.bpmn",
162             "VCPE/stubprocess/DoCreateVnfAndModules.bpmn"})
163         
164         public void testCreateVcpeResCustService_NoParts() throws Exception {
165
166                 System.out.println("starting: testCreateVcpeResCustService_NoParts\n"  );
167                 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "2", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesNoData.json");
168                 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesNoData.json");
169                 MockGetCustomer(CUST, "VCPE/CreateVcpeResCustService/getCustomer.xml");
170                 
171                 // TODO: the SI should NOT have to be URL-encoded yet again!
172                 MockPutServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
173                 MockGetServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
174                 
175                 MockNodeQueryServiceInstanceById(INST, "GenericFlows/getSIUrlById.xml");                
176                 MockGetServiceInstance(CUST, SVC, INST, "GenericFlows/getServiceInstance.xml");
177                 MockNodeQueryServiceInstanceById(PARENT_INST, "GenericFlows/getParentSIUrlById.xml");
178                 MockGetServiceInstance(CUST, SVC, PARENT_INST, "GenericFlows/getParentServiceInstance.xml");
179                 
180                 // TODO: should these really be PARENT_INST, or should they be INST?
181                 MockPutAllottedResource(CUST, SVC, PARENT_INST, ARID);
182                 MockPatchAllottedResource(CUST, SVC, PARENT_INST, ARID);
183
184                 mockSDNCAdapter(200);
185                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
186                 
187                 Map<String, Object> variables = setupVariables();
188
189                 String businessKey = UUID.randomUUID().toString();
190                 invokeAsyncProcess(PROCNAME, "v1", businessKey, request, variables);
191                 
192                 // for SI
193                 injectSDNCCallbacks(callbacks, "assign");
194                 
195                 waitForProcessEnd(businessKey, 10000);
196
197                 String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
198                 System.out.println("workflowException:\n" + workflowException);
199
200                 String completionReq = BPMNUtil.getVariable(processEngineRule, PROCNAME, Prefix+VAR_COMP_REQ);
201                 System.out.println("completionReq:\n" + completionReq);
202                 
203                 assertEquals("true", BPMNUtil.getVariable(processEngineRule, PROCNAME, PROCNAME+VAR_SUCCESS_IND));
204                 assertEquals("200", BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_RESP_CODE));
205                 assertEquals(null, workflowException);
206                 assertTrue(completionReq.contains("request-id>testRequestId<"));
207                 assertTrue(completionReq.contains("action>CREATE<"));
208                 assertTrue(completionReq.contains("source>VID<"));
209
210                 assertEquals("0", BPMNUtil.getVariable(processEngineRule, PROCNAME, Prefix+"VnfsCreatedCount"));
211         }
212         
213         @Test
214         @Ignore // 1802 merge
215         @Deployment(resources = {
216                         "process/CreateVcpeResCustService.bpmn",
217                         "subprocess/SDNCAdapterV1.bpmn",
218                         "subprocess/FalloutHandler.bpmn",
219                         "subprocess/GenericGetService.bpmn",
220                         "subprocess/GenericPutService.bpmn",
221                         "subprocess/BuildingBlock/DecomposeService.bpmn",
222             "subprocess/DoCreateServiceInstance.bpmn",
223                         "subprocess/DoCreateAllottedResourceBRG.bpmn",
224             "subprocess/CompleteMsoProcess.bpmn",
225
226             // this stub will trigger a fault
227                         "VCPE/stubprocess/DoCreateAllottedResourceTXC.bpmn",
228
229             // stubs
230                         "VCPE/stubprocess/Homing.bpmn",
231             "VCPE/stubprocess/DoCreateVnfAndModules.bpmn"})
232         
233         public void testCreateVcpeResCustService_Fault_NoRollback() throws Exception {
234
235                 System.out.println("starting:  testCreateVcpeResCustService_Fault_NoRollback\n");
236                 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "2", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesData.json");
237                 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesData.json");
238                 MockGetCustomer(CUST, "VCPE/CreateVcpeResCustService/getCustomer.xml");
239                 
240                 // TODO: the SI should NOT have to be URL-encoded yet again!
241                 MockPutServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
242                 MockGetServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
243                 
244                 MockNodeQueryServiceInstanceById(INST, "GenericFlows/getSIUrlById.xml");
245                 MockNodeQueryServiceInstanceById(PARENT_INST, "GenericFlows/getParentSIUrlById.xml");           
246                 MockGetServiceInstance(CUST, SVC, INST, "GenericFlows/getServiceInstance.xml");
247                 MockGetServiceInstance(CUST, SVC, PARENT_INST, "GenericFlows/getParentServiceInstance.xml");
248                 MockPutAllottedResource(CUST, SVC, PARENT_INST, ARID);
249                 MockPatchAllottedResource(CUST, SVC, PARENT_INST, ARID);
250
251                 mockSDNCAdapter(200);
252                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
253                 
254                 Map<String, Object> variables = setupVariables();
255
256                 String req = FileUtil.readResourceFile("__files/VCPE/CreateVcpeResCustService/requestNoSINameNoRollback.json");
257                 
258                 String businessKey = UUID.randomUUID().toString();
259                 invokeAsyncProcess(PROCNAME, "v1", businessKey, req, variables);
260                 
261                 // for SI
262                 injectSDNCCallbacks(callbacks, "assign");
263                 
264                 waitForProcessEnd(businessKey, 10000);
265
266                 String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
267                 System.out.println("workflowException:\n" + workflowException);
268
269                 String completionReq = BPMNUtil.getVariable(processEngineRule, PROCNAME, Prefix+VAR_COMP_REQ);
270                 System.out.println("completionReq:\n" + completionReq);
271                 
272                 assertEquals(null, BPMNUtil.getVariable(processEngineRule, PROCNAME, PROCNAME+VAR_SUCCESS_IND));
273                 assertEquals(null, BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_RESP_CODE));
274                 assertNotNull(workflowException);
275                 
276                 BPMNUtil.assertNoProcessInstance(processEngineRule, "DoCreateAllottedResourceBRGRollback");
277                 BPMNUtil.assertNoProcessInstance(processEngineRule, "DoCreateVnfAndModulesRollback");
278                 BPMNUtil.assertNoProcessInstance(processEngineRule, "DoCreateAllottedResourceTXCRollback");
279         }
280         
281         @Test
282         @Ignore // 1802 merge
283         @Deployment(resources = {
284                         "process/CreateVcpeResCustService.bpmn",
285                         "subprocess/SDNCAdapterV1.bpmn",
286                         "subprocess/FalloutHandler.bpmn",
287                         "subprocess/GenericGetService.bpmn",
288                         "subprocess/GenericPutService.bpmn",
289                         "subprocess/BuildingBlock/DecomposeService.bpmn",
290             "subprocess/DoCreateServiceInstance.bpmn",
291                         "subprocess/DoCreateAllottedResourceTXC.bpmn",
292                         "subprocess/DoCreateAllottedResourceTXCRollback.bpmn",
293             "subprocess/CompleteMsoProcess.bpmn",
294
295             // this stub will trigger a fault
296                         "VCPE/stubprocess/DoCreateAllottedResourceBRG.bpmn",
297
298             // stubs
299                         "VCPE/stubprocess/DoCreateAllottedResourceBRGRollback.bpmn",
300                         "VCPE/stubprocess/DoCreateVnfAndModulesRollback.bpmn",
301             "VCPE/stubprocess/DoCreateServiceInstanceRollback.bpmn",
302                         "VCPE/stubprocess/Homing.bpmn",
303             "VCPE/stubprocess/DoCreateVnfAndModules.bpmn"})
304         
305         public void testCreateVcpeResCustService_Fault_Rollback() throws Exception {
306
307                 System.out.println("starting:  testCreateVcpeResCustService_Fault_Rollback\n");
308                 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "2", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesData.json");
309                 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesData.json");
310                 MockGetCustomer(CUST, "VCPE/CreateVcpeResCustService/getCustomer.xml");
311                 
312                 // TODO: the SI should NOT have to be URL-encoded yet again!
313                 MockPutServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
314                 MockGetServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
315                 
316                 MockNodeQueryServiceInstanceById(INST, "GenericFlows/getSIUrlById.xml");
317                 MockNodeQueryServiceInstanceById(PARENT_INST, "GenericFlows/getParentSIUrlById.xml");           
318                 MockGetServiceInstance(CUST, SVC, INST, "GenericFlows/getServiceInstance.xml");
319                 MockGetServiceInstance(CUST, SVC, PARENT_INST, "GenericFlows/getParentServiceInstance.xml");
320                 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/CreateVcpeResCustService/arGetById.xml");
321                 MockGetAllottedResource(CUST, SVC, PARENT_INST, ARID, "VCPE/CreateVcpeResCustService/arGetById.xml");
322                 MockPutAllottedResource(CUST, SVC, PARENT_INST, ARID);
323                 MockPatchAllottedResource(CUST, SVC, PARENT_INST, ARID);
324                 MockDeleteAllottedResource(CUST, SVC, PARENT_INST, ARID, ARVERS);
325
326                 mockSDNCAdapter(200);
327                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
328                 
329                 Map<String, Object> variables = setupVariables();
330
331                 String businessKey = UUID.randomUUID().toString();
332                 invokeAsyncProcess(PROCNAME, "v1", businessKey, request, variables);
333                 
334                 // for SI
335                 injectSDNCCallbacks(callbacks, "assign");
336                 
337                 // for TXC
338                 injectSDNCCallbacks(callbacks, "assign");
339                 injectSDNCCallbacks(callbacks, "create");
340                 injectSDNCCallbacks(callbacks, "activate");
341                 injectSDNCCallbacks(callbacks, "queryTXC");
342                 
343                 // BRG is a stub so don't need SDNC callbacks
344                 
345                 // for TXC rollback
346                 injectSDNCCallbacks(callbacks, "deactivate");
347                 injectSDNCCallbacks(callbacks, "delete");
348                 injectSDNCCallbacks(callbacks, "unassign");
349                 
350                 waitForProcessEnd(businessKey, 10000);
351
352                 String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
353                 System.out.println("workflowException:\n" + workflowException);
354
355                 String completionReq = BPMNUtil.getVariable(processEngineRule, PROCNAME, Prefix+VAR_COMP_REQ);
356                 System.out.println("completionReq:\n" + completionReq);
357                 
358                 assertEquals(null, BPMNUtil.getVariable(processEngineRule, PROCNAME, PROCNAME+VAR_SUCCESS_IND));
359                 assertEquals(null, BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_RESP_CODE));
360                 assertEquals(null, completionReq);
361                 assertNotNull(workflowException);
362                 
363                 BPMNUtil.assertAnyProcessInstanceFinished(processEngineRule, "DoCreateAllottedResourceBRGRollback");
364                 BPMNUtil.assertAnyProcessInstanceFinished(processEngineRule, "DoCreateVnfAndModulesRollback");
365                 BPMNUtil.assertAnyProcessInstanceFinished(processEngineRule, "DoCreateAllottedResourceTXCRollback");
366         }
367         
368         // *****************
369         // Utility Section
370         // *****************
371
372         // Success Scenario
373         private Map<String, Object> setupVariables() {
374                 Map<String, Object> variables = new HashMap<>();
375                 variables.put("requestId", "testRequestId");
376                 variables.put("request-id", "testRequestId");
377                 variables.put("serviceInstanceId", DEC_INST);
378                 variables.put("allottedResourceId", ARID);
379                 return variables;
380
381         }
382 }