1710 Rebase - Second Attempt
[so.git] / bpmn / MSOInfrastructureBPMN / src / test / groovy / org / openecomp / mso / bpmn / infrastructure / scripts / DoUpdateNetworkInstanceRollbackTest.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 import org.apache.commons.lang3.*\r
32 \r
33 \r
34 @RunWith(MockitoJUnitRunner.class)\r
35 class DoUpdateNetworkInstanceRollbackTest  {\r
36 \r
37         @Rule\r
38         public WireMockRule wireMockRule = new WireMockRule(28090);\r
39 \r
40                 def utils = new MsoUtils()\r
41                 String Prefix="UPDNETIR_"\r
42 \r
43 \r
44                 String rollbackNetworkRequest =\r
45                 """<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.openecomp.mso/network">\r
46    <rollback>\r
47       <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>\r
48       <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>\r
49       <networkStackId/>\r
50       <networkType>CONTRAIL_EXTERNAL</networkType>\r
51       <networkCreated>true</networkCreated>\r
52       <tenantId>7dd5365547234ee8937416c65507d266</tenantId>\r
53       <cloudSiteId>RDM2WAGPLCP</cloudSiteId>\r
54       <msoRequest>\r
55          <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>\r
56          <serviceInstanceId/>\r
57       </msoRequest>\r
58    </rollback>\r
59 </NetworkAdapter:rollbackNetwork>"""\r
60 \r
61                                         String rollbackActivateSDNCRequest =\r
62                 """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"\r
63                                   xmlns:ns5="http://org.openecomp/mso/request/types/v1"\r
64                                   xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">\r
65    <sdncadapter:RequestHeader>\r
66       <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>\r
67       <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>\r
68       <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>\r
69       <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>\r
70       <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>\r
71       <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>\r
72    </sdncadapter:RequestHeader>\r
73    <aetgt:SDNCRequestData>\r
74       <request-information>\r
75          <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>\r
76          <request-action>CreateNetworkInstance</request-action>\r
77          <source>VID</source>\r
78          <notification-url/>\r
79          <order-number/>\r
80          <order-version/>\r
81       </request-information>\r
82       <service-information>\r
83          <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>\r
84          <service-type>MSO-dev-service-type</service-type>\r
85          <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>\r
86          <subscriber-name>MSO_1610_dev</subscriber-name>\r
87       </service-information>\r
88       <network-information>\r
89          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>\r
90          <network-type>CONTRAIL_EXTERNAL</network-type>\r
91          <ecomp-model-information>\r
92             <model-invariant-uuid>invariant-uuid</model-invariant-uuid>\r
93             <model-customization-uuid>customization-uuid</model-customization-uuid>\r
94             <model-uuid>uuid</model-uuid>\r
95             <model-version>version</model-version>\r
96             <model-name>CONTRAIL_EXTERNAL</model-name>\r
97          </ecomp-model-information>\r
98       </network-information>\r
99       <network-request-information>\r
100          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>\r
101          <network-type>CONTRAIL_EXTERNAL</network-type>\r
102          <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>\r
103          <tenant>7dd5365547234ee8937416c65507d266</tenant>\r
104          <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>\r
105       </network-request-information>\r
106    </aetgt:SDNCRequestData>\r
107 </aetgt:SDNCAdapterWorkflowRequest>"""\r
108 \r
109                                         String rollbackSDNCRequest =\r
110                 """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"\r
111                                   xmlns:ns5="http://org.openecomp/mso/request/types/v1"\r
112                                   xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">\r
113    <sdncadapter:RequestHeader>\r
114       <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>\r
115       <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>\r
116       <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>\r
117       <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>\r
118       <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>\r
119       <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>\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 + "rollbackNetworkRequest", null)\r
170                         verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", null)\r
171                         verify(mockExecution).setVariable(Prefix + "WorkflowException", null)\r
172 \r
173                         verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", "")\r
174                         verify(mockExecution).setVariable(Prefix + "rollbackNetworkResponse", "")\r
175                         verify(mockExecution).setVariable(Prefix + "rollbackNetworkReturnCode", "")\r
176 \r
177                         verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", "")\r
178                         verify(mockExecution).setVariable(Prefix + "rollbackSDNCResponse", "")\r
179                         verify(mockExecution).setVariable(Prefix + "rollbackSDNCReturnCode", "")\r
180 \r
181                         verify(mockExecution).setVariable(Prefix + "Success", false)\r
182                         verify(mockExecution).setVariable(Prefix + "fullRollback", false)\r
183 \r
184 \r
185                 }\r
186 \r
187                 @Test\r
188                 //@Ignore\r
189                 public void preProcessRequest() {\r
190 \r
191                         println "************ preProcessRequest ************* "\r
192 \r
193                         WorkflowException workflowException = new WorkflowException("DoUpdateNetworkInstanceRollback", 2500, "Received error from Network Adapter: JBWEB000065: HTTP Status 500.")\r
194                         Map<String, String> rollbackData = new HashMap<String, String>();\r
195                         rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)\r
196                         rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)\r
197 \r
198                         ExecutionEntity mockExecution = setupMock()\r
199                         // Initialize prerequisite variables\r
200                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
201                         when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")\r
202                         when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)\r
203                         when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)\r
204                         when(mockExecution.getVariable("sdncVersion")).thenReturn("1610")\r
205                         when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")\r
206                         when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")\r
207 \r
208                         when(mockExecution.getVariable("URN_mso_adapters_sdnc_endpoint")).thenReturn("http://localhost:28090/SDNCAdapter")\r
209                         when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:28090/networks/NetworkAdapter")\r
210                         when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:28090/SDNCAdapterRpc")\r
211 \r
212 \r
213                         // preProcessRequest(Execution execution)\r
214                         DoUpdateNetworkInstanceRollback DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback()\r
215                         DoUpdateNetworkInstanceRollback.preProcessRequest(mockExecution)\r
216 \r
217                         verify(mockExecution).getVariable("isDebugLogEnabled")\r
218                         verify(mockExecution).setVariable("prefix", Prefix)\r
219 \r
220                         //verify variable initialization\r
221                         initializeVariables(mockExecution)\r
222 \r
223                 }\r
224 \r
225 \r
226                 @Test\r
227                 @Ignore\r
228                 public void validateRollbackResponses_Good() {\r
229 \r
230                         WorkflowException workflowException = new WorkflowException("DoUpdateNetworkInstanceRollback", 2500, "AAI Update Contrail Failed.  Error 404.")\r
231                         WorkflowException expectedWorkflowException = new WorkflowException("DoUpdateNetworkInstanceRollback", 2500, "AAI Update Contrail Failed.  Error 404. + SNDC activate rollback completed. + PO Network rollback completed. + SNDC assign rollback completed.")\r
232 \r
233                         println "************ validateRollbackResponses_Good() ************* "\r
234                         ExecutionEntity mockExecution = setupMock()\r
235                         // Initialize prerequisite variables\r
236                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
237                         when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")\r
238                         when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")\r
239                         when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")\r
240                         when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")\r
241                         when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")\r
242                         when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")\r
243                         when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")\r
244                         when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(workflowException)\r
245                         when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(false)\r
246 \r
247                         DoUpdateNetworkInstanceRollback DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback()\r
248                         DoUpdateNetworkInstanceRollback.validateRollbackResponses(mockExecution)\r
249 \r
250                         // verify set prefix = Prefix + ""\r
251                         verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)\r
252                         verify(mockExecution, atLeast(1)).setVariable("rolledBack", true)\r
253                         verify(mockExecution, atLeast(1)).setVariable("wasDeleted", true)\r
254                         verify(mockExecution).setVariable("WorkflowException", refEq(expectedWorkflowException, any(WorkflowException.class)))\r
255                         //verify(mockExecution).setVariable("WorkflowException", expectedWorkflowException)\r
256                 }\r
257 \r
258                 @Test\r
259                 //@Ignore\r
260                 public void validateRollbackResponses_FullRollback() {\r
261 \r
262                         Map<String, String> rollbackData = new HashMap<String, String>();\r
263                         rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)\r
264                         rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)\r
265 \r
266                         println "************ validateRollbackResponses_FullRollback() ************* "\r
267                         ExecutionEntity mockExecution = setupMock()\r
268                         // Initialize prerequisite variables\r
269                         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")\r
270                         when(mockExecution.getVariable("prefix")).thenReturn(Prefix)\r
271                         when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")\r
272                         when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")\r
273                         when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")\r
274                         when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")\r
275                         when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")\r
276                         when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")\r
277                         when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(null)\r
278                         when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(true)\r
279                         when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)\r
280 \r
281                         DoUpdateNetworkInstanceRollback DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback()\r
282                         DoUpdateNetworkInstanceRollback.validateRollbackResponses(mockExecution)\r
283 \r
284                         // verify set prefix = Prefix + ""\r
285                         verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)\r
286                         verify(mockExecution, atLeast(1)).setVariable("rollbackSuccessful", true)\r
287                         verify(mockExecution, atLeast(1)).setVariable("rollbackError", false)\r
288 \r
289                 }\r
290 \r
291 \r
292                 private ExecutionEntity setupMock() {\r
293 \r
294                         ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)\r
295                         when(mockProcessDefinition.getKey()).thenReturn("DoUpdateNetworkInstanceRollback")\r
296                         RepositoryService mockRepositoryService = mock(RepositoryService.class)\r
297                         when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)\r
298                         when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DoUpdateNetworkInstanceRollback")\r
299                         when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")\r
300                         ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)\r
301                         when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)\r
302 \r
303                         ExecutionEntity mockExecution = mock(ExecutionEntity.class)\r
304                         // Initialize prerequisite variables\r
305 \r
306                         when(mockExecution.getId()).thenReturn("100")\r
307                         when(mockExecution.getProcessDefinitionId()).thenReturn("DoUpdateNetworkInstanceRollback")\r
308                         when(mockExecution.getProcessInstanceId()).thenReturn("DoUpdateNetworkInstanceRollback")\r
309                         when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)\r
310                         when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)\r
311 \r
312                         return mockExecution\r
313                 }\r
314 \r
315 }