1 package org.openecomp.mso.bpmn.infrastructure.scripts
\r
3 import static org.mockito.Mockito.*
\r
5 import org.apache.commons.lang3.*
\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.repository.ProcessDefinition
\r
10 import org.camunda.bpm.engine.delegate.DelegateExecution
\r
11 import org.junit.Before
\r
12 import org.junit.Rule
\r
13 import org.junit.Test
\r
14 import org.junit.runner.RunWith
\r
15 import org.mockito.MockitoAnnotations
\r
16 import org.mockito.runners.MockitoJUnitRunner
\r
17 import org.openecomp.mso.bpmn.common.scripts.MsoUtils
\r
18 import org.openecomp.mso.bpmn.core.WorkflowException
\r
20 import com.github.tomakehurst.wiremock.junit.WireMockRule
\r
23 @RunWith(MockitoJUnitRunner.class)
\r
24 class DeleteNetworkInstanceTest {
\r
27 public WireMockRule wireMockRule = new WireMockRule(8090);
\r
29 String Prefix="DELNI_"
\r
30 def utils = new MsoUtils()
\r
32 String falloutHandlerRequest =
\r
33 """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
\r
34 xmlns:ns="http://org.openecomp/mso/request/types/v1"
\r
35 xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1">
\r
36 <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
\r
37 <request-id>b69c9054-da09-4a2c-adf5-51042b62bfac</request-id>
\r
38 <action>DELETE</action>
\r
39 <source>PORTAL</source>
\r
41 <aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
\r
42 <aetgt:ErrorMessage>Received error from SDN-C: No availability zone available</aetgt:ErrorMessage>
\r
43 <aetgt:ErrorCode>5300</aetgt:ErrorCode>
\r
44 <aetgt:SourceSystemErrorCode>200</aetgt:SourceSystemErrorCode>
\r
45 </aetgt:WorkflowException>
\r
46 </aetgt:FalloutHandlerRequest>"""
\r
48 String falloutHandlerRequestObj =
\r
49 """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
\r
50 xmlns:ns="http://org.openecomp/mso/request/types/v1"
\r
51 xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1">
\r
52 <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
\r
53 <request-id>b69c9054-da09-4a2c-adf5-51042b62bfac</request-id>
\r
54 <action>DELETE</action>
\r
55 <source>PORTAL</source>
\r
57 <aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
\r
58 <aetgt:ErrorMessage>Received error from SDN-C: No availability zone available</aetgt:ErrorMessage>
\r
59 <aetgt:ErrorCode>7000</aetgt:ErrorCode>
\r
60 </aetgt:WorkflowException>
\r
61 </aetgt:FalloutHandlerRequest>"""
\r
63 String completeMsoProcessRequest =
\r
64 """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
\r
65 xmlns:ns="http://org.openecomp/mso/request/types/v1"
\r
66 xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
\r
68 <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
\r
69 <action>DELETE</action>
\r
70 <source>VID</source>
\r
72 <aetgt:status-message>Network has been deleted successfully.</aetgt:status-message>
\r
73 <aetgt:mso-bpel-name>BPMN Network action: DELETE</aetgt:mso-bpel-name>
\r
74 </aetgt:MsoCompletionRequest>"""
\r
76 String deleteDBRequest =
\r
77 """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
\r
78 xmlns:ns="http://org.openecomp.mso/requestsdb">
\r
81 <ns:updateInfraRequest>
\r
82 <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
\r
83 <lastModifiedBy>BPMN</lastModifiedBy>
\r
84 <statusMessage>Network successfully deleted.</statusMessage>
\r
86 <requestStatus>COMPLETED</requestStatus>
\r
87 <progress>100</progress>
\r
88 <vnfOutputs><network-outputs xmlns="http://org.openecomp/mso/infra/vnf-request/v1" xmlns:aetgt="http://org.openecomp/mso/infra/vnf-request/v1" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"/></vnfOutputs>
\r
89 </ns:updateInfraRequest>
\r
91 </soapenv:Envelope>"""
\r
93 String deleteDBRequestErrorObj =
\r
94 """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
\r
97 <ns:updateInfraRequest xmlns:ns="http://org.openecomp.mso/requestsdb">
\r
98 <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
\r
99 <lastModifiedBy>BPMN</lastModifiedBy>
\r
100 <statusMessage>Received error from SDN-C: No availability zone available</statusMessage>
\r
101 <responseBody></responseBody>
\r
102 <requestStatus>FAILED</requestStatus>
\r
103 <progress></progress>
\r
104 <vnfOutputs><network-outputs xmlns="http://org.openecomp/mso/infra/vnf-request/v1" xmlns:aetgt="http://org.openecomp/mso/infra/vnf-request/v1" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"/></vnfOutputs>
\r
105 </ns:updateInfraRequest>
\r
107 </soapenv:Envelope>"""
\r
109 String deleteDBRequestErrorString =
\r
110 """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
\r
113 <ns:updateInfraRequest xmlns:ns="http://org.openecomp.mso/requestsdb">
\r
114 <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
\r
115 <lastModifiedBy>BPMN</lastModifiedBy>
\r
116 <statusMessage>Received error from SDN-C: No availability zone available</statusMessage>
\r
117 <responseBody></responseBody>
\r
118 <requestStatus>FAILED</requestStatus>
\r
119 <progress></progress>
\r
120 <vnfOutputs><network-outputs xmlns="http://org.openecomp/mso/infra/vnf-request/v1" xmlns:aetgt="http://org.openecomp/mso/infra/vnf-request/v1" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"/></vnfOutputs>
\r
121 </ns:updateInfraRequest>
\r
123 </soapenv:Envelope>"""
\r
125 String jsonIncomingRequest =
\r
126 """{ "requestDetails": {
\r
128 "modelType": "networkTyp",
\r
129 "modelId": "modelId",
\r
130 "modelNameVersionId": "modelNameVersionId",
\r
131 "modelName": "CONTRAIL_EXTERNAL",
\r
132 "modelVersion": "1"
\r
134 "cloudConfiguration": {
\r
135 "lcpCloudRegionId": "RDM2WAGPLCP",
\r
136 "tenantId": "7dd5365547234ee8937416c65507d266"
\r
139 "instanceName": "MNS-25180-L-01-dmz_direct_net_1",
\r
142 "suppressRollback": true,
\r
143 "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"
\r
145 "relatedInstanceList": [
\r
147 "relatedInstance": {
\r
148 "instanceId": "f70e927b-6087-4974-9ef8-c5e4d5847ca4",
\r
150 "modelType": "serviceT",
\r
151 "modelId": "modelI",
\r
152 "modelNameVersionId": "modelNameVersionI",
\r
153 "modelName": "modleNam",
\r
154 "modelVersion": "1"
\r
159 "requestParameters": {
\r
162 "name": "someUserParam1",
\r
163 "value": "someValue1"
\r
175 MockitoAnnotations.initMocks(this)
\r
180 public void preProcessRequest() {
\r
182 println "************ preProcessRequest_Payload ************* "
\r
183 ExecutionEntity mockExecution = setupMock()
\r
184 // Initialize prerequisite variables
\r
185 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
\r
186 when(mockExecution.getVariable("bpmnRequest")).thenReturn(jsonIncomingRequest)
\r
188 DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
\r
189 DeleteNetworkInstance.preProcessRequest(mockExecution)
\r
191 verify(mockExecution).getVariable("isDebugLogEnabled")
\r
192 verify(mockExecution).setVariable("prefix", Prefix)
\r
194 //verify variable initialization
\r
195 initializeVariables(mockExecution)
\r
200 public void initializeVariables (DelegateExecution mockExecution) {
\r
203 verify(mockExecution).setVariable(Prefix + "Success", false)
\r
205 verify(mockExecution).setVariable(Prefix + "CompleteMsoProcessRequest", "")
\r
206 verify(mockExecution).setVariable(Prefix + "FalloutHandlerRequest", "")
\r
207 verify(mockExecution).setVariable(Prefix + "isSilentSuccess", false)
\r
214 public void getNetworkModelInfo() {
\r
216 println "************ getNetworkModelInfo() ************* "
\r
218 ExecutionEntity mockExecution = mock(ExecutionEntity.class)
\r
219 // Initialize prerequisite variables
\r
220 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
\r
222 // preProcessRequest(DelegateExecution execution)
\r
223 DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
\r
224 DeleteNetworkInstance.getNetworkModelInfo(mockExecution)
\r
226 verify(mockExecution).getVariable("isDebugLogEnabled")
\r
227 verify(mockExecution).setVariable("prefix", Prefix)
\r
233 public void sendSyncResponse() {
\r
235 println "************ sendSyncResponse ************* "
\r
237 ExecutionEntity mockExecution = setupMock()
\r
238 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
\r
239 when(mockExecution.getVariable("isAsyncProcess")).thenReturn(true)
\r
240 when(mockExecution.getVariable("mso-request-id")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
\r
241 when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
\r
243 // preProcessRequest(DelegateExecution execution)
\r
244 DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
\r
245 DeleteNetworkInstance.sendSyncResponse(mockExecution)
\r
247 verify(mockExecution).setVariable("prefix", Prefix)
\r
248 verify(mockExecution).setVariable("DeleteNetworkInstanceResponseCode", "202")
\r
255 public void sendSyncError() {
\r
257 println "************ sendSyncError ************* "
\r
259 ExecutionEntity mockExecution = setupMock()
\r
260 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
\r
261 when(mockExecution.getVariable("isAsyncProcess")).thenReturn(true)
\r
262 when(mockExecution.getVariable("mso-request-id")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
\r
263 when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
\r
265 DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
\r
266 DeleteNetworkInstance.sendSyncError(mockExecution)
\r
268 verify(mockExecution).setVariable("prefix", Prefix)
\r
269 verify(mockExecution).setVariable("DeleteNetworkInstanceResponseCode", "500")
\r
276 public void prepareCompletion() {
\r
278 println "************ postProcessResponse ************* "
\r
279 ExecutionEntity mockExecution = mock(ExecutionEntity.class)
\r
280 // Initialize prerequisite variables
\r
281 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
\r
282 when(mockExecution.getVariable(Prefix + "source")).thenReturn("PORTAL")
\r
283 when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
\r
285 // postProcessResponse(DelegateExecution execution)
\r
286 DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
\r
287 DeleteNetworkInstance.prepareCompletion(mockExecution)
\r
289 // check the sequence of variable invocation
\r
290 //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
\r
291 //preDebugger.printInvocations(mockExecution)
\r
293 verify(mockExecution).getVariable("isDebugLogEnabled")
\r
294 verify(mockExecution).setVariable("prefix", Prefix)
\r
295 verify(mockExecution).setVariable(Prefix + "CompleteMsoProcessRequest", completeMsoProcessRequest)
\r
302 public void prepareDBRequestError() {
\r
304 println "************ prepareDBRequestError ************* "
\r
306 WorkflowException sndcWorkflowExceptionObj = new WorkflowException("CreateNetworkV2", 500, "Received error from SDN-C: No availability zone available")
\r
308 ExecutionEntity mockExecution = setupMock()
\r
309 // Initialize prerequisite variables
\r
310 when(mockExecution.getVariable(Prefix + "requestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
\r
311 when(mockExecution.getVariable("WorkflowException")).thenReturn(sndcWorkflowExceptionObj)
\r
312 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
\r
313 when(mockExecution.getVariable("URN_mso_adapters_db_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
\r
314 when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
\r
316 // preProcessRequest(DelegateExecution execution)
\r
317 DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
\r
318 DeleteNetworkInstance.prepareDBRequestError(mockExecution)
\r
320 verify(mockExecution).setVariable("prefix", Prefix)
\r
321 verify(mockExecution).setVariable(Prefix + "deleteDBRequest", deleteDBRequestErrorObj)
\r
328 public void postProcessResponse() {
\r
330 println "************ postProcessResponse ************* "
\r
331 ExecutionEntity mockExecution = setupMock()
\r
332 // Initialize prerequisite variables
\r
333 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
\r
334 when(mockExecution.getVariable("CMSO_ResponseCode")).thenReturn("200")
\r
336 // postProcessResponse(DelegateExecution execution)
\r
337 DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
\r
338 DeleteNetworkInstance.postProcessResponse(mockExecution)
\r
340 verify(mockExecution).setVariable("prefix", Prefix)
\r
341 verify(mockExecution).setVariable(Prefix + "Success", true)
\r
349 public void buildErrorResponse_FalloutHandlerRequest() {
\r
351 println "************ buildErrorResponse ************* "
\r
353 WorkflowException sndcWorkflowExceptionObj = new WorkflowException("DeleteNetworkInstance", 7000, "Received error from SDN-C: No availability zone available")
\r
355 ExecutionEntity mockExecution = setupMock()
\r
356 // Initialize prerequisite variables
\r
357 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
\r
358 when(mockExecution.getVariable("mso-request-id")).thenReturn("b69c9054-da09-4a2c-adf5-51042b62bfac")
\r
359 when(mockExecution.getVariable("WorkflowException")).thenReturn(sndcWorkflowExceptionObj)
\r
360 when(mockExecution.getVariable(Prefix + "source")).thenReturn("PORTAL")
\r
362 // buildErrorResponse(DelegateExecution execution)
\r
363 DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
\r
364 DeleteNetworkInstance.buildErrorResponse(mockExecution)
\r
366 verify(mockExecution).setVariable("prefix", Prefix)
\r
367 verify(mockExecution).setVariable(Prefix + "Success", false)
\r
368 verify(mockExecution).setVariable(Prefix + "FalloutHandlerRequest", falloutHandlerRequestObj)
\r
373 private ExecutionEntity setupMock() {
\r
375 ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
\r
376 when(mockProcessDefinition.getKey()).thenReturn("DeleteNetworkInstance")
\r
377 RepositoryService mockRepositoryService = mock(RepositoryService.class)
\r
378 when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
\r
379 when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DeleteNetworkInstance")
\r
380 when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
\r
381 ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
\r
382 when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
\r
384 ExecutionEntity mockExecution = mock(ExecutionEntity.class)
\r
385 // Initialize prerequisite variables
\r
387 when(mockExecution.getId()).thenReturn("100")
\r
388 when(mockExecution.getProcessDefinitionId()).thenReturn("DeleteNetworkInstance")
\r
389 when(mockExecution.getProcessInstanceId()).thenReturn("DeleteNetworkInstance")
\r
390 when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
\r
391 when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
\r
393 return mockExecution
\r