2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.so.bpmn.infrastructure.scripts
24 import static org.mockito.Mockito.*
26 import org.apache.commons.lang3.*
27 import org.camunda.bpm.engine.ProcessEngineServices
28 import org.camunda.bpm.engine.RepositoryService
29 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
30 import org.camunda.bpm.engine.repository.ProcessDefinition
31 import org.camunda.bpm.engine.delegate.DelegateExecution
32 import org.junit.Before
35 import org.junit.runner.RunWith
36 import org.mockito.MockitoAnnotations
37 import org.mockito.runners.MockitoJUnitRunner
38 import org.onap.so.bpmn.common.scripts.MsoUtils
39 import org.onap.so.bpmn.core.WorkflowException
41 import com.github.tomakehurst.wiremock.junit.WireMockRule
44 @RunWith(MockitoJUnitRunner.class)
45 class DeleteNetworkInstanceTest {
48 public WireMockRule wireMockRule = new WireMockRule(8090);
50 String Prefix="DELNI_"
51 def utils = new MsoUtils()
53 String falloutHandlerRequest =
54 """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
55 xmlns:ns="http://org.onap/so/request/types/v1"
56 xmlns:wfsch="http://org.onap/so/workflow/schema/v1">
57 <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
58 <request-id>b69c9054-da09-4a2c-adf5-51042b62bfac</request-id>
59 <action>DELETE</action>
60 <source>PORTAL</source>
62 <aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
63 <aetgt:ErrorMessage>Received error from SDN-C: No availability zone available</aetgt:ErrorMessage>
64 <aetgt:ErrorCode>5300</aetgt:ErrorCode>
65 <aetgt:SourceSystemErrorCode>200</aetgt:SourceSystemErrorCode>
66 </aetgt:WorkflowException>
67 </aetgt:FalloutHandlerRequest>"""
69 String falloutHandlerRequestObj =
70 """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
71 xmlns:ns="http://org.onap/so/request/types/v1"
72 xmlns:wfsch="http://org.onap/so/workflow/schema/v1">
73 <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
74 <request-id>b69c9054-da09-4a2c-adf5-51042b62bfac</request-id>
75 <action>DELETE</action>
76 <source>PORTAL</source>
78 <aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
79 <aetgt:ErrorMessage>Received error from SDN-C: No availability zone available</aetgt:ErrorMessage>
80 <aetgt:ErrorCode>7000</aetgt:ErrorCode>
81 </aetgt:WorkflowException>
82 </aetgt:FalloutHandlerRequest>"""
84 String completeMsoProcessRequest =
85 """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
86 xmlns:ns="http://org.onap/so/request/types/v1"
87 xmlns="http://org.onap/so/infra/vnf-request/v1">
89 <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
90 <action>DELETE</action>
93 <aetgt:status-message>Network has been deleted successfully.</aetgt:status-message>
94 <aetgt:mso-bpel-name>BPMN Network action: DELETE</aetgt:mso-bpel-name>
95 </aetgt:MsoCompletionRequest>"""
97 String deleteDBRequest =
98 """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
99 xmlns:ns="http://org.onap.so/requestsdb">
102 <ns:updateInfraRequest>
103 <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
104 <lastModifiedBy>BPMN</lastModifiedBy>
105 <statusMessage>Network successfully deleted.</statusMessage>
107 <requestStatus>COMPLETED</requestStatus>
108 <progress>100</progress>
109 <vnfOutputs><network-outputs xmlns="http://org.onap/so/infra/vnf-request/v1" xmlns:aetgt="http://org.onap/so/infra/vnf-request/v1" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"/></vnfOutputs>
110 </ns:updateInfraRequest>
112 </soapenv:Envelope>"""
114 String deleteDBRequestErrorObj =
115 """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
118 <ns:updateInfraRequest xmlns:ns="http://org.onap.so/requestsdb">
119 <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
120 <lastModifiedBy>BPMN</lastModifiedBy>
121 <statusMessage>Received error from SDN-C: No availability zone available</statusMessage>
122 <responseBody></responseBody>
123 <requestStatus>FAILED</requestStatus>
124 <progress></progress>
125 <vnfOutputs><network-outputs xmlns="http://org.onap/so/infra/vnf-request/v1" xmlns:aetgt="http://org.onap/so/infra/vnf-request/v1" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"/></vnfOutputs>
126 </ns:updateInfraRequest>
128 </soapenv:Envelope>"""
130 String deleteDBRequestErrorString =
131 """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
134 <ns:updateInfraRequest xmlns:ns="http://org.onap.so/requestsdb">
135 <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
136 <lastModifiedBy>BPMN</lastModifiedBy>
137 <statusMessage>Received error from SDN-C: No availability zone available</statusMessage>
138 <responseBody></responseBody>
139 <requestStatus>FAILED</requestStatus>
140 <progress></progress>
141 <vnfOutputs><network-outputs xmlns="http://org.onap/so/infra/vnf-request/v1" xmlns:aetgt="http://org.onap/so/infra/vnf-request/v1" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"/></vnfOutputs>
142 </ns:updateInfraRequest>
144 </soapenv:Envelope>"""
146 String jsonIncomingRequest =
147 """{ "requestDetails": {
149 "modelType": "networkTyp",
150 "modelId": "modelId",
151 "modelNameVersionId": "modelNameVersionId",
152 "modelName": "CONTRAIL_EXTERNAL",
155 "cloudConfiguration": {
156 "lcpCloudRegionId": "RDM2WAGPLCP",
157 "tenantId": "7dd5365547234ee8937416c65507d266"
160 "instanceName": "MNS-25180-L-01-dmz_direct_net_1",
163 "suppressRollback": true,
164 "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"
166 "relatedInstanceList": [
169 "instanceId": "f70e927b-6087-4974-9ef8-c5e4d5847ca4",
171 "modelType": "serviceT",
173 "modelNameVersionId": "modelNameVersionI",
174 "modelName": "modleNam",
180 "requestParameters": {
183 "name": "someUserParam1",
184 "value": "someValue1"
196 MockitoAnnotations.initMocks(this)
201 public void preProcessRequest() {
203 println "************ preProcessRequest_Payload ************* "
204 ExecutionEntity mockExecution = setupMock()
205 // Initialize prerequisite variables
206 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
207 when(mockExecution.getVariable("bpmnRequest")).thenReturn(jsonIncomingRequest)
209 DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
210 DeleteNetworkInstance.preProcessRequest(mockExecution)
212 verify(mockExecution).getVariable("isDebugLogEnabled")
213 verify(mockExecution).setVariable("prefix", Prefix)
215 //verify variable initialization
216 initializeVariables(mockExecution)
221 public void initializeVariables (DelegateExecution mockExecution) {
224 verify(mockExecution).setVariable(Prefix + "Success", false)
226 verify(mockExecution).setVariable(Prefix + "CompleteMsoProcessRequest", "")
227 verify(mockExecution).setVariable(Prefix + "FalloutHandlerRequest", "")
228 verify(mockExecution).setVariable(Prefix + "isSilentSuccess", false)
235 public void getNetworkModelInfo() {
237 println "************ getNetworkModelInfo() ************* "
239 ExecutionEntity mockExecution = mock(ExecutionEntity.class)
240 // Initialize prerequisite variables
241 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
243 // preProcessRequest(DelegateExecution execution)
244 DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
245 DeleteNetworkInstance.getNetworkModelInfo(mockExecution)
247 verify(mockExecution).getVariable("isDebugLogEnabled")
248 verify(mockExecution).setVariable("prefix", Prefix)
254 public void sendSyncResponse() {
256 println "************ sendSyncResponse ************* "
258 ExecutionEntity mockExecution = setupMock()
259 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
260 when(mockExecution.getVariable("isAsyncProcess")).thenReturn(true)
261 when(mockExecution.getVariable("mso-request-id")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
262 when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
264 // preProcessRequest(DelegateExecution execution)
265 DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
266 DeleteNetworkInstance.sendSyncResponse(mockExecution)
268 verify(mockExecution).setVariable("prefix", Prefix)
269 verify(mockExecution).setVariable("DeleteNetworkInstanceResponseCode", "202")
276 public void sendSyncError() {
278 println "************ sendSyncError ************* "
280 ExecutionEntity mockExecution = setupMock()
281 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
282 when(mockExecution.getVariable("isAsyncProcess")).thenReturn(true)
283 when(mockExecution.getVariable("mso-request-id")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
284 when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
286 DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
287 DeleteNetworkInstance.sendSyncError(mockExecution)
289 verify(mockExecution).setVariable("prefix", Prefix)
290 verify(mockExecution).setVariable("DeleteNetworkInstanceResponseCode", "500")
297 public void prepareCompletion() {
299 println "************ postProcessResponse ************* "
300 ExecutionEntity mockExecution = mock(ExecutionEntity.class)
301 // Initialize prerequisite variables
302 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
303 when(mockExecution.getVariable(Prefix + "source")).thenReturn("PORTAL")
304 when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
306 // postProcessResponse(DelegateExecution execution)
307 DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
308 DeleteNetworkInstance.prepareCompletion(mockExecution)
310 // check the sequence of variable invocation
311 //MockitoDebuggerImpl preDebugger = new MockitoDebuggerImpl()
312 //preDebugger.printInvocations(mockExecution)
314 verify(mockExecution).getVariable("isDebugLogEnabled")
315 verify(mockExecution).setVariable("prefix", Prefix)
316 verify(mockExecution).setVariable(Prefix + "CompleteMsoProcessRequest", completeMsoProcessRequest)
323 public void prepareDBRequestError() {
325 println "************ prepareDBRequestError ************* "
327 WorkflowException sndcWorkflowExceptionObj = new WorkflowException("CreateNetworkV2", 500, "Received error from SDN-C: No availability zone available")
329 ExecutionEntity mockExecution = setupMock()
330 // Initialize prerequisite variables
331 when(mockExecution.getVariable(Prefix + "requestId")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
332 when(mockExecution.getVariable("WorkflowException")).thenReturn(sndcWorkflowExceptionObj)
333 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
334 when(mockExecution.getVariable("mso.adapters.db.auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
335 when(mockExecution.getVariable("mso.msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
337 // preProcessRequest(DelegateExecution execution)
338 DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
339 DeleteNetworkInstance.prepareDBRequestError(mockExecution)
341 verify(mockExecution).setVariable("prefix", Prefix)
342 verify(mockExecution).setVariable(Prefix + "deleteDBRequest", deleteDBRequestErrorObj)
349 public void postProcessResponse() {
351 println "************ postProcessResponse ************* "
352 ExecutionEntity mockExecution = setupMock()
353 // Initialize prerequisite variables
354 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
355 when(mockExecution.getVariable("CMSO_ResponseCode")).thenReturn("200")
357 // postProcessResponse(DelegateExecution execution)
358 DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
359 DeleteNetworkInstance.postProcessResponse(mockExecution)
361 verify(mockExecution).setVariable("prefix", Prefix)
362 verify(mockExecution).setVariable(Prefix + "Success", true)
370 public void buildErrorResponse_FalloutHandlerRequest() {
372 println "************ buildErrorResponse ************* "
374 WorkflowException sndcWorkflowExceptionObj = new WorkflowException("DeleteNetworkInstance", 7000, "Received error from SDN-C: No availability zone available")
376 ExecutionEntity mockExecution = setupMock()
377 // Initialize prerequisite variables
378 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
379 when(mockExecution.getVariable("mso-request-id")).thenReturn("b69c9054-da09-4a2c-adf5-51042b62bfac")
380 when(mockExecution.getVariable("WorkflowException")).thenReturn(sndcWorkflowExceptionObj)
381 when(mockExecution.getVariable(Prefix + "source")).thenReturn("PORTAL")
383 // buildErrorResponse(DelegateExecution execution)
384 DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
385 DeleteNetworkInstance.buildErrorResponse(mockExecution)
387 verify(mockExecution).setVariable("prefix", Prefix)
388 verify(mockExecution).setVariable(Prefix + "Success", false)
389 verify(mockExecution).setVariable(Prefix + "FalloutHandlerRequest", falloutHandlerRequestObj)
394 private ExecutionEntity setupMock() {
396 ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
397 when(mockProcessDefinition.getKey()).thenReturn("DeleteNetworkInstance")
398 RepositoryService mockRepositoryService = mock(RepositoryService.class)
399 when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
400 when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DeleteNetworkInstance")
401 when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
402 ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
403 when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
405 ExecutionEntity mockExecution = mock(ExecutionEntity.class)
406 // Initialize prerequisite variables
408 when(mockExecution.getId()).thenReturn("100")
409 when(mockExecution.getProcessDefinitionId()).thenReturn("DeleteNetworkInstance")
410 when(mockExecution.getProcessInstanceId()).thenReturn("DeleteNetworkInstance")
411 when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
412 when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)