1710 Rebase - Second Attempt
[so.git] / bpmn / MSOInfrastructureBPMN / src / test / groovy / org / openecomp / mso / bpmn / infrastructure / scripts / DoDeleteNetworkInstanceRollbackTest.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.junit.Assert.*;\r
24 \r
25 import com.github.tomakehurst.wiremock.client.WireMock;\r
26 import com.github.tomakehurst.wiremock.junit.WireMockRule;\r
27 \r
28 import java.util.HashMap;\r
29 import java.util.Map;\r
30 import java.util.UUID;\r
31 \r
32 import org.apache.commons.lang3.*\r
33 \r
34 \r
35 @RunWith(MockitoJUnitRunner.class)\r
36 class DoDeleteNetworkInstanceRollbackTest  {\r
37         \r
38         @Rule\r
39         public WireMockRule wireMockRule = new WireMockRule(8090);\r
40         \r
41                 def utils = new MsoUtils()\r
42                 String Prefix="DELNWKIR_"\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 rollbackDeActivateSDNCRequest =\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>activate</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          <ecomp-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          </ecomp-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:RequestHeader>\r
121    <aetgt:SDNCRequestData>\r
122       <request-information>\r
123          <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>\r
124          <request-action>CreateNetworkInstance</request-action>\r
125          <source>VID</source>\r
126          <notification-url/>\r
127          <order-number/>\r
128          <order-version/>\r
129       </request-information>\r
130       <service-information>\r
131          <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>\r
132          <service-type>MSO-dev-service-type</service-type>\r
133          <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>\r
134          <subscriber-name>MSO_1610_dev</subscriber-name>\r
135       </service-information>\r
136       <network-information>\r
137          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>\r
138          <network-type>CONTRAIL_EXTERNAL</network-type>\r
139          <ecomp-model-information>\r
140             <model-invariant-uuid>invariant-uuid</model-invariant-uuid>\r
141             <model-customization-uuid>customization-uuid</model-customization-uuid>\r
142             <model-uuid>uuid</model-uuid>\r
143             <model-version>version</model-version>\r
144             <model-name>CONTRAIL_EXTERNAL</model-name>\r
145          </ecomp-model-information>\r
146       </network-information>\r
147       <network-request-information>\r
148          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>\r
149          <network-type>CONTRAIL_EXTERNAL</network-type>\r
150          <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>\r
151          <tenant>7dd5365547234ee8937416c65507d266</tenant>\r
152          <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>\r
153       </network-request-information>\r
154    </aetgt:SDNCRequestData>\r
155 </aetgt:SDNCAdapterWorkflowRequest>"""                  \r
156                 \r
157 // - - - - - - - -\r
158 \r
159 \r
160             @Before\r
161                 public void init()\r
162                 {\r
163                         MockitoAnnotations.initMocks(this)\r
164                         \r
165                 }\r
166                 \r
167                 public void initializeVariables (Execution mockExecution) {\r
168 \r
169                         verify(mockExecution).setVariable(Prefix + "WorkflowException", null)\r
170                 \r
171                         verify(mockExecution).setVariable(Prefix + "rollbackDeactivateSDNCRequest", null)\r
172                         verify(mockExecution).setVariable(Prefix + "rollbackDeactivateSDNCResponse", "")\r
173                         verify(mockExecution).setVariable(Prefix + "rollbackDeactivateSDNCReturnCode", "")\r
174         \r
175                         verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", null)\r
176                         verify(mockExecution).setVariable(Prefix + "rollbackNetworkResponse", "")\r
177                         verify(mockExecution).setVariable(Prefix + "rollbackNetworkReturnCode", "")\r
178                                         \r
179                         verify(mockExecution).setVariable(Prefix + "Success", false)\r
180                         verify(mockExecution).setVariable(Prefix + "fullRollback", false)\r
181                         \r
182                 }\r
183                 \r
184                 @Test\r
185                 //@Ignore  \r
186                 public void preProcessRequest() {\r
187                         \r
188                         println "************ preProcessRequest ************* " \r
189                         \r
190                         WorkflowException workflowException = new WorkflowException("DoCreateNetworkInstance", 2500, "Received error from Network Adapter: JBWEB000065: HTTP Status 500.")\r
191                         Map<String, String> rollbackData = new HashMap<String, String>();\r
192                         rollbackData.put("rollbackDeactivateSDNCRequest", rollbackDeActivateSDNCRequest)\r
193                         rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)\r
194                         rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)\r
195                                         \r
196                         ExecutionEntity mockExecution = setupMock()\r
197                         // Initialize prerequisite variables\r
198                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
199                         when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")\r
200                         when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)\r
201                         when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)\r
202                         when(mockExecution.getVariable("sdncVersion")).thenReturn("1702")\r
203                         \r
204                         when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")\r
205                         when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")\r
206                         \r
207                         when(mockExecution.getVariable("URN_mso_adapters_sdnc_endpoint")).thenReturn("http://localhost:8090/SDNCAdapter")\r
208                         when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:8090/networks/NetworkAdapter")\r
209                         when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:8090/SDNCAdapterRpc")\r
210                         \r
211                         \r
212                         // preProcessRequest(Execution execution)                                               \r
213                         DoDeleteNetworkInstanceRollback DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback()\r
214                         DoDeleteNetworkInstanceRollback.preProcessRequest(mockExecution)\r
215 \r
216                         //verify variable initialization\r
217                         initializeVariables(mockExecution)\r
218                         \r
219                         verify(mockExecution).getVariable("isDebugLogEnabled")\r
220                         verify(mockExecution).setVariable("prefix", Prefix)\r
221                                                                 \r
222                 }\r
223                 \r
224 \r
225                 @Test\r
226                 //@Ignore\r
227                 public void validateRollbackResponses_Good() {\r
228                         \r
229                         WorkflowException workflowException = new WorkflowException("DoDeleteNetworkInstanceRollback", 2500, "AAI Update Contrail Failed.  Error 404.")\r
230                         WorkflowException expectedWorkflowException = new WorkflowException("DoDeleteNetworkInstanceRollback", 2500, "AAI Update Contrail Failed.  Error 404. + SNDC deactivate rollback completed. + PO Network rollback completed. + SNDC unassign rollback completed.")\r
231                                   \r
232                         println "************ validateRollbackResponses_Good() ************* "\r
233                         ExecutionEntity mockExecution = setupMock()\r
234                         // Initialize prerequisite variables\r
235                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
236                         when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")\r
237 \r
238                         when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")).thenReturn("Good")\r
239                         when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCReturnCode")).thenReturn("200")\r
240                         when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCResponse")).thenReturn("GoodResponse")\r
241                         when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")\r
242                         when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")\r
243                         when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")\r
244                         when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")\r
245                         when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")\r
246                         when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")\r
247                         when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(workflowException)\r
248                         when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(false)\r
249                                                                         \r
250                         DoDeleteNetworkInstanceRollback DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback()\r
251                         DoDeleteNetworkInstanceRollback.validateRollbackResponses(mockExecution)\r
252                         \r
253                         // verify set prefix = Prefix + ""\r
254                         verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)\r
255                         verify(mockExecution, atLeast(1)).setVariable("rolledBack", true)\r
256                         verify(mockExecution, atLeast(1)).setVariable("wasDeleted", true)\r
257                         verify(mockExecution).setVariable("WorkflowException", refEq(expectedWorkflowException, any(WorkflowException.class)))\r
258                         //verify(mockExecution).setVariable("WorkflowException", expectedWorkflowException)\r
259                 }\r
260                 \r
261                 @Test\r
262                 //@Ignore\r
263                 public void validateRollbackResponses_FullRollback() {\r
264                         \r
265                         Map<String, String> rollbackData = new HashMap<String, String>();\r
266                         rollbackData.put("rollbackDeactivateSDNCRequest", rollbackDeActivateSDNCRequest)\r
267                         rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)\r
268                         rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)\r
269                                   \r
270                         println "************ validateRollbackResponses_FullRollback() ************* "\r
271                         ExecutionEntity mockExecution = setupMock()\r
272                         // Initialize prerequisite variables\r
273                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
274                         when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")\r
275 \r
276                         when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")).thenReturn("Good")\r
277                         when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCReturnCode")).thenReturn("200")\r
278                         when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCResponse")).thenReturn("GoodResponse")\r
279                         when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")\r
280                         when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")\r
281                         when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")\r
282                         when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")\r
283                         when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")\r
284                         when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")\r
285                         when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(null)\r
286                         when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(true)\r
287                         when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)\r
288                                                                         \r
289                         DoDeleteNetworkInstanceRollback DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback()\r
290                         DoDeleteNetworkInstanceRollback.validateRollbackResponses(mockExecution)\r
291                         \r
292                         // verify set prefix = Prefix + ""\r
293                         verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)\r
294                         verify(mockExecution, atLeast(1)).setVariable("rollbackSuccessful", true)\r
295                         verify(mockExecution, atLeast(1)).setVariable("rollbackError", false)\r
296                         \r
297                 }\r
298                 \r
299                 \r
300                 private ExecutionEntity setupMock() {\r
301                         \r
302                         ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)\r
303                         when(mockProcessDefinition.getKey()).thenReturn("DoDeleteNetworkInstanceRollback")\r
304                         RepositoryService mockRepositoryService = mock(RepositoryService.class)\r
305                         when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)\r
306                         when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DoDeleteNetworkInstanceRollback")\r
307                         when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")\r
308                         ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)\r
309                         when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)\r
310                         \r
311                         ExecutionEntity mockExecution = mock(ExecutionEntity.class)\r
312                         // Initialize prerequisite variables\r
313                         \r
314                         when(mockExecution.getId()).thenReturn("100")\r
315                         when(mockExecution.getProcessDefinitionId()).thenReturn("DoDeleteNetworkInstanceRollback")\r
316                         when(mockExecution.getProcessInstanceId()).thenReturn("DoDeleteNetworkInstanceRollback")\r
317                         when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)\r
318                         when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)\r
319                         \r
320                         return mockExecution\r
321                 }\r
322                 \r
323 }\r