2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Modifications Copyright (c) 2019 Samsung
8 * ================================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ============LICENSE_END=========================================================
23 package org.onap.so.bpmn.vcpe.scripts
25 import org.camunda.bpm.engine.delegate.BpmnError
26 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
28 import org.mockito.MockitoAnnotations
29 import org.mockito.Spy
30 import org.onap.so.bpmn.core.UrnPropertiesReader
32 import static org.junit.Assert.assertTrue
33 import static org.mockito.ArgumentMatchers.eq
34 import static org.mockito.Mockito.*
35 import static org.onap.so.bpmn.mock.StubResponseAAI.MockDeleteAllottedResource
36 import static org.onap.so.bpmn.mock.StubResponseAAI.MockGetAllottedResource
37 import static org.onap.so.bpmn.mock.StubResponseAAI.MockPatchAllottedResource
38 import com.github.tomakehurst.wiremock.junit.WireMockRule
40 class DoDeleteAllottedResourceTXCTest extends GroovyTestBase {
43 public WireMockRule wireMockRule = new WireMockRule(PORT)
45 String Prefix = "DDARTXC_"
48 DoDeleteAllottedResourceTXC doDeleteAllottedResourceTXC
51 public static void setUpBeforeClass() {
52 GroovyTestBase.setUpBeforeClass()
57 MockitoAnnotations.initMocks(this)
58 initAllottedResourceMock()
61 public DoDeleteAllottedResourceTXCTest() {
62 super("DoDeleteAllottedResourceTXC")
65 // ***** preProcessRequest *****
68 public void preProcessRequest() {
69 ExecutionEntity mex = setupMock()
72 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
73 DoDeleteAllottedResourceTXC.preProcessRequest(mex)
75 verify(mex).setVariable("prefix", Prefix)
76 verify(mex).setVariable("sdncCallbackUrl", "sdncurn")
78 assertTrue(checkMissingPreProcessRequest("mso.workflow.sdncadapter.callback"))
79 assertTrue(checkMissingPreProcessRequest("serviceInstanceId"))
80 assertTrue(checkMissingPreProcessRequest("allottedResourceId"))
84 public void preProcessRequest_BpmnError() {
85 ExecutionEntity mex = setupMock()
88 when(mex.getVariable("serviceInstanceId")).thenThrow(new BpmnError("expected exception"))
90 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
92 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessRequest(mex) }))
96 public void preProcessRequest_Ex() {
97 ExecutionEntity mex = setupMock()
100 when(mex.getVariable("serviceInstanceId")).thenThrow(new RuntimeException("expected exception"))
102 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
104 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessRequest(mex) }))
107 // ***** getAaiAR *****
109 public void getAaiAR() {
111 ExecutionEntity mex = setupMock()
113 when(doDeleteAllottedResourceTXC.getAllottedResourceUtils()).thenReturn(allottedResourceUtils_MOCK)
114 doReturn(true).when(allottedResourceUtils_MOCK).ifExistsAR(eq(mex), eq(ARID))
115 doDeleteAllottedResourceTXC.getAaiAR(mex)
116 verify(mex).setVariable("parentServiceInstanceId", INST)
120 public void getAaiAR_EmptyResponse() {
121 ExecutionEntity mex = setupMock()
123 doReturn(false).when(allottedResourceUtils_MOCK).ifExistsAR(eq(mex), eq(ARID))
124 assertTrue(doBpmnError({ _ -> doDeleteAllottedResourceTXC.getAaiAR(mex) }))
127 // ***** updateAaiAROrchStatus *****
131 public void updateAaiAROrchStatus() {
132 ExecutionEntity mex = setupMock()
133 initUpdateAaiAROrchStatus(mex)
135 MockPatchAllottedResource(CUST, SVC, INST, ARID)
137 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
138 DoDeleteAllottedResourceTXC.updateAaiAROrchStatus(mex, "success")
141 // ***** buildSDNCRequest *****
144 public void buildSDNCRequest() {
145 ExecutionEntity mex = setupMock()
146 initBuildSDNCRequest(mex)
148 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
150 String result = DoDeleteAllottedResourceTXC.buildSDNCRequest(mex, "myact", "myreq")
152 assertTrue(result.indexOf("<sdncadapter:RequestId>myreq</") >= 0)
153 assertTrue(result.indexOf("<sdncadapter:SvcAction>myact</") >= 0)
154 assertTrue(result.indexOf("<allotted-resource-id>ari</") >= 0)
155 assertTrue(result.indexOf("<sdncadapter:SvcInstanceId>sii</") >= 0)
156 assertTrue(result.indexOf("<service-instance-id>sii</") >= 0)
157 assertTrue(result.indexOf("<parent-service-instance-id>psii</") >= 0)
158 assertTrue(result.indexOf("<subscription-service-type>sst</") >= 0)
159 assertTrue(result.indexOf("<global-customer-id>gci</") >= 0)
160 assertTrue(result.indexOf("<sdncadapter:CallbackUrl>scu</") >= 0)
161 assertTrue(result.indexOf("<request-id>mri</") >= 0)
162 assertTrue(result.indexOf("<model-invariant-uuid/>") >= 0)
163 assertTrue(result.indexOf("<model-uuid/>") >= 0)
164 assertTrue(result.indexOf("<model-customization-uuid/>") >= 0)
165 assertTrue(result.indexOf("<model-version/>") >= 0)
166 assertTrue(result.indexOf("<model-name/>") >= 0)
170 public void buildSDNCRequest_Ex() {
171 ExecutionEntity mex = setupMock()
172 initBuildSDNCRequest(mex)
174 when(mex.getVariable("allottedResourceId")).thenThrow(new RuntimeException("expected exception"))
176 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
178 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.buildSDNCRequest(mex, "myact", "myreq") }))
181 // ***** preProcessSDNCUnassign *****
184 public void preProcessSDNCUnassign() {
185 ExecutionEntity mex = setupMock()
186 def map = setupMap(mex)
187 initPreProcessSDNC(mex)
189 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
190 DoDeleteAllottedResourceTXC.preProcessSDNCUnassign(mex)
192 def req = map.get("sdncUnassignRequest")
194 assertTrue(req.indexOf("<sdncadapter:SvcAction>unassign</") >= 0)
195 assertTrue(req.indexOf("<request-action>DeleteTunnelXConnInstance</") >= 0)
196 assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
200 public void preProcessSDNCUnassign_BpmnError() {
201 ExecutionEntity mex = setupMock()
202 initPreProcessSDNC(mex)
204 when(mex.getVariable("allottedResourceId")).thenThrow(new BpmnError("expected exception"))
206 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
208 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessSDNCUnassign(mex) }))
212 public void preProcessSDNCUnassign_Ex() {
213 ExecutionEntity mex = setupMock()
214 initPreProcessSDNC(mex)
216 when(mex.getVariable("allottedResourceId")).thenThrow(new RuntimeException("expected exception"))
218 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
220 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessSDNCUnassign(mex) }))
223 // ***** preProcessSDNCDelete *****
226 public void preProcessSDNCDelete() {
227 ExecutionEntity mex = setupMock()
228 def map = setupMap(mex)
229 initPreProcessSDNC(mex)
231 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
232 DoDeleteAllottedResourceTXC.preProcessSDNCDelete(mex)
234 def req = map.get("sdncDeleteRequest")
236 assertTrue(req.indexOf("<sdncadapter:SvcAction>delete</") >= 0)
237 assertTrue(req.indexOf("<request-action>DeleteTunnelXConnInstance</") >= 0)
238 assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
242 public void preProcessSDNCDelete_BpmnError() {
243 ExecutionEntity mex = setupMock()
244 initPreProcessSDNC(mex)
246 when(mex.getVariable("allottedResourceId")).thenThrow(new BpmnError("expected exception"))
248 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
250 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessSDNCDelete(mex) }))
254 public void preProcessSDNCDelete_Ex() {
255 ExecutionEntity mex = setupMock()
256 initPreProcessSDNC(mex)
258 when(mex.getVariable("allottedResourceId")).thenThrow(new RuntimeException("expected exception"))
260 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
262 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessSDNCDelete(mex) }))
265 // ***** preProcessSDNCDeactivate *****
268 public void preProcessSDNCDeactivate() {
269 ExecutionEntity mex = setupMock()
270 def map = setupMap(mex)
271 initPreProcessSDNC(mex)
273 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
274 DoDeleteAllottedResourceTXC.preProcessSDNCDeactivate(mex)
276 def req = map.get("sdncDeactivateRequest")
278 assertTrue(req.indexOf("<sdncadapter:SvcAction>deactivate</") >= 0)
279 assertTrue(req.indexOf("<request-action>DeleteTunnelXConnInstance</") >= 0)
280 assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
284 public void preProcessSDNCDeactivate_BpmnError() {
285 ExecutionEntity mex = setupMock()
286 initPreProcessSDNC(mex)
288 when(mex.getVariable("allottedResourceId")).thenThrow(new BpmnError("expected exception"))
290 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
292 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessSDNCDeactivate(mex) }))
296 public void preProcessSDNCDeactivate_Ex() {
297 ExecutionEntity mex = setupMock()
298 initPreProcessSDNC(mex)
300 when(mex.getVariable("allottedResourceId")).thenThrow(new RuntimeException("expected exception"))
302 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
304 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessSDNCDeactivate(mex) }))
307 // ***** validateSDNCResp *****
310 public void validateSDNCResp() {
311 ExecutionEntity mex = setupMock()
312 initValidateSDNCResp(mex)
313 def resp = initValidateSDNCResp_Resp(200)
315 when(mex.getVariable(Prefix + "sdncResponseSuccess")).thenReturn(true)
317 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
319 DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "create")
321 verify(mex).getVariable("WorkflowException")
322 verify(mex).getVariable("SDNCA_SuccessIndicator")
323 verify(mex).getVariable(Prefix + "sdncResponseSuccess")
325 verify(mex, never()).getVariable(Prefix + "sdncRequestDataResponseCode")
326 verify(mex, never()).setVariable("wasDeleted", false)
330 public void validateSDNCResp_Fail404_Deactivate_FailNotFound() {
331 ExecutionEntity mex = setupMock()
332 initValidateSDNCResp(mex)
334 def resp = initValidateSDNCResp_Resp(404)
335 when(mex.getVariable(Prefix + "sdncRequestDataResponseCode")).thenReturn("404")
336 when(mex.getVariable("failNotFound")).thenReturn("true")
338 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
340 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "deactivate") }))
344 public void validateSDNCResp_Fail404_Deactivate() {
345 ExecutionEntity mex = setupMock()
346 initValidateSDNCResp(mex)
348 def resp = initValidateSDNCResp_Resp(404)
349 when(mex.getVariable(Prefix + "sdncRequestDataResponseCode")).thenReturn("404")
351 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
353 DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "deactivate")
355 verify(mex).setVariable("ARNotFoundInSDNC", true)
356 verify(mex).setVariable("wasDeleted", false)
360 public void validateSDNCResp_Fail404() {
361 ExecutionEntity mex = setupMock()
362 initValidateSDNCResp(mex)
364 def resp = initValidateSDNCResp_Resp(404)
365 when(mex.getVariable(Prefix + "sdncRequestDataResponseCode")).thenReturn("404")
367 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
369 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "create") }))
373 public void validateSDNCResp_Deactivate() {
374 ExecutionEntity mex = setupMock()
375 initValidateSDNCResp(mex)
376 def resp = initValidateSDNCResp_Resp(200)
378 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
380 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "deactivate") }))
384 public void validateSDNCResp_BpmnError() {
385 ExecutionEntity mex = setupMock()
386 initValidateSDNCResp(mex)
387 def resp = initValidateSDNCResp_Resp(200)
389 when(mex.getVariable("WorkflowException")).thenThrow(new BpmnError("expected exception"))
391 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
393 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "create") }))
397 public void validateSDNCResp_Ex() {
398 ExecutionEntity mex = setupMock()
399 initValidateSDNCResp(mex)
400 def resp = initValidateSDNCResp_Resp(200)
402 when(mex.getVariable("WorkflowException")).thenThrow(new RuntimeException("expected exception"))
404 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
406 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.validateSDNCResp(mex, resp, "create") }))
411 public void deleteAaiAR() {
412 ExecutionEntity mex = setupMock()
415 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoDeleteAllottedResourceTXC/arGetById.xml")
416 MockDeleteAllottedResource(CUST, SVC, INST, ARID, VERS)
418 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
419 DoDeleteAllottedResourceTXC.deleteAaiAR(mex)
423 public void deleteAaiAR_NoArPath() {
424 ExecutionEntity mex = setupMock()
427 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoDeleteAllottedResourceTXC/arGetById.xml")
428 MockDeleteAllottedResource(CUST, SVC, INST, ARID, VERS)
430 when(mex.getVariable("aaiARPath")).thenReturn("")
432 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
434 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.deleteAaiAR(mex) }))
438 public void deleteAaiAR_BpmnError() {
439 ExecutionEntity mex = setupMock()
442 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoDeleteAllottedResourceTXC/arGetById.xml")
443 MockDeleteAllottedResource(CUST, SVC, INST, ARID, VERS)
445 when(mex.getVariable("aaiARPath")).thenThrow(new BpmnError("expected exception"))
447 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
449 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.deleteAaiAR(mex) }))
453 public void deleteAaiAR_Ex() {
454 ExecutionEntity mex = setupMock()
457 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoDeleteAllottedResourceTXC/arGetById.xml")
458 MockDeleteAllottedResource(CUST, SVC, INST, ARID, VERS)
460 when(mex.getVariable("aaiARPath")).thenThrow(new RuntimeException("expected exception"))
462 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
464 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceTXC.deleteAaiAR(mex) }))
467 private boolean checkMissingPreProcessRequest(String fieldnm) {
468 ExecutionEntity mex = setupMock()
471 DoDeleteAllottedResourceTXC DoDeleteAllottedResourceTXC = new DoDeleteAllottedResourceTXC()
473 when(mex.getVariable(fieldnm)).thenReturn("")
475 return doBpmnError({ _ -> DoDeleteAllottedResourceTXC.preProcessRequest(mex) })
478 private void initPreProcess(ExecutionEntity mex) {
479 when(mex.getVariable(DBGFLAG)).thenReturn("true")
480 when(mex.getVariable("mso.workflow.sdncadapter.callback")).thenReturn("sdncurn")
481 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
482 when(mex.getVariable("allottedResourceId")).thenReturn("ari")
485 private void initGetAaiAR(ExecutionEntity mex) {
486 when(mex.getVariable(DBGFLAG)).thenReturn("true")
487 when(mex.getVariable("allottedResourceType")).thenReturn("TXC")
488 when(mex.getVariable("allottedResourceRole")).thenReturn("TXC")
489 when(mex.getVariable("allottedResourceId")).thenReturn(ARID)
490 when(mex.getVariable("mso.workflow.global.default.aai.namespace")).thenReturn(UrnPropertiesReader.getVariable("mso.workflow.global.default.aai.namespace"))
491 when(mex.getVariable("mso.workflow.global.default.aai.version")).thenReturn(UrnPropertiesReader.getVariable("mso.workflow.global.default.aai.version"))
492 when(mex.getVariable("mso.workflow.default.aai.v8.nodes.query.uri")).thenReturn(UrnPropertiesReader.getVariable("mso.workflow.default.aai.v8.nodes-query.uri"))
493 when(mex.getVariable("aai.endpoint")).thenReturn(aaiUriPfx)
494 when(mex.getVariable("aaiARPath")).thenReturn("/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST + "/allotted-resources/allotted-resource/" + ARID)
495 when(mex.getVariable("aaiAROrchStatus")).thenReturn("Active")
498 private initUpdateAaiAROrchStatus(ExecutionEntity mex) {
499 when(mex.getVariable(DBGFLAG)).thenReturn("true")
500 when(mex.getVariable("aaiARPath")).thenReturn("/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST + "/allotted-resources/allotted-resource/" + ARID)
503 private initBuildSDNCRequest(ExecutionEntity mex) {
504 when(mex.getVariable(DBGFLAG)).thenReturn("true")
505 when(mex.getVariable("allottedResourceId")).thenReturn("ari")
506 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
507 when(mex.getVariable("parentServiceInstanceId")).thenReturn("psii")
508 when(mex.getVariable("subscriptionServiceType")).thenReturn("sst")
509 when(mex.getVariable("globalCustomerId")).thenReturn("gci")
510 when(mex.getVariable("sdncCallbackUrl")).thenReturn("scu")
511 when(mex.getVariable("msoRequestId")).thenReturn("mri")
514 private initPreProcessSDNC(ExecutionEntity mex) {
515 when(mex.getVariable(DBGFLAG)).thenReturn("true")
518 private initValidateSDNCResp(ExecutionEntity mex) {
519 when(mex.getVariable(DBGFLAG)).thenReturn("true")
520 when(mex.getVariable("prefix")).thenReturn(Prefix)
521 when(mex.getVariable("SDNCA_SuccessIndicator")).thenReturn(true)
524 private String initValidateSDNCResp_Resp(int code) {
525 return "<response-data><response-code>${code}</response-code></response-data>"
528 private initDeleteAaiAR(ExecutionEntity mex) {
529 when(mex.getVariable(DBGFLAG)).thenReturn("true")
530 when(mex.getVariable("aaiARPath")).thenReturn("/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST + "/allotted-resources/allotted-resource/" + ARID)
531 when(mex.getVariable("aaiARResourceVersion")).thenReturn("myvers")
532 when(mex.getVariable("aai.endpoint")).thenReturn(aaiUriPfx)