b22431a660a351ef5ff7803045caf777d43d4f1c
[so.git] / bpmn / MSOInfrastructureBPMN / src / test / groovy / org / openecomp / mso / bpmn / infrastructure / scripts / DoCreateNetworkInstanceRollbackTest.groovy
1 package org.openecomp.mso.bpmn.infrastructure.scripts\r
2 \r
3 import static org.mockito.Mockito.*\r
4 \r
5 import org.camunda.bpm.engine.delegate.BpmnError\r
6 import org.camunda.bpm.engine.ProcessEngineServices\r
7 import org.camunda.bpm.engine.RepositoryService\r
8 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity\r
9 import org.camunda.bpm.engine.impl.pvm.process.ProcessDefinitionImpl\r
10 import org.camunda.bpm.engine.repository.ProcessDefinition\r
11 import org.camunda.bpm.engine.runtime.Execution;\r
12 import org.mockito.MockitoAnnotations\r
13 import org.mockito.runners.MockitoJUnitRunner\r
14 import org.mockito.internal.debugging.MockitoDebuggerImpl\r
15 import org.openecomp.mso.bpmn.common.scripts.MsoUtils\r
16 import org.openecomp.mso.bpmn.core.WorkflowException\r
17 import org.junit.Before\r
18 import org.junit.Rule;\r
19 import org.junit.Test\r
20 import org.junit.Ignore\r
21 import org.junit.runner.RunWith\r
22 \r
23 import static org.openecomp.mso.bpmn.mock.StubResponseNetworkAdapter.MockNetworkAdapterRestRollbackDelete;\r
24 import static org.junit.Assert.*;\r
25 \r
26 import com.github.tomakehurst.wiremock.client.WireMock;\r
27 import com.github.tomakehurst.wiremock.junit.WireMockRule;\r
28 \r
29 import java.util.HashMap;\r
30 import java.util.Map;\r
31 import java.util.UUID;\r
32 import org.apache.commons.lang3.*\r
33 \r
34 \r
35 @RunWith(MockitoJUnitRunner.class)\r
36 class DoCreateNetworkInstanceRollbackTest  {\r
37         \r
38         @Rule\r
39         public WireMockRule wireMockRule = new WireMockRule(28090);\r
40         \r
41                 def utils = new MsoUtils()\r
42                 String Prefix="CRENWKIR_"\r
43 \r
44 \r
45                 String rollbackNetworkRequest =\r
46                 """<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.openecomp.mso/network">\r
47    <rollback>\r
48       <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>\r
49       <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>\r
50       <networkStackId/>\r
51       <networkType>CONTRAIL_EXTERNAL</networkType>\r
52       <networkCreated>true</networkCreated>\r
53       <tenantId>7dd5365547234ee8937416c65507d266</tenantId>\r
54       <cloudSiteId>RDM2WAGPLCP</cloudSiteId>\r
55       <msoRequest>\r
56          <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>\r
57          <serviceInstanceId/>\r
58       </msoRequest>\r
59    </rollback>\r
60 </NetworkAdapter:rollbackNetwork>"""                    \r
61                                                                 \r
62                                         String rollbackActivateSDNCRequest =\r
63                 """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"\r
64                                   xmlns:ns5="http://org.openecomp/mso/request/types/v1"\r
65                                   xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">\r
66    <sdncadapter:RequestHeader>\r
67       <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>\r
68       <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>\r
69       <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>\r
70       <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>\r
71       <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>\r
72       <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>\r
73    </sdncadapter:RequestHeader>\r
74    <aetgt:SDNCRequestData>\r
75       <request-information>\r
76          <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>\r
77          <request-action>CreateNetworkInstance</request-action>\r
78          <source>VID</source>\r
79          <notification-url/>\r
80          <order-number/>\r
81          <order-version/>\r
82       </request-information>\r
83       <service-information>\r
84          <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>\r
85          <service-type>MSO-dev-service-type</service-type>\r
86          <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>\r
87          <subscriber-name>MSO_1610_dev</subscriber-name>\r
88       </service-information>\r
89       <network-information>\r
90          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>\r
91          <network-type>CONTRAIL_EXTERNAL</network-type>\r
92          <onap-model-information>\r
93             <model-invariant-uuid>invariant-uuid</model-invariant-uuid>\r
94             <model-customization-uuid>customization-uuid</model-customization-uuid>\r
95             <model-uuid>uuid</model-uuid>\r
96             <model-version>version</model-version>\r
97             <model-name>CONTRAIL_EXTERNAL</model-name>\r
98          </onap-model-information>\r
99       </network-information>\r
100       <network-request-information>\r
101          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>\r
102          <network-type>CONTRAIL_EXTERNAL</network-type>\r
103          <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>\r
104          <tenant>7dd5365547234ee8937416c65507d266</tenant>\r
105          <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>\r
106       </network-request-information>\r
107    </aetgt:SDNCRequestData>\r
108 </aetgt:SDNCAdapterWorkflowRequest>"""                  \r
109                 \r
110                                         String rollbackSDNCRequest =\r
111                 """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"\r
112                                   xmlns:ns5="http://org.openecomp/mso/request/types/v1"\r
113                                   xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">\r
114    <sdncadapter:RequestHeader>\r
115       <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>\r
116       <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>\r
117       <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>\r
118       <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>\r
119       <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>\r
120       <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>\r
121    </sdncadapter:RequestHeader>\r
122    <aetgt:SDNCRequestData>\r
123       <request-information>\r
124          <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>\r
125          <request-action>CreateNetworkInstance</request-action>\r
126          <source>VID</source>\r
127          <notification-url/>\r
128          <order-number/>\r
129          <order-version/>\r
130       </request-information>\r
131       <service-information>\r
132          <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>\r
133          <service-type>MSO-dev-service-type</service-type>\r
134          <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>\r
135          <subscriber-name>MSO_1610_dev</subscriber-name>\r
136       </service-information>\r
137       <network-information>\r
138          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>\r
139          <network-type>CONTRAIL_EXTERNAL</network-type>\r
140          <onap-model-information>\r
141             <model-invariant-uuid>invariant-uuid</model-invariant-uuid>\r
142             <model-customization-uuid>customization-uuid</model-customization-uuid>\r
143             <model-uuid>uuid</model-uuid>\r
144             <model-version>version</model-version>\r
145             <model-name>CONTRAIL_EXTERNAL</model-name>\r
146          </onap-model-information>\r
147       </network-information>\r
148       <network-request-information>\r
149          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>\r
150          <network-type>CONTRAIL_EXTERNAL</network-type>\r
151          <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>\r
152          <tenant>7dd5365547234ee8937416c65507d266</tenant>\r
153          <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>\r
154       </network-request-information>\r
155    </aetgt:SDNCRequestData>\r
156 </aetgt:SDNCAdapterWorkflowRequest>"""                  \r
157                 \r
158 // - - - - - - - -\r
159 \r
160 \r
161             @Before\r
162                 public void init()\r
163                 {\r
164                         MockitoAnnotations.initMocks(this)\r
165                         \r
166                 }\r
167                 \r
168                 public void initializeVariables (Execution mockExecution) {\r
169 \r
170                         verify(mockExecution).setVariable(Prefix + "WorkflowException", null)\r
171                         \r
172                         verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", null)\r
173                         verify(mockExecution).setVariable(Prefix + "rollbackNetworkResponse", "")\r
174                         verify(mockExecution).setVariable(Prefix + "rollbackNetworkReturnCode", "")\r
175         \r
176                         verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", null)\r
177                         verify(mockExecution).setVariable(Prefix + "rollbackSDNCResponse", "")\r
178                         verify(mockExecution).setVariable(Prefix + "rollbackSDNCReturnCode", "")\r
179                         \r
180                         verify(mockExecution).setVariable(Prefix + "rollbackActivateSDNCRequest", null)\r
181                         verify(mockExecution).setVariable(Prefix + "rollbackActivateSDNCResponse", "")\r
182                         verify(mockExecution).setVariable(Prefix + "rollbackActivateSDNCReturnCode", "")\r
183         \r
184                         verify(mockExecution).setVariable(Prefix + "Success", false)\r
185                         verify(mockExecution).setVariable(Prefix + "fullRollback", false)\r
186                         verify(mockExecution).setVariable(Prefix + "networkId", "")\r
187                         verify(mockExecution).setVariable(Prefix + "urlRollbackPoNetwork", "")\r
188                         \r
189                 }\r
190                 \r
191                 @Test\r
192                 //@Ignore  \r
193                 public void preProcessRequest() {\r
194                         \r
195                         println "************ preProcessRequest ************* " \r
196                         \r
197                         WorkflowException workflowException = new WorkflowException("DoCreateNetworkInstance", 2500, "Received error from Network Adapter: JBWEB000065: HTTP Status 500.")\r
198                         Map<String, String> rollbackData = new HashMap<String, String>();\r
199                         rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)\r
200                         rollbackData.put("rollbackActivateSDNCRequest", rollbackActivateSDNCRequest)\r
201                         rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)\r
202                                         \r
203                         ExecutionEntity mockExecution = setupMock()\r
204                         // Initialize prerequisite variables\r
205                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
206                         when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")\r
207                         when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)\r
208                         when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)\r
209                         when(mockExecution.getVariable("sdncVersion")).thenReturn("1702")\r
210                                                 \r
211                         when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")\r
212                         when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")\r
213                         \r
214                         when(mockExecution.getVariable("URN_mso_adapters_sdnc_endpoint")).thenReturn("http://localhost:28090/SDNCAdapter")\r
215                         when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:28090/networks/NetworkAdapter")\r
216                         when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:28090/SDNCAdapterRpc")\r
217                         \r
218                         \r
219                         // preProcessRequest(Execution execution)                                               \r
220                         DoCreateNetworkInstanceRollback DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()\r
221                         DoCreateNetworkInstanceRollback.preProcessRequest(mockExecution)\r
222                         \r
223                         verify(mockExecution).getVariable("isDebugLogEnabled")\r
224                         verify(mockExecution).setVariable("prefix", Prefix)\r
225                         \r
226                         //verify variable initialization\r
227                         initializeVariables(mockExecution)\r
228                                                                 \r
229                 }\r
230                 \r
231                 @Test\r
232                 //@Ignore\r
233                 public void callPONetworkAdapter() {\r
234 \r
235                         MockNetworkAdapterRestRollbackDelete("deleteNetworkResponse_Success.xml","8abc633a-810b-4ca5-8b3a-09511d13a2ce");\r
236                         \r
237                         ExecutionEntity mockExecution = setupMock()\r
238                         // Initialize prerequisite variables\r
239                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
240                         when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")\r
241                         when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn( rollbackNetworkRequest)\r
242                         when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn(rollbackSDNCRequest)\r
243                         when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:28090/networks/NetworkAdapter")\r
244                         \r
245                         // preProcessRequest(Execution execution)\r
246                         DoCreateNetworkInstanceRollback DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()\r
247                         DoCreateNetworkInstanceRollback.callPONetworkAdapter(mockExecution)\r
248                         \r
249                         verify(mockExecution, atLeast(1)).setVariable(Prefix + "urlRollbackPoNetwork", "http://localhost:28090/networks/NetworkAdapter/8abc633a-810b-4ca5-8b3a-09511d13a2ce/rollback")\r
250                         \r
251                 }\r
252                 \r
253                 @Test\r
254                 //@Ignore\r
255                 public void validateRollbackResponses_Good() {\r
256                         \r
257                         WorkflowException workflowException = new WorkflowException("DoCreateNetworkInstanceRollback", 2500, "AAI Update Contrail Failed.  Error 404.")\r
258                         WorkflowException expectedWorkflowException = new WorkflowException("DoCreateNetworkInstanceRollback", 2500, "AAI Update Contrail Failed.  Error 404. + SNDC activate rollback completed. + PO Network rollback completed. + SNDC assign rollback completed.")\r
259                                   \r
260                         println "************ validateRollbackResponses_Good() ************* "\r
261                         ExecutionEntity mockExecution = setupMock()\r
262                         // Initialize prerequisite variables\r
263                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
264                         when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")\r
265                         when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")\r
266                         when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")\r
267                         when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCRequest")).thenReturn("Good")\r
268                         when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")\r
269                         when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")\r
270                         when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")\r
271                         when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")\r
272                         when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCReturnCode")).thenReturn("200")\r
273                         when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCResponse")).thenReturn("GoodResponse")\r
274                         when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(workflowException)\r
275                         when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(false)\r
276                                                                         \r
277                         DoCreateNetworkInstanceRollback DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()\r
278                         DoCreateNetworkInstanceRollback.validateRollbackResponses(mockExecution)\r
279                         \r
280                         // verify set prefix = Prefix + ""\r
281                         verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)\r
282                         verify(mockExecution, atLeast(1)).setVariable("rolledBack", true)\r
283                         verify(mockExecution, atLeast(1)).setVariable("wasDeleted", true)\r
284                         verify(mockExecution).setVariable("WorkflowException", refEq(expectedWorkflowException, any(WorkflowException.class)))\r
285                         //verify(mockExecution).setVariable("WorkflowException", expectedWorkflowException)\r
286                 }\r
287                 \r
288                 @Test\r
289                 //@Ignore\r
290                 public void validateRollbackResponses_FullRollback() {\r
291                         \r
292                         Map<String, String> rollbackData = new HashMap<String, String>();\r
293                         rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)\r
294                         rollbackData.put("rollbackActivateSDNCRequest", rollbackActivateSDNCRequest)\r
295                         rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)\r
296                                   \r
297                         println "************ validateRollbackResponses_FullRollback() ************* "\r
298                         ExecutionEntity mockExecution = setupMock()\r
299                         // Initialize prerequisite variables\r
300                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
301                         when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")\r
302                         when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")\r
303                         when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")\r
304                         when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCRequest")).thenReturn("Good")\r
305                         when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")\r
306                         when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")\r
307                         when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")\r
308                         when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")\r
309                         when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCReturnCode")).thenReturn("200")\r
310                         when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCResponse")).thenReturn("GoodResponse")\r
311                         when(mockExecution.getVariable(Prefix + "workflowException")).thenReturn(null)\r
312                         when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(true)\r
313                         when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)\r
314                                                                         \r
315                         DoCreateNetworkInstanceRollback DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()\r
316                         DoCreateNetworkInstanceRollback.validateRollbackResponses(mockExecution)\r
317                         \r
318                         // verify set prefix = Prefix + ""\r
319                         verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)\r
320                         verify(mockExecution, atLeast(1)).setVariable("rollbackSuccessful", true)\r
321                         verify(mockExecution, atLeast(1)).setVariable("rollbackError", false)\r
322                         \r
323                 }\r
324                 \r
325                 \r
326                 private ExecutionEntity setupMock() {\r
327                         \r
328                         ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)\r
329                         when(mockProcessDefinition.getKey()).thenReturn("DoCreateNetworkInstanceRollback")\r
330                         RepositoryService mockRepositoryService = mock(RepositoryService.class)\r
331                         when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)\r
332                         when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DoCreateNetworkInstanceRollback")\r
333                         when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")\r
334                         ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)\r
335                         when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)\r
336                         \r
337                         ExecutionEntity mockExecution = mock(ExecutionEntity.class)\r
338                         // Initialize prerequisite variables\r
339                         \r
340                         when(mockExecution.getId()).thenReturn("100")\r
341                         when(mockExecution.getProcessDefinitionId()).thenReturn("DoCreateNetworkInstanceRollback")\r
342                         when(mockExecution.getProcessInstanceId()).thenReturn("DoCreateNetworkInstanceRollback")\r
343                         when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)\r
344                         when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)\r
345                         \r
346                         return mockExecution\r
347                 }\r
348                 \r
349 }\r