8b47174b3b4c3e88540cba989129ddf928442f99
[so.git] / bpmn / mso-infrastructure-bpmn / src / test / java / org / onap / so / bpmn / vcpe / DoCreateAllottedResourceTXCRollbackIT.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
21 package org.onap.so.bpmn.vcpe;
22
23 import org.junit.Test;
24 import org.onap.so.bpmn.common.BPMNUtil;
25 import org.onap.so.bpmn.core.RollbackData;
26 import org.onap.so.bpmn.mock.FileUtil;
27
28 import java.io.IOException;
29 import java.util.HashMap;
30 import java.util.Map;
31 import java.util.UUID;
32
33 import static org.junit.Assert.assertEquals;
34 import static org.junit.Assert.assertNotNull;
35 import static org.junit.Assert.assertNull;
36 import static org.junit.Assert.assertTrue;
37 import static org.onap.so.bpmn.common.BPMNUtil.waitForWorkflowToFinish;
38 import static org.onap.so.bpmn.mock.StubResponseAAI.MockDeleteAllottedResource;
39 import static org.onap.so.bpmn.mock.StubResponseAAI.MockGetAllottedResource;
40 import static org.onap.so.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
41 import static org.onap.so.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
42 import static org.onap.so.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
43
44 public class DoCreateAllottedResourceTXCRollbackIT extends AbstractTestBase {
45
46         private static final String PROCNAME = "DoCreateAllottedResourceTXCRollback";
47         private static final String RbType = "DCARTXC_";
48         private final CallbackSet callbacks = new CallbackSet();
49         
50         public DoCreateAllottedResourceTXCRollbackIT() throws IOException {
51                 callbacks.put("deactivate", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyDeactivateCallback.xml"));
52                 callbacks.put("delete", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyDeleteCallback.xml"));
53                 callbacks.put("unassign", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyUnassignCallback.xml"));
54         }
55         
56         @Test
57         public void testDoCreateAllottedResourceTXCRollback_Success() throws Exception {
58                 logStart();
59                 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
60                 MockPatchAllottedResource(CUST, SVC, INST, ARID);
61                 MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
62                 mockSDNCAdapter(200);
63                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
64                 
65                 String businessKey = UUID.randomUUID().toString();
66                 Map<String, Object> variables = new HashMap<>();
67                 setVariablesSuccess(variables, businessKey);
68                 
69                 String processId = invokeSubProcess(PROCNAME, variables);
70                 
71                 injectSDNCCallbacks(callbacks, "deactivate");
72                 injectSDNCCallbacks(callbacks, "delete");
73                 injectSDNCCallbacks(callbacks, "unassign");
74
75                 waitForWorkflowToFinish(processEngine,processId);
76                 
77                 assertTrue(isProcessEndedByProcessInstanceId(processId));
78                 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX,processId);
79                 System.out.println("workflowException:\n" + workflowException);
80                 assertEquals(null, workflowException);
81                 assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack",processId));
82                 assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError",processId));
83                 logEnd();
84         }
85         
86         @Test
87         public void testDoCreateAllottedResourceTXCRollback_skipRollback() throws Exception {
88                 logStart();
89                 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
90                 MockPatchAllottedResource(CUST, SVC, INST, ARID);
91                 MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
92                 mockSDNCAdapter(200);
93                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
94                 
95                 String businessKey = UUID.randomUUID().toString();
96                 Map<String, Object> variables = new HashMap<>();
97                 RollbackData rollbackData = setVariablesSuccess(variables, businessKey);
98
99                 rollbackData.put(RbType, "rollbackAAI", "false");
100                 rollbackData.put(RbType, "rollbackSDNCassign", "false");
101                 
102                 String processId = invokeSubProcess(PROCNAME, variables);
103
104                 waitForWorkflowToFinish(processEngine,processId);
105                 
106                 assertTrue(isProcessEndedByProcessInstanceId(processId));
107                 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX,processId);
108                 System.out.println("workflowException:\n" + workflowException);
109                 assertEquals(null, workflowException);
110                 assertEquals(null, BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack",processId));
111                 assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError",processId));
112                 logEnd();
113         }
114         
115         @Test
116         public void testDoCreateAllottedResourceTXCRollback_DoNotRollBack() throws Exception {
117                 logStart();
118                 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
119                 MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
120                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
121                 
122                 String businessKey = UUID.randomUUID().toString();
123                 Map<String, Object> variables = new HashMap<>();
124                 RollbackData rollbackData = setVariablesSuccess(variables, businessKey);
125
126                 // this will cause "rollbackSDNC" to be set to false
127                 rollbackData.put(RbType, "rollbackSDNCassign", "false");
128                 
129                 String processId = invokeSubProcess(PROCNAME, variables);
130
131                 waitForWorkflowToFinish(processEngine,processId);
132                 
133                 assertTrue(isProcessEndedByProcessInstanceId(processId));
134                 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX,processId);
135                 System.out.println("workflowException:\n" + workflowException);
136                 assertEquals(null, workflowException);
137                 assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack",processId));
138                 assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError",processId));
139                 logEnd();
140         }
141         
142         @Test
143         public void testDoCreateAllottedResourceTXCRollback_NoDeactivate() throws Exception {
144                 logStart();
145                 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
146                 MockPatchAllottedResource(CUST, SVC, INST, ARID);
147                 MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
148                 mockSDNCAdapter(200);
149                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
150                 
151                 String businessKey = UUID.randomUUID().toString();
152                 Map<String, Object> variables = new HashMap<>();
153                 RollbackData rollbackData = setVariablesSuccess(variables, businessKey);
154
155                 rollbackData.put(RbType, "rollbackSDNCactivate", "false");
156                 
157                 String processId = invokeSubProcess(PROCNAME, variables);
158
159                 injectSDNCCallbacks(callbacks, "delete");
160                 injectSDNCCallbacks(callbacks, "unassign");
161
162                 waitForWorkflowToFinish(processEngine,processId);
163                 
164                 assertTrue(isProcessEndedByProcessInstanceId(processId));
165                 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX,processId);
166                 System.out.println("workflowException:\n" + workflowException);
167                 assertEquals(null, workflowException);
168                 assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack",processId));
169                 assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError",processId));
170                 logEnd();
171         }
172         
173         @Test
174         public void testDoCreateAllottedResourceTXCRollback_NoDelete() throws Exception {
175                 logStart();
176                 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
177                 MockPatchAllottedResource(CUST, SVC, INST, ARID);
178                 MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
179                 mockSDNCAdapter(200);
180                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
181                 
182                 String businessKey = UUID.randomUUID().toString();
183                 Map<String, Object> variables = new HashMap<>();
184                 RollbackData rollbackData = setVariablesSuccess(variables, businessKey);
185
186                 rollbackData.put(RbType, "rollbackSDNCcreate", "false");
187                 
188                 String processId = invokeSubProcess(PROCNAME, variables);
189
190                 injectSDNCCallbacks(callbacks, "deactivate");
191                 injectSDNCCallbacks(callbacks, "unassign");
192
193                 waitForWorkflowToFinish(processEngine,processId);
194                 
195                 assertTrue(isProcessEndedByProcessInstanceId(processId));
196                 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX,processId);
197                 System.out.println("workflowException:\n" + workflowException);
198                 assertEquals(null, workflowException);
199                 assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack",processId));
200                 assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError",processId));
201                 logEnd();
202         }
203         
204         @Test
205         public void testDoCreateAllottedResourceTXCRollback_NoUnassign() throws Exception {
206                 logStart();
207                 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
208                 MockPatchAllottedResource(CUST, SVC, INST, ARID);
209                 MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
210                 mockSDNCAdapter(200);
211                 mockUpdateRequestDB(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
221                  * "skipRollback" to false, which will cause ALL of the SDNC steps
222                  * to be skipped, not just the unassign step.
223                  */
224                 
225                 String processId = invokeSubProcess(PROCNAME, variables);
226
227                 waitForWorkflowToFinish(processEngine,processId);
228                 
229                 assertTrue(isProcessEndedByProcessInstanceId(processId));
230                 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX,processId);
231                 System.out.println("workflowException:\n" + workflowException);
232                 assertEquals(null, workflowException);
233                 assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack",processId));
234                 assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError",processId));
235                 logEnd();
236         }
237         
238         @Test
239         public void testDoCreateAllottedResourceTXCRollback_SubProcessError() throws Exception {
240                 logStart();
241                 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
242                 MockPatchAllottedResource(CUST, SVC, INST, ARID);
243                 MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
244                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
245
246                 mockSDNCAdapter(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(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
269                 MockPatchAllottedResource(CUST, SVC, INST, ARID);
270                 MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
271                 mockSDNCAdapter(200);
272                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
273                 
274                 String businessKey = UUID.randomUUID().toString();
275                 Map<String, Object> variables = new HashMap<>();
276                 setVariablesSuccess(variables, businessKey);
277
278                 variables.put("rollbackData", "string instead of rollback data");
279                 
280                 String processId = invokeSubProcess(PROCNAME, variables);
281
282                 waitForWorkflowToFinish(processEngine,processId);
283                 
284                 assertTrue(isProcessEndedByProcessInstanceId(processId));
285                 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX,processId);
286                 System.out.println("workflowException:\n" + workflowException);
287                 assertEquals(null, workflowException);
288                 assertEquals("false", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack",processId));
289                 assertNotNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError",processId));
290                 logEnd();
291         }
292
293         private RollbackData setVariablesSuccess(Map<String, Object> variables, String requestId) {
294                 variables.put("isDebugLogEnabled", "true");
295                 variables.put("failNotFound", "true");
296                 variables.put("msoRequestId", requestId);
297                 variables.put("mso-request-id", "requestId");
298                 variables.put("allottedResourceId", ARID);
299
300                 variables.put("serviceInstanceId", DEC_INST);
301                 variables.put("parentServiceInstanceId", DEC_PARENT_INST);
302                 
303                 RollbackData rollbackData = new RollbackData();
304
305                 rollbackData.put(RbType, "serviceInstanceId", DEC_INST);
306                 rollbackData.put(RbType, "serviceSubscriptionType", SVC);
307                 rollbackData.put(RbType, "disablerollback", "false");
308                 rollbackData.put(RbType, "rollbackAAI", "true");
309                 rollbackData.put(RbType, "rollbackSDNCassign", "true");
310                 rollbackData.put(RbType, "rollbackSDNCactivate", "true");
311                 rollbackData.put(RbType, "rollbackSDNCcreate", "true");
312                 rollbackData.put(RbType, "aaiARPath", "/business/customers/customer/"+CUST+"/service-subscriptions/service-subscription/"+SVC+"/service-instances/service-instance/"+INST+"/allotted-resources/allotted-resource/"+ARID);
313                 
314                 rollbackData.put(RbType, "sdncActivateRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncActivateRollbackReq.xml"));
315                 rollbackData.put(RbType, "sdncCreateRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncCreateRollbackReq.xml")); 
316                 rollbackData.put(RbType, "sdncAssignRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncAssignRollbackReq.xml"));
317                 
318                 variables.put("rollbackData",rollbackData);
319                 
320                 return rollbackData;
321         }
322
323 }