Replaced all tabs with spaces in java and pom.xml
[so.git] / bpmn / mso-infrastructure-bpmn / src / test / java / org / onap / so / bpmn / vcpe / DoCreateAllottedResourceTXCRollbackIT.java
1 /*
2  * ============LICENSE_START======================================================= ONAP - SO
3  * ================================================================================ Copyright (C) 2017 AT&T Intellectual
4  * Property. All rights reserved. ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
6  * the License. You may obtain a copy of the License at
7  * 
8  * http://www.apache.org/licenses/LICENSE-2.0
9  * 
10  * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
11  * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
12  * specific language governing permissions and limitations under the License.
13  * ============LICENSE_END=========================================================
14  */
15
16 package org.onap.so.bpmn.vcpe;
17
18 import org.junit.Test;
19 import org.onap.so.bpmn.common.BPMNUtil;
20 import org.onap.so.bpmn.core.RollbackData;
21 import org.onap.so.bpmn.mock.FileUtil;
22 import java.io.IOException;
23 import java.util.HashMap;
24 import java.util.Map;
25 import java.util.UUID;
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertNotNull;
28 import static org.junit.Assert.assertNull;
29 import static org.junit.Assert.assertTrue;
30 import static org.onap.so.bpmn.common.BPMNUtil.waitForWorkflowToFinish;
31 import static org.onap.so.bpmn.mock.StubResponseAAI.MockDeleteAllottedResource;
32 import static org.onap.so.bpmn.mock.StubResponseAAI.MockGetAllottedResource;
33 import static org.onap.so.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
34 import static org.onap.so.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
35 import static org.onap.so.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
36
37 public class DoCreateAllottedResourceTXCRollbackIT extends AbstractTestBase {
38
39     private static final String PROCNAME = "DoCreateAllottedResourceTXCRollback";
40     private static final String RbType = "DCARTXC_";
41     private final CallbackSet callbacks = new CallbackSet();
42
43     public DoCreateAllottedResourceTXCRollbackIT() throws IOException {
44         callbacks.put("deactivate",
45                 FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyDeactivateCallback.xml"));
46         callbacks.put("delete", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyDeleteCallback.xml"));
47         callbacks.put("unassign", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyUnassignCallback.xml"));
48     }
49
50     @Test
51     public void testDoCreateAllottedResourceTXCRollback_Success() throws Exception {
52         logStart();
53         MockGetAllottedResource(wireMockServer, CUST, SVC, INST, ARID,
54                 "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
55         MockPatchAllottedResource(wireMockServer, CUST, SVC, INST, ARID);
56         MockDeleteAllottedResource(wireMockServer, CUST, SVC, INST, ARID, ARVERS);
57         mockSDNCAdapter(wireMockServer, 200);
58         mockUpdateRequestDB(wireMockServer, 200, "Database/DBUpdateResponse.xml");
59
60         String businessKey = UUID.randomUUID().toString();
61         Map<String, Object> variables = new HashMap<>();
62         setVariablesSuccess(variables, businessKey);
63
64         String processId = invokeSubProcess(PROCNAME, variables);
65
66         injectSDNCCallbacks(callbacks, "deactivate");
67         injectSDNCCallbacks(callbacks, "delete");
68         injectSDNCCallbacks(callbacks, "unassign");
69
70         waitForWorkflowToFinish(processEngine, processId);
71
72         assertTrue(isProcessEndedByProcessInstanceId(processId));
73         String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX, processId);
74         System.out.println("workflowException:\n" + workflowException);
75         assertEquals(null, workflowException);
76         assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack", processId));
77         assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError", processId));
78         logEnd();
79     }
80
81     @Test
82     public void testDoCreateAllottedResourceTXCRollback_skipRollback() throws Exception {
83         logStart();
84         MockGetAllottedResource(wireMockServer, CUST, SVC, INST, ARID,
85                 "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
86         MockPatchAllottedResource(wireMockServer, CUST, SVC, INST, ARID);
87         MockDeleteAllottedResource(wireMockServer, CUST, SVC, INST, ARID, ARVERS);
88         mockSDNCAdapter(wireMockServer, 200);
89         mockUpdateRequestDB(wireMockServer, 200, "Database/DBUpdateResponse.xml");
90
91         String businessKey = UUID.randomUUID().toString();
92         Map<String, Object> variables = new HashMap<>();
93         RollbackData rollbackData = setVariablesSuccess(variables, businessKey);
94
95         rollbackData.put(RbType, "rollbackAAI", "false");
96         rollbackData.put(RbType, "rollbackSDNCassign", "false");
97
98         String processId = invokeSubProcess(PROCNAME, variables);
99
100         waitForWorkflowToFinish(processEngine, processId);
101
102         assertTrue(isProcessEndedByProcessInstanceId(processId));
103         String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX, processId);
104         System.out.println("workflowException:\n" + workflowException);
105         assertEquals(null, workflowException);
106         assertEquals(null, BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack", processId));
107         assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError", processId));
108         logEnd();
109     }
110
111     @Test
112     public void testDoCreateAllottedResourceTXCRollback_DoNotRollBack() throws Exception {
113         logStart();
114         MockGetAllottedResource(wireMockServer, CUST, SVC, INST, ARID,
115                 "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
116         MockDeleteAllottedResource(wireMockServer, CUST, SVC, INST, ARID, ARVERS);
117         mockUpdateRequestDB(wireMockServer, 200, "Database/DBUpdateResponse.xml");
118
119         String businessKey = UUID.randomUUID().toString();
120         Map<String, Object> variables = new HashMap<>();
121         RollbackData rollbackData = setVariablesSuccess(variables, businessKey);
122
123         // this will cause "rollbackSDNC" to be set to false
124         rollbackData.put(RbType, "rollbackSDNCassign", "false");
125
126         String processId = invokeSubProcess(PROCNAME, variables);
127
128         waitForWorkflowToFinish(processEngine, processId);
129
130         assertTrue(isProcessEndedByProcessInstanceId(processId));
131         String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX, processId);
132         System.out.println("workflowException:\n" + workflowException);
133         assertEquals(null, workflowException);
134         assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack", processId));
135         assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError", processId));
136         logEnd();
137     }
138
139     @Test
140     public void testDoCreateAllottedResourceTXCRollback_NoDeactivate() throws Exception {
141         logStart();
142         MockGetAllottedResource(wireMockServer, CUST, SVC, INST, ARID,
143                 "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
144         MockPatchAllottedResource(wireMockServer, CUST, SVC, INST, ARID);
145         MockDeleteAllottedResource(wireMockServer, CUST, SVC, INST, ARID, ARVERS);
146         mockSDNCAdapter(wireMockServer, 200);
147         mockUpdateRequestDB(wireMockServer, 200, "Database/DBUpdateResponse.xml");
148
149         String businessKey = UUID.randomUUID().toString();
150         Map<String, Object> variables = new HashMap<>();
151         RollbackData rollbackData = setVariablesSuccess(variables, businessKey);
152
153         rollbackData.put(RbType, "rollbackSDNCactivate", "false");
154
155         String processId = invokeSubProcess(PROCNAME, variables);
156
157         injectSDNCCallbacks(callbacks, "delete");
158         injectSDNCCallbacks(callbacks, "unassign");
159
160         waitForWorkflowToFinish(processEngine, processId);
161
162         assertTrue(isProcessEndedByProcessInstanceId(processId));
163         String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX, processId);
164         System.out.println("workflowException:\n" + workflowException);
165         assertEquals(null, workflowException);
166         assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack", processId));
167         assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError", processId));
168         logEnd();
169     }
170
171     @Test
172     public void testDoCreateAllottedResourceTXCRollback_NoDelete() throws Exception {
173         logStart();
174         MockGetAllottedResource(wireMockServer, CUST, SVC, INST, ARID,
175                 "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
176         MockPatchAllottedResource(wireMockServer, CUST, SVC, INST, ARID);
177         MockDeleteAllottedResource(wireMockServer, CUST, SVC, INST, ARID, ARVERS);
178         mockSDNCAdapter(wireMockServer, 200);
179         mockUpdateRequestDB(wireMockServer, 200, "Database/DBUpdateResponse.xml");
180
181         String businessKey = UUID.randomUUID().toString();
182         Map<String, Object> variables = new HashMap<>();
183         RollbackData rollbackData = setVariablesSuccess(variables, businessKey);
184
185         rollbackData.put(RbType, "rollbackSDNCcreate", "false");
186
187         String processId = invokeSubProcess(PROCNAME, variables);
188
189         injectSDNCCallbacks(callbacks, "deactivate");
190         injectSDNCCallbacks(callbacks, "unassign");
191
192         waitForWorkflowToFinish(processEngine, processId);
193
194         assertTrue(isProcessEndedByProcessInstanceId(processId));
195         String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX, processId);
196         System.out.println("workflowException:\n" + workflowException);
197         assertEquals(null, workflowException);
198         assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack", processId));
199         assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError", processId));
200         logEnd();
201     }
202
203     @Test
204     public void testDoCreateAllottedResourceTXCRollback_NoUnassign() throws Exception {
205         logStart();
206         MockGetAllottedResource(wireMockServer, CUST, SVC, INST, ARID,
207                 "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
208         MockPatchAllottedResource(wireMockServer, CUST, SVC, INST, ARID);
209         MockDeleteAllottedResource(wireMockServer, CUST, SVC, INST, ARID, ARVERS);
210         mockSDNCAdapter(wireMockServer, 200);
211         mockUpdateRequestDB(wireMockServer, 200, "Database/DBUpdateResponse.xml");
212
213         String businessKey = UUID.randomUUID().toString();
214         Map<String, Object> variables = new HashMap<>();
215         RollbackData rollbackData = setVariablesSuccess(variables, businessKey);
216
217         rollbackData.put(RbType, "rollbackSDNCassign", "false");
218
219         /*
220          * Note: if assign == false then the flow/script will set "skipRollback" to false, which will cause ALL of the
221          * SDNC steps to be skipped, not just the unassign step.
222          */
223
224         String processId = invokeSubProcess(PROCNAME, variables);
225
226         waitForWorkflowToFinish(processEngine, processId);
227
228         assertTrue(isProcessEndedByProcessInstanceId(processId));
229         String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX, processId);
230         System.out.println("workflowException:\n" + workflowException);
231         assertEquals(null, workflowException);
232         assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack", processId));
233         assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError", processId));
234         logEnd();
235     }
236
237     @Test
238     public void testDoCreateAllottedResourceTXCRollback_SubProcessError() throws Exception {
239         logStart();
240         MockGetAllottedResource(wireMockServer, CUST, SVC, INST, ARID,
241                 "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
242         MockPatchAllottedResource(wireMockServer, CUST, SVC, INST, ARID);
243         MockDeleteAllottedResource(wireMockServer, CUST, SVC, INST, ARID, ARVERS);
244         mockUpdateRequestDB(wireMockServer, 200, "Database/DBUpdateResponse.xml");
245
246         mockSDNCAdapter(wireMockServer, 404);
247
248         String businessKey = UUID.randomUUID().toString();
249         Map<String, Object> variables = new HashMap<>();
250         setVariablesSuccess(variables, businessKey);
251
252         String processId = invokeSubProcess(PROCNAME, variables);
253
254         waitForWorkflowToFinish(processEngine, processId);
255
256         assertTrue(isProcessEndedByProcessInstanceId(processId));
257         String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX, processId);
258         System.out.println("workflowException:\n" + workflowException);
259         assertEquals(null, workflowException);
260         assertEquals("false", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack", processId));
261         assertNotNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError", processId));
262         logEnd();
263     }
264
265     @Test
266     public void testDoCreateAllottedResourceTXCRollback_JavaException() throws Exception {
267         logStart();
268         MockGetAllottedResource(wireMockServer, CUST, SVC, INST, ARID,
269                 "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
270         MockPatchAllottedResource(wireMockServer, CUST, SVC, INST, ARID);
271         MockDeleteAllottedResource(wireMockServer, CUST, SVC, INST, ARID, ARVERS);
272         mockSDNCAdapter(wireMockServer, 200);
273         mockUpdateRequestDB(wireMockServer, 200, "Database/DBUpdateResponse.xml");
274
275         String businessKey = UUID.randomUUID().toString();
276         Map<String, Object> variables = new HashMap<>();
277         setVariablesSuccess(variables, businessKey);
278
279         variables.put("rollbackData", "string instead of rollback data");
280
281         String processId = invokeSubProcess(PROCNAME, variables);
282
283         waitForWorkflowToFinish(processEngine, processId);
284
285         assertTrue(isProcessEndedByProcessInstanceId(processId));
286         String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX, processId);
287         System.out.println("workflowException:\n" + workflowException);
288         assertEquals(null, workflowException);
289         assertEquals("false", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack", processId));
290         assertNotNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError", processId));
291         logEnd();
292     }
293
294     private RollbackData setVariablesSuccess(Map<String, Object> variables, String requestId) {
295         variables.put("isDebugLogEnabled", "true");
296         variables.put("failNotFound", "true");
297         variables.put("msoRequestId", requestId);
298         variables.put("mso-request-id", "requestId");
299         variables.put("allottedResourceId", ARID);
300
301         variables.put("serviceInstanceId", DEC_INST);
302         variables.put("parentServiceInstanceId", DEC_PARENT_INST);
303
304         RollbackData rollbackData = new RollbackData();
305
306         rollbackData.put(RbType, "serviceInstanceId", DEC_INST);
307         rollbackData.put(RbType, "serviceSubscriptionType", SVC);
308         rollbackData.put(RbType, "disablerollback", "false");
309         rollbackData.put(RbType, "rollbackAAI", "true");
310         rollbackData.put(RbType, "rollbackSDNCassign", "true");
311         rollbackData.put(RbType, "rollbackSDNCactivate", "true");
312         rollbackData.put(RbType, "rollbackSDNCcreate", "true");
313         rollbackData.put(RbType, "aaiARPath",
314                 "/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC
315                         + "/service-instances/service-instance/" + INST + "/allotted-resources/allotted-resource/"
316                         + ARID);
317
318         rollbackData.put(RbType, "sdncActivateRollbackReq", FileUtil
319                 .readResourceFile("__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncActivateRollbackReq.xml"));
320         rollbackData.put(RbType, "sdncCreateRollbackReq", FileUtil
321                 .readResourceFile("__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncCreateRollbackReq.xml"));
322         rollbackData.put(RbType, "sdncAssignRollbackReq", FileUtil
323                 .readResourceFile("__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncAssignRollbackReq.xml"));
324
325         variables.put("rollbackData", rollbackData);
326
327         return rollbackData;
328     }
329
330 }