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 DoDeleteAllottedResourceBRGTest extends GroovyTestBase {
43 public WireMockRule wireMockRule = new WireMockRule(PORT)
45 String Prefix = "DDARBRG_"
48 public static void setUpBeforeClass() {
49 GroovyTestBase.setUpBeforeClass()
53 DoDeleteAllottedResourceBRG doDeleteAllottedResourceBRG
57 MockitoAnnotations.initMocks(this)
58 initAllottedResourceMock()
61 public DoDeleteAllottedResourceBRGTest() {
62 super("DoDeleteAllottedResourceBRG")
65 // ***** preProcessRequest *****
68 public void preProcessRequest() {
69 ExecutionEntity mex = setupMock()
72 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
73 DoDeleteAllottedResourceBRG.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 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
92 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceBRG.preProcessRequest(mex) }))
96 public void preProcessRequest_Ex() {
97 ExecutionEntity mex = setupMock()
100 when(mex.getVariable("serviceInstanceId")).thenThrow(new RuntimeException("expected exception"))
102 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
104 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceBRG.preProcessRequest(mex) }))
107 // ***** getAaiAR *****
110 public void getAaiAR() {
111 ExecutionEntity mex = setupMock()
113 when(doDeleteAllottedResourceBRG.getAllottedResourceUtils()).thenReturn(allottedResourceUtils_MOCK)
114 doReturn(true).when(allottedResourceUtils_MOCK).ifExistsAR(eq(mex), eq(ARID))
115 doDeleteAllottedResourceBRG.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({ _ -> doDeleteAllottedResourceBRG.getAaiAR(mex) }))
127 // ***** updateAaiAROrchStatus *****
131 public void updateAaiAROrchStatus() {
132 ExecutionEntity mex = setupMock()
133 initUpdateAaiAROrchStatus(mex)
135 MockPatchAllottedResource(wireMockRule, CUST, SVC, INST, ARID)
137 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
138 DoDeleteAllottedResourceBRG.updateAaiAROrchStatus(mex, "success")
141 // ***** buildSDNCRequest *****
144 public void buildSDNCRequest() {
145 ExecutionEntity mex = setupMock()
146 initBuildSDNCRequest(mex)
148 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
150 String result = DoDeleteAllottedResourceBRG.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 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
178 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceBRG.buildSDNCRequest(mex, "myact", "myreq") }))
181 // ***** preProcessSDNCUnassign *****
184 public void preProcessSDNCUnassign() {
185 ExecutionEntity mex = setupMock()
186 def map = setupMap(mex)
187 initPreProcessSDNC(mex)
189 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
190 DoDeleteAllottedResourceBRG.preProcessSDNCUnassign(mex)
192 def req = map.get("sdncUnassignRequest")
194 assertTrue(req.indexOf("<sdncadapter:SvcAction>unassign</") >= 0)
195 assertTrue(req.indexOf("<request-action>DeleteBRGInstance</") >= 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 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
208 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceBRG.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 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
220 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceBRG.preProcessSDNCUnassign(mex) }))
223 // ***** preProcessSDNCDelete *****
226 public void preProcessSDNCDelete() {
227 ExecutionEntity mex = setupMock()
228 def map = setupMap(mex)
229 initPreProcessSDNC(mex)
231 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
232 DoDeleteAllottedResourceBRG.preProcessSDNCDelete(mex)
234 def req = map.get("sdncDeleteRequest")
236 assertTrue(req.indexOf("<sdncadapter:SvcAction>delete</") >= 0)
237 assertTrue(req.indexOf("<request-action>DeleteBRGInstance</") >= 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 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
250 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceBRG.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 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
262 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceBRG.preProcessSDNCDelete(mex) }))
265 // ***** preProcessSDNCDeactivate *****
268 public void preProcessSDNCDeactivate() {
269 ExecutionEntity mex = setupMock()
270 def map = setupMap(mex)
271 initPreProcessSDNC(mex)
273 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
274 DoDeleteAllottedResourceBRG.preProcessSDNCDeactivate(mex)
276 def req = map.get("sdncDeactivateRequest")
278 assertTrue(req.indexOf("<sdncadapter:SvcAction>deactivate</") >= 0)
279 assertTrue(req.indexOf("<request-action>DeleteBRGInstance</") >= 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 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
292 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceBRG.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 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
304 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceBRG.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 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
319 DoDeleteAllottedResourceBRG.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 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
340 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceBRG.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 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
353 DoDeleteAllottedResourceBRG.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 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
369 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceBRG.validateSDNCResp(mex, resp, "create") }))
373 public void validateSDNCResp_Deactivate() {
374 ExecutionEntity mex = setupMock()
375 def data = initValidateSDNCResp(mex)
376 def resp = initValidateSDNCResp_Resp(200)
378 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
380 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceBRG.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 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
393 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceBRG.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 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
406 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceBRG.validateSDNCResp(mex, resp, "create") }))
411 public void deleteAaiAR() {
412 ExecutionEntity mex = setupMock()
415 MockGetAllottedResource(wireMockRule, CUST, SVC, INST, ARID, "VCPE/DoDeleteAllottedResourceBRG/arGetById.xml")
416 MockDeleteAllottedResource(wireMockRule, CUST, SVC, INST, ARID, VERS)
418 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
419 DoDeleteAllottedResourceBRG.deleteAaiAR(mex)
423 public void deleteAaiAR_NoArPath() {
424 ExecutionEntity mex = setupMock()
427 MockGetAllottedResource(wireMockRule, CUST, SVC, INST, ARID, "VCPE/DoDeleteAllottedResourceBRG/arGetById.xml")
428 MockDeleteAllottedResource(wireMockRule, CUST, SVC, INST, ARID, VERS)
430 when(mex.getVariable("aaiARPath")).thenReturn("")
432 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
434 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceBRG.deleteAaiAR(mex) }))
438 public void deleteAaiAR_BpmnError() {
439 ExecutionEntity mex = setupMock()
442 MockGetAllottedResource(wireMockRule, CUST, SVC, INST, ARID, "VCPE/DoDeleteAllottedResourceBRG/arGetById.xml")
443 MockDeleteAllottedResource(wireMockRule, CUST, SVC, INST, ARID, VERS)
445 when(mex.getVariable("aaiARPath")).thenThrow(new BpmnError("expected exception"))
447 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
449 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceBRG.deleteAaiAR(mex) }))
453 public void deleteAaiAR_Ex() {
454 ExecutionEntity mex = setupMock()
457 MockGetAllottedResource(wireMockRule, CUST, SVC, INST, ARID, "VCPE/DoDeleteAllottedResourceBRG/arGetById.xml")
458 MockDeleteAllottedResource(wireMockRule, CUST, SVC, INST, ARID, VERS)
460 when(mex.getVariable("aaiARPath")).thenThrow(new RuntimeException("expected exception"))
462 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
464 assertTrue(doBpmnError({ _ -> DoDeleteAllottedResourceBRG.deleteAaiAR(mex) }))
467 private boolean checkMissingPreProcessRequest(String fieldnm) {
468 ExecutionEntity mex = setupMock()
471 DoDeleteAllottedResourceBRG DoDeleteAllottedResourceBRG = new DoDeleteAllottedResourceBRG()
473 when(mex.getVariable(fieldnm)).thenReturn("")
475 return doBpmnError({ _ -> DoDeleteAllottedResourceBRG.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("BRG")
488 when(mex.getVariable("allottedResourceRole")).thenReturn("BRG")
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)