1 package org.openecomp.mso.bpmn.infrastructure.scripts
\r
3 import static org.mockito.Mockito.*
\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
23 import static org.openecomp.mso.bpmn.mock.StubResponseNetworkAdapter.MockNetworkAdapterRestRollbackDelete;
\r
24 import static org.junit.Assert.*;
\r
26 import com.github.tomakehurst.wiremock.client.WireMock;
\r
27 import com.github.tomakehurst.wiremock.junit.WireMockRule;
\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
35 @RunWith(MockitoJUnitRunner.class)
\r
36 class DoCreateNetworkInstanceRollbackTest {
\r
39 public WireMockRule wireMockRule = new WireMockRule(28090);
\r
41 def utils = new MsoUtils()
\r
42 String Prefix="CRENWKIR_"
\r
45 String rollbackNetworkRequest =
\r
46 """<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.openecomp.mso/network">
\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
51 <networkType>CONTRAIL_EXTERNAL</networkType>
\r
52 <networkCreated>true</networkCreated>
\r
53 <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
\r
54 <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
\r
56 <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
\r
57 <serviceInstanceId/>
\r
60 </NetworkAdapter:rollbackNetwork>"""
\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
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
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
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 <ecomp-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 </ecomp-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
164 MockitoAnnotations.initMocks(this)
\r
168 public void initializeVariables (Execution mockExecution) {
\r
170 verify(mockExecution).setVariable(Prefix + "WorkflowException", null)
\r
172 verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", null)
\r
173 verify(mockExecution).setVariable(Prefix + "rollbackNetworkResponse", "")
\r
174 verify(mockExecution).setVariable(Prefix + "rollbackNetworkReturnCode", "")
\r
176 verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", null)
\r
177 verify(mockExecution).setVariable(Prefix + "rollbackSDNCResponse", "")
\r
178 verify(mockExecution).setVariable(Prefix + "rollbackSDNCReturnCode", "")
\r
180 verify(mockExecution).setVariable(Prefix + "rollbackActivateSDNCRequest", null)
\r
181 verify(mockExecution).setVariable(Prefix + "rollbackActivateSDNCResponse", "")
\r
182 verify(mockExecution).setVariable(Prefix + "rollbackActivateSDNCReturnCode", "")
\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
193 public void preProcessRequest() {
\r
195 println "************ preProcessRequest ************* "
\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
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
211 when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
\r
212 when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
\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
219 // preProcessRequest(Execution execution)
\r
220 DoCreateNetworkInstanceRollback DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()
\r
221 DoCreateNetworkInstanceRollback.preProcessRequest(mockExecution)
\r
223 verify(mockExecution).getVariable("isDebugLogEnabled")
\r
224 verify(mockExecution).setVariable("prefix", Prefix)
\r
226 //verify variable initialization
\r
227 initializeVariables(mockExecution)
\r
233 public void callPONetworkAdapter() {
\r
235 MockNetworkAdapterRestRollbackDelete("deleteNetworkResponse_Success.xml","8abc633a-810b-4ca5-8b3a-09511d13a2ce");
\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
245 // preProcessRequest(Execution execution)
\r
246 DoCreateNetworkInstanceRollback DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()
\r
247 DoCreateNetworkInstanceRollback.callPONetworkAdapter(mockExecution)
\r
249 verify(mockExecution, atLeast(1)).setVariable(Prefix + "urlRollbackPoNetwork", "http://localhost:28090/networks/NetworkAdapter/8abc633a-810b-4ca5-8b3a-09511d13a2ce/rollback")
\r
255 public void validateRollbackResponses_Good() {
\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
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
277 DoCreateNetworkInstanceRollback DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()
\r
278 DoCreateNetworkInstanceRollback.validateRollbackResponses(mockExecution)
\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
290 public void validateRollbackResponses_FullRollback() {
\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
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
315 DoCreateNetworkInstanceRollback DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()
\r
316 DoCreateNetworkInstanceRollback.validateRollbackResponses(mockExecution)
\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
326 private ExecutionEntity setupMock() {
\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
337 ExecutionEntity mockExecution = mock(ExecutionEntity.class)
\r
338 // Initialize prerequisite variables
\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
346 return mockExecution
\r