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.vcpe.scripts
23 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
24 import org.junit.Before
25 import org.junit.BeforeClass
28 import org.junit.Ignore
29 import org.mockito.MockitoAnnotations
30 import org.camunda.bpm.engine.delegate.BpmnError
31 import org.mockito.Spy
32 import org.onap.so.bpmn.core.UrnPropertiesReader
33 import org.onap.so.bpmn.mock.FileUtil
34 import org.onap.so.client.aai.entities.uri.AAIResourceUri
35 import static org.junit.Assert.*;
36 import static org.mockito.Mockito.*
37 import static org.onap.so.bpmn.mock.StubResponseAAI.MockDeleteAllottedResource
38 import static org.onap.so.bpmn.mock.StubResponseAAI.MockGetAllottedResource
39 import static org.onap.so.bpmn.mock.StubResponseAAI.MockPatchAllottedResource
40 import com.github.tomakehurst.wiremock.junit.WireMockRule
42 class DoDeleteAllottedResourceTXCTest extends GroovyTestBase {
45 public WireMockRule wireMockRule = new WireMockRule(PORT)
47 String Prefix = "DDARTXC_"
50 DoDeleteAllottedResourceTXC doDeleteAllottedResourceTXC
53 public static void setUpBeforeClass() {
54 super.setUpBeforeClass()
60 MockitoAnnotations.initMocks(this)
62 when(doDeleteAllottedResourceTXC.getAllottedResourceUtils()).thenReturn(allottedResourceUtils_MOCK)
65 public DoDeleteAllottedResourceTXCTest() {
66 super("DoDeleteAllottedResourceTXC")
70 // ***** preProcessRequest *****
74 public void preProcessRequest() {
75 ExecutionEntity mex = setupMock()
78 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
79 DoDeleteAllottedResourceTXC.preProcessRequest(mex)
81 //verify(mex).getVariable(DBGFLAG)
82 verify(mex).setVariable("prefix", Prefix)
83 verify(mex).setVariable("sdncCallbackUrl", "sdncurn")
85 assertTrue(checkMissingPreProcessRequest("mso.workflow.sdncadapter.callback"))
86 assertTrue(checkMissingPreProcessRequest("serviceInstanceId"))
87 assertTrue(checkMissingPreProcessRequest("allottedResourceId"))
92 public void preProcessRequest_BpmnError() {
93 ExecutionEntity mex = setupMock()
96 when(mex.getVariable("serviceInstanceId")).thenThrow(new BpmnError("expected exception"))
98 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
100 assertTrue(doBpmnError( { _ -> DoDeleteAllottedResourceTXC.preProcessRequest(mex) }))
105 public void preProcessRequest_Ex() {
106 ExecutionEntity mex = setupMock()
109 when(mex.getVariable("serviceInstanceId")).thenThrow(new RuntimeException("expected exception"))
111 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
113 assertTrue(doBpmnError( { _ -> DoDeleteAllottedResourceTXC.preProcessRequest(mex) }))
117 // ***** getAaiAR *****
120 public void getAaiAR() {
122 ExecutionEntity mex = setupMock()
124 when(client_MOCK.exists(any(AAIResourceUri.class))).thenReturn(true)
125 doDeleteAllottedResourceTXC.getAaiAR(mex)
126 verify(mex).setVariable("parentServiceInstanceId", INST)
130 public void getAaiAR_EmptyResponse() {
131 ExecutionEntity mex = setupMock()
133 when(client_MOCK.exists(any(AAIResourceUri.class))).thenReturn(false)
134 assertTrue(doBpmnError( { _ -> doDeleteAllottedResourceTXC.getAaiAR(mex) }))
138 // ***** updateAaiAROrchStatus *****
142 public void updateAaiAROrchStatus() {
143 ExecutionEntity mex = setupMock()
144 initUpdateAaiAROrchStatus(mex)
146 MockPatchAllottedResource(CUST, SVC, INST, ARID)
148 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
149 DoDeleteAllottedResourceTXC.updateAaiAROrchStatus(mex, "success")
153 // ***** buildSDNCRequest *****
157 public void buildSDNCRequest() {
158 ExecutionEntity mex = setupMock()
159 initBuildSDNCRequest(mex)
161 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
163 String result = DoDeleteAllottedResourceTXC.buildSDNCRequest(mex, "myact", "myreq")
165 assertTrue(result.indexOf("<sdncadapter:RequestId>myreq</") >= 0)
166 assertTrue(result.indexOf("<sdncadapter:SvcAction>myact</") >= 0)
167 assertTrue(result.indexOf("<allotted-resource-id>ari</") >= 0)
168 assertTrue(result.indexOf("<sdncadapter:SvcInstanceId>sii</") >= 0)
169 assertTrue(result.indexOf("<service-instance-id>sii</") >= 0)
170 assertTrue(result.indexOf("<parent-service-instance-id>psii</") >= 0)
171 assertTrue(result.indexOf("<subscription-service-type>sst</") >= 0)
172 assertTrue(result.indexOf("<global-customer-id>gci</") >= 0)
173 assertTrue(result.indexOf("<sdncadapter:CallbackUrl>scu</") >= 0)
174 assertTrue(result.indexOf("<request-id>mri</") >= 0)
175 assertTrue(result.indexOf("<model-invariant-uuid/>") >= 0)
176 assertTrue(result.indexOf("<model-uuid/>") >= 0)
177 assertTrue(result.indexOf("<model-customization-uuid/>") >= 0)
178 assertTrue(result.indexOf("<model-version/>") >= 0)
179 assertTrue(result.indexOf("<model-name/>") >= 0)
184 public void buildSDNCRequest_Ex() {
185 ExecutionEntity mex = setupMock()
186 initBuildSDNCRequest(mex)
188 when(mex.getVariable("allottedResourceId")).thenThrow(new RuntimeException("expected exception"))
190 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
192 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.buildSDNCRequest(mex, "myact", "myreq") }))
196 // ***** preProcessSDNCUnassign *****
200 public void preProcessSDNCUnassign() {
201 ExecutionEntity mex = setupMock()
202 def map = setupMap(mex)
203 initPreProcessSDNC(mex)
205 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
206 DoDeleteAllottedResourceTXC.preProcessSDNCUnassign(mex)
208 def req = map.get("sdncUnassignRequest")
210 assertTrue(req.indexOf("<sdncadapter:SvcAction>unassign</") >= 0)
211 assertTrue(req.indexOf("<request-action>DeleteTunnelXConnInstance</") >= 0)
212 assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
217 public void preProcessSDNCUnassign_BpmnError() {
218 ExecutionEntity mex = setupMock()
219 initPreProcessSDNC(mex)
221 when(mex.getVariable("allottedResourceId")).thenThrow(new BpmnError("expected exception"))
223 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
225 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessSDNCUnassign(mex) }))
230 public void preProcessSDNCUnassign_Ex() {
231 ExecutionEntity mex = setupMock()
232 initPreProcessSDNC(mex)
234 when(mex.getVariable("allottedResourceId")).thenThrow(new RuntimeException("expected exception"))
236 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
238 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessSDNCUnassign(mex) }))
242 // ***** preProcessSDNCDelete *****
246 public void preProcessSDNCDelete() {
247 ExecutionEntity mex = setupMock()
248 def map = setupMap(mex)
249 initPreProcessSDNC(mex)
251 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
252 DoDeleteAllottedResourceTXC.preProcessSDNCDelete(mex)
254 def req = map.get("sdncDeleteRequest")
256 assertTrue(req.indexOf("<sdncadapter:SvcAction>delete</") >= 0)
257 assertTrue(req.indexOf("<request-action>DeleteTunnelXConnInstance</") >= 0)
258 assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
263 public void preProcessSDNCDelete_BpmnError() {
264 ExecutionEntity mex = setupMock()
265 initPreProcessSDNC(mex)
267 when(mex.getVariable("allottedResourceId")).thenThrow(new BpmnError("expected exception"))
269 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
271 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessSDNCDelete(mex) }))
276 public void preProcessSDNCDelete_Ex() {
277 ExecutionEntity mex = setupMock()
278 initPreProcessSDNC(mex)
280 when(mex.getVariable("allottedResourceId")).thenThrow(new RuntimeException("expected exception"))
282 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
284 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessSDNCDelete(mex) }))
288 // ***** preProcessSDNCDeactivate *****
292 public void preProcessSDNCDeactivate() {
293 ExecutionEntity mex = setupMock()
294 def map = setupMap(mex)
295 initPreProcessSDNC(mex)
297 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
298 DoDeleteAllottedResourceTXC.preProcessSDNCDeactivate(mex)
300 def req = map.get("sdncDeactivateRequest")
302 assertTrue(req.indexOf("<sdncadapter:SvcAction>deactivate</") >= 0)
303 assertTrue(req.indexOf("<request-action>DeleteTunnelXConnInstance</") >= 0)
304 assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
309 public void preProcessSDNCDeactivate_BpmnError() {
310 ExecutionEntity mex = setupMock()
311 initPreProcessSDNC(mex)
313 when(mex.getVariable("allottedResourceId")).thenThrow(new BpmnError("expected exception"))
315 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
317 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessSDNCDeactivate(mex) }))
322 public void preProcessSDNCDeactivate_Ex() {
323 ExecutionEntity mex = setupMock()
324 initPreProcessSDNC(mex)
326 when(mex.getVariable("allottedResourceId")).thenThrow(new RuntimeException("expected exception"))
328 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
330 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessSDNCDeactivate(mex) }))
334 // ***** validateSDNCResp *****
338 public void validateSDNCResp() {
339 ExecutionEntity mex = setupMock()
340 def data = initValidateSDNCResp(mex)
341 def resp = initValidateSDNCResp_Resp(200)
343 when(mex.getVariable(Prefix+"sdncResponseSuccess")).thenReturn(true)
345 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
347 DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "create")
349 verify(mex).getVariable("WorkflowException")
350 verify(mex).getVariable("SDNCA_SuccessIndicator")
351 verify(mex).getVariable(Prefix+"sdncResponseSuccess")
353 verify(mex, never()).getVariable(Prefix + "sdncRequestDataResponseCode")
354 verify(mex, never()).setVariable("wasDeleted", false)
359 public void validateSDNCResp_Fail404_Deactivate_FailNotFound() {
360 ExecutionEntity mex = setupMock()
361 def data = initValidateSDNCResp(mex)
363 def resp = initValidateSDNCResp_Resp(404)
364 when(mex.getVariable(Prefix+"sdncRequestDataResponseCode")).thenReturn("404")
365 when(mex.getVariable("failNotFound")).thenReturn("true")
367 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
369 assertTrue(doBpmnError( { _ -> DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "deactivate")}))
374 public void validateSDNCResp_Fail404_Deactivate() {
375 ExecutionEntity mex = setupMock()
376 def data = initValidateSDNCResp(mex)
378 def resp = initValidateSDNCResp_Resp(404)
379 when(mex.getVariable(Prefix+"sdncRequestDataResponseCode")).thenReturn("404")
381 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
383 DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "deactivate")
385 verify(mex).setVariable("ARNotFoundInSDNC", true)
386 verify(mex).setVariable("wasDeleted", false)
391 public void validateSDNCResp_Fail404() {
392 ExecutionEntity mex = setupMock()
393 def data = initValidateSDNCResp(mex)
395 def resp = initValidateSDNCResp_Resp(404)
396 when(mex.getVariable(Prefix+"sdncRequestDataResponseCode")).thenReturn("404")
398 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
400 assertTrue(doBpmnError( { _ -> DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "create")}))
405 public void validateSDNCResp_Deactivate() {
406 ExecutionEntity mex = setupMock()
407 def data = initValidateSDNCResp(mex)
408 def resp = initValidateSDNCResp_Resp(200)
410 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
412 assertTrue(doBpmnError( { _ -> DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "deactivate")}))
417 public void validateSDNCResp_BpmnError() {
418 ExecutionEntity mex = setupMock()
419 initValidateSDNCResp(mex)
420 def resp = initValidateSDNCResp_Resp(200)
422 when(mex.getVariable("WorkflowException")).thenThrow(new BpmnError("expected exception"))
424 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
426 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "create") }))
431 public void validateSDNCResp_Ex() {
432 ExecutionEntity mex = setupMock()
433 initValidateSDNCResp(mex)
434 def resp = initValidateSDNCResp_Resp(200)
436 when(mex.getVariable("WorkflowException")).thenThrow(new RuntimeException("expected exception"))
438 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
440 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "create") }))
445 public void deleteAaiAR() {
446 ExecutionEntity mex = setupMock()
449 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoDeleteAllottedResourceTXC/arGetById.xml")
450 MockDeleteAllottedResource(CUST, SVC, INST, ARID, VERS)
452 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
453 DoDeleteAllottedResourceTXC.deleteAaiAR(mex)
458 public void deleteAaiAR_NoArPath() {
459 ExecutionEntity mex = setupMock()
462 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoDeleteAllottedResourceTXC/arGetById.xml")
463 MockDeleteAllottedResource(CUST, SVC, INST, ARID, VERS)
465 when(mex.getVariable("aaiARPath")).thenReturn("")
467 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
469 assertTrue(doBpmnError( { _ -> DoDeleteAllottedResourceTXC.deleteAaiAR(mex) }))
474 public void deleteAaiAR_BpmnError() {
475 ExecutionEntity mex = setupMock()
478 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoDeleteAllottedResourceTXC/arGetById.xml")
479 MockDeleteAllottedResource(CUST, SVC, INST, ARID, VERS)
481 when(mex.getVariable("aaiARPath")).thenThrow(new BpmnError("expected exception"))
483 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
485 assertTrue(doBpmnError( { _ -> DoDeleteAllottedResourceTXC.deleteAaiAR(mex) }))
490 public void deleteAaiAR_Ex() {
491 ExecutionEntity mex = setupMock()
494 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoDeleteAllottedResourceTXC/arGetById.xml")
495 MockDeleteAllottedResource(CUST, SVC, INST, ARID, VERS)
497 when(mex.getVariable("aaiARPath")).thenThrow(new RuntimeException("expected exception"))
499 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
501 assertTrue(doBpmnError( { _ -> DoDeleteAllottedResourceTXC.deleteAaiAR(mex) }))
504 private boolean checkMissingPreProcessRequest(String fieldnm) {
505 ExecutionEntity mex = setupMock()
508 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
510 when(mex.getVariable(fieldnm)).thenReturn("")
512 return doBpmnError( { _ -> DoDeleteAllottedResourceTXC.preProcessRequest(mex) })
515 private void initPreProcess(ExecutionEntity mex) {
516 when(mex.getVariable(DBGFLAG)).thenReturn("true")
517 when(mex.getVariable("mso.workflow.sdncadapter.callback")).thenReturn("sdncurn")
518 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
519 when(mex.getVariable("allottedResourceId")).thenReturn("ari")
522 private void initGetAaiAR(ExecutionEntity mex) {
523 when(mex.getVariable(DBGFLAG)).thenReturn("true")
524 when(mex.getVariable("allottedResourceType")).thenReturn("TXC")
525 when(mex.getVariable("allottedResourceRole")).thenReturn("TXC")
526 when(mex.getVariable("allottedResourceId")).thenReturn(ARID)
527 when(mex.getVariable("CSI_service")).thenReturn(FileUtil.readResourceFile("__files/VCPE/DoDeleteAllottedResourceTXC/getAR.xml"))
528 when(mex.getVariable("mso.workflow.global.default.aai.namespace")).thenReturn(UrnPropertiesReader.getVariable("mso.workflow.global.default.aai.namespace"))
529 when(mex.getVariable("mso.workflow.global.default.aai.version")).thenReturn(UrnPropertiesReader.getVariable("mso.workflow.global.default.aai.version"))
530 when(mex.getVariable("mso.workflow.default.aai.v8.nodes.query.uri")).thenReturn(UrnPropertiesReader.getVariable("mso.workflow.default.aai.v8.nodes-query.uri"))
531 when(mex.getVariable("aai.endpoint")).thenReturn(aaiUriPfx)
532 when(mex.getVariable("aaiARPath")).thenReturn("/business/customers/customer/"+CUST+"/service-subscriptions/service-subscription/"+SVC+"/service-instances/service-instance/"+INST+"/allotted-resources/allotted-resource/"+ARID)
533 when(mex.getVariable("aaiAROrchStatus")).thenReturn("Active")
536 private initUpdateAaiAROrchStatus(ExecutionEntity mex) {
537 when(mex.getVariable(DBGFLAG)).thenReturn("true")
538 when(mex.getVariable("aaiARPath")).thenReturn("/business/customers/customer/"+CUST+"/service-subscriptions/service-subscription/"+SVC+"/service-instances/service-instance/"+INST+"/allotted-resources/allotted-resource/"+ARID)
541 private initBuildSDNCRequest(ExecutionEntity mex) {
542 when(mex.getVariable(DBGFLAG)).thenReturn("true")
543 when(mex.getVariable("allottedResourceId")).thenReturn("ari")
544 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
545 when(mex.getVariable("parentServiceInstanceId")).thenReturn("psii")
546 when(mex.getVariable("subscriptionServiceType")).thenReturn("sst")
547 when(mex.getVariable("globalCustomerId")).thenReturn("gci")
548 when(mex.getVariable("sdncCallbackUrl")).thenReturn("scu")
549 when(mex.getVariable("msoRequestId")).thenReturn("mri")
552 private initPreProcessSDNC(ExecutionEntity mex) {
553 when(mex.getVariable(DBGFLAG)).thenReturn("true")
556 private initValidateSDNCResp(ExecutionEntity mex) {
557 when(mex.getVariable(DBGFLAG)).thenReturn("true")
558 when(mex.getVariable("prefix")).thenReturn(Prefix)
559 when(mex.getVariable("SDNCA_SuccessIndicator")).thenReturn(true)
562 private String initValidateSDNCResp_Resp(int code) {
563 return "<response-data><response-code>${code}</response-code></response-data>"
566 private initDeleteAaiAR(ExecutionEntity mex) {
567 when(mex.getVariable(DBGFLAG)).thenReturn("true")
568 when(mex.getVariable("aaiARPath")).thenReturn("/business/customers/customer/"+CUST+"/service-subscriptions/service-subscription/"+SVC+"/service-instances/service-instance/"+INST+"/allotted-resources/allotted-resource/"+ARID)
569 when(mex.getVariable("aaiARResourceVersion")).thenReturn("myvers")
570 when(mex.getVariable("aai.endpoint")).thenReturn(aaiUriPfx)