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 com.github.tomakehurst.wiremock.junit.WireMockRule
26 import org.camunda.bpm.engine.delegate.BpmnError
27 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
29 import org.mockito.MockitoAnnotations
30 import org.onap.so.bpmn.core.RollbackData
31 import org.onap.so.bpmn.core.UrnPropertiesReader
32 import org.onap.so.bpmn.core.WorkflowException
33 import org.onap.so.bpmn.mock.FileUtil
34 import org.onap.so.client.aai.AAIObjectType
35 import org.onap.so.client.aai.AAIResourcesClient
36 import org.onap.so.client.aai.entities.uri.AAIUriFactory
38 import javax.ws.rs.core.UriBuilder
40 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse
41 import static com.github.tomakehurst.wiremock.client.WireMock.put
42 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching
43 import static org.junit.Assert.*
44 import static org.mockito.Mockito.*
45 import static org.onap.so.bpmn.mock.StubResponseAAI.*
47 class DoCreateAllottedResourceBRGTest extends GroovyTestBase {
50 public WireMockRule wireMockRule = new WireMockRule(PORT)
52 String Prefix = "DCARBRG_"
55 public static void setUpBeforeClass() {
56 aaiUriPfx = UrnPropertiesReader.getVariable("aai.endpoint")
61 MockitoAnnotations.initMocks(this)
64 public DoCreateAllottedResourceBRGTest() {
65 super("DoCreateAllottedResourceBRG")
68 // ***** preProcessRequest *****
71 public void preProcessRequest() {
72 ExecutionEntity mex = setupMock()
75 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
76 DoCreateAllottedResourceBRG.preProcessRequest(mex)
78 verify(mex).setVariable("prefix", Prefix)
80 assertTrue(checkMissingPreProcessRequest("mso.workflow.sdncadapter.callback"))
81 assertTrue(checkMissingPreProcessRequest("mso.workflow.sdnc.replication.delay"))
82 assertTrue(checkMissingPreProcessRequest("serviceInstanceId"))
83 assertTrue(checkMissingPreProcessRequest("parentServiceInstanceId"))
84 assertTrue(checkMissingPreProcessRequest("allottedResourceModelInfo"))
85 assertTrue(checkMissingPreProcessRequest("vni"))
86 assertTrue(checkMissingPreProcessRequest("vgmuxBearerIP"))
87 assertTrue(checkMissingPreProcessRequest("brgWanMacAddress"))
88 assertTrue(checkMissingPreProcessRequest("allottedResourceRole"))
89 assertTrue(checkMissingPreProcessRequest("allottedResourceType"))
92 // ***** getAaiAR *****
96 public void getAaiAR() {
97 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")
99 ExecutionEntity mex = setupMock()
102 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
103 DoCreateAllottedResourceBRG.getAaiAR(mex)
105 verify(mex).setVariable("foundActiveAR", true)
109 public void getAaiAR_Duplicate() {
110 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")
112 ExecutionEntity mex = setupMock()
116 when(mex.getVariable("failExists")).thenReturn("true")
118 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
120 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.getAaiAR(mex) }))
124 public void getAaiAR_NotActive() {
125 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")
127 ExecutionEntity mex = setupMock()
131 when(mex.getVariable("aaiAROrchStatus")).thenReturn("not-active")
133 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
135 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.getAaiAR(mex) }))
140 public void getAaiAR_NoStatus() {
141 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")
143 ExecutionEntity mex = setupMock()
146 when(mex.getVariable("aaiAROrchStatus")).thenReturn(null)
148 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
149 DoCreateAllottedResourceBRG.getAaiAR(mex)
151 verify(mex, never()).setVariable("foundActiveAR", true)
154 // ***** createAaiAR *****
157 public void createAaiAR() {
158 ExecutionEntity mockExecution = setupMock()
159 AAIResourcesClient client = mock(AAIResourcesClient.class)
160 when(mockExecution.getVariable("PSI_resourceLink")).thenReturn(AAIUriFactory.createResourceFromExistingURI(AAIObjectType.SERVICE_INSTANCE, UriBuilder.fromPath("/aai/v9/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST).build()))
161 when(mockExecution.getVariable("CSI_resourceLink")).thenReturn("/aai/v9/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST)
162 when(mockExecution.getVariable("allottedResourceModelInfo")).thenReturn("{\n" +
163 " \"modelInvariantUuid\":\"modelInvariantUuid\",\n" +
164 " \"modelUuid\" : \"modelUuid\"\n" +
166 DoCreateAllottedResourceBRG doCreateAllottedResourceBRG = spy(DoCreateAllottedResourceBRG.class)
167 when(doCreateAllottedResourceBRG.getAAIClient()).thenReturn(client)
168 doCreateAllottedResourceBRG.createAaiAR(mockExecution)
173 public void createAaiAR_NoArid_NoModelUuids() {
174 ExecutionEntity mex = setupMock()
175 def map = setupMap(mex)
178 // no allottedResourceId - will be generated
180 when(mex.getVariable("allottedResourceId")).thenReturn(null)
183 .stubFor(put(urlMatching("/aai/.*/allotted-resource/.*"))
184 .willReturn(aResponse()
187 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
188 DoCreateAllottedResourceBRG.createAaiAR(mex)
190 def arid = map.get("allottedResourceId")
192 assertFalse(arid.isEmpty())
194 def data = map.get("rollbackData")
196 assertTrue(data instanceof RollbackData)
198 assertEquals(arid, data.get(Prefix, "allottedResourceId"))
202 public void createAaiAR_MissingPsiLink() {
203 ExecutionEntity mex = setupMock()
206 when(mex.getVariable("PSI_resourceLink")).thenReturn(null)
208 MockPutAllottedResource(CUST, SVC, INST, ARID)
210 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
212 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.createAaiAR(mex) }))
216 public void createAaiAR_HttpFailed() {
217 ExecutionEntity mex = setupMock()
220 MockPutAllottedResource_500(CUST, SVC, INST, ARID)
222 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
224 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.createAaiAR(mex) }))
228 public void createAaiAR_BpmnError() {
229 ExecutionEntity mex = setupMock()
232 when(mex.getVariable("aai.endpoint")).thenThrow(new BpmnError("expected exception"))
234 MockPutAllottedResource(CUST, SVC, INST, ARID)
236 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
238 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.createAaiAR(mex) }))
242 public void createAaiAR_Ex() {
243 ExecutionEntity mex = setupMock()
246 when(mex.getVariable("aai.endpoint")).thenThrow(new RuntimeException("expected exception"))
248 MockPutAllottedResource(CUST, SVC, INST, ARID)
250 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
252 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.createAaiAR(mex) }))
255 // ***** buildSDNCRequest *****
258 public void buildSDNCRequest() {
259 ExecutionEntity mex = setupMock()
260 initBuildSDNCRequest(mex)
262 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
264 String result = DoCreateAllottedResourceBRG.buildSDNCRequest(mex, "myact", "myreq")
266 assertTrue(result.indexOf("<sdncadapter:RequestId>myreq</") >= 0)
267 assertTrue(result.indexOf("<sdncadapter:SvcAction>myact</") >= 0)
268 assertTrue(result.indexOf("<allotted-resource-id>ari</") >= 0)
269 assertTrue(result.indexOf("<sdncadapter:SvcInstanceId>sii</") >= 0)
270 assertTrue(result.indexOf("<service-instance-id>sii</") >= 0)
271 assertTrue(result.indexOf("<parent-service-instance-id>psii</") >= 0)
272 assertTrue(result.indexOf("<subscription-service-type>sst</") >= 0)
273 assertTrue(result.indexOf("<global-customer-id>gci</") >= 0)
274 assertTrue(result.indexOf("<sdncadapter:CallbackUrl>scu</") >= 0)
275 assertTrue(result.indexOf("<request-id>mri</") >= 0)
276 assertTrue(result.indexOf("<brg-wan-mac-address>bwma</") >= 0)
277 assertTrue(result.indexOf("<vni>myvni</") >= 0)
278 assertTrue(result.indexOf("<vgmux-bearer-ip>vbi</") >= 0)
279 assertTrue(result.indexOf("<model-invariant-uuid>miu</") >= 0)
280 assertTrue(result.indexOf("<model-uuid>mu</") >= 0)
281 assertTrue(result.indexOf("<model-customization-uuid>mcu</") >= 0)
282 assertTrue(result.indexOf("<model-version>mv</") >= 0)
283 assertTrue(result.indexOf("<model-name>mn</") >= 0)
287 public void buildSDNCRequest_EmptyModelInfo() {
288 ExecutionEntity mex = setupMock()
289 initBuildSDNCRequest(mex)
291 when(mex.getVariable("allottedResourceModelInfo")).thenReturn("{}")
293 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
295 String result = DoCreateAllottedResourceBRG.buildSDNCRequest(mex, "myact", "myreq")
297 assertTrue(result.indexOf("<sdncadapter:RequestId>myreq</") >= 0)
298 assertTrue(result.indexOf("<sdncadapter:SvcAction>myact</") >= 0)
299 assertTrue(result.indexOf("<allotted-resource-id>ari</") >= 0)
300 assertTrue(result.indexOf("<sdncadapter:SvcInstanceId>sii</") >= 0)
301 assertTrue(result.indexOf("<service-instance-id>sii</") >= 0)
302 assertTrue(result.indexOf("<parent-service-instance-id>psii</") >= 0)
303 assertTrue(result.indexOf("<subscription-service-type>sst</") >= 0)
304 assertTrue(result.indexOf("<global-customer-id>gci</") >= 0)
305 assertTrue(result.indexOf("<sdncadapter:CallbackUrl>scu</") >= 0)
306 assertTrue(result.indexOf("<request-id>mri</") >= 0)
307 assertTrue(result.indexOf("<brg-wan-mac-address>bwma</") >= 0)
308 assertTrue(result.indexOf("<vni>myvni</") >= 0)
309 assertTrue(result.indexOf("<vgmux-bearer-ip>vbi</") >= 0)
310 assertTrue(result.indexOf("<model-invariant-uuid/>") >= 0)
311 assertTrue(result.indexOf("<model-uuid/>") >= 0)
312 assertTrue(result.indexOf("<model-customization-uuid/>") >= 0)
313 assertTrue(result.indexOf("<model-version/>") >= 0)
314 assertTrue(result.indexOf("<model-name/>") >= 0)
318 public void buildSDNCRequest_Ex() {
319 ExecutionEntity mex = setupMock()
320 initBuildSDNCRequest(mex)
322 when(mex.getVariable("allottedResourceId")).thenThrow(new RuntimeException("expected exception"))
324 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
326 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.buildSDNCRequest(mex, "myact", "myreq") }))
329 // ***** preProcessSDNCAssign *****
332 public void preProcessSDNCAssign() {
333 ExecutionEntity mex = setupMock()
334 def map = setupMap(mex)
335 def data = initPreProcessSDNC(mex)
337 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
338 DoCreateAllottedResourceBRG.preProcessSDNCAssign(mex)
340 def req = map.get("sdncAssignRequest")
343 assertEquals(data, map.get("rollbackData"))
345 def rbreq = data.get(Prefix, "sdncAssignRollbackReq")
347 assertTrue(req.indexOf("<sdncadapter:SvcAction>assign</") >= 0)
348 assertTrue(req.indexOf("<request-action>CreateBRGInstance</") >= 0)
349 assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
351 assertTrue(rbreq.indexOf("<sdncadapter:SvcAction>unassign</") >= 0)
352 assertTrue(rbreq.indexOf("<request-action>DeleteBRGInstance</") >= 0)
353 assertTrue(rbreq.indexOf("<sdncadapter:RequestId>") >= 0)
357 public void preProcessSDNCAssign_BpmnError() {
358 ExecutionEntity mex = setupMock()
359 initPreProcessSDNC(mex)
361 when(mex.getVariable("rollbackData")).thenThrow(new BpmnError("expected exception"))
363 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
365 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCAssign(mex) }))
369 public void preProcessSDNCAssign_Ex() {
370 ExecutionEntity mex = setupMock()
371 initPreProcessSDNC(mex)
373 when(mex.getVariable("rollbackData")).thenThrow(new RuntimeException("expected exception"))
375 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
377 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCAssign(mex) }))
380 // ***** preProcessSDNCCreate *****
383 public void preProcessSDNCCreate() {
384 ExecutionEntity mex = setupMock()
385 def map = setupMap(mex)
386 def data = initPreProcessSDNC(mex)
388 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
389 DoCreateAllottedResourceBRG.preProcessSDNCCreate(mex)
391 def req = map.get("sdncCreateRequest")
394 assertEquals(data, map.get("rollbackData"))
396 def rbreq = data.get(Prefix, "sdncCreateRollbackReq")
398 assertTrue(req.indexOf("<sdncadapter:SvcAction>create</") >= 0)
399 assertTrue(req.indexOf("<request-action>CreateBRGInstance</") >= 0)
400 assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
402 assertTrue(rbreq.indexOf("<sdncadapter:SvcAction>delete</") >= 0)
403 assertTrue(rbreq.indexOf("<request-action>DeleteBRGInstance</") >= 0)
404 assertTrue(rbreq.indexOf("<sdncadapter:RequestId>") >= 0)
409 public void preProcessSDNCCreate_BpmnError() {
410 ExecutionEntity mex = setupMock()
411 initPreProcessSDNC(mex)
413 when(mex.getVariable("rollbackData")).thenThrow(new BpmnError("expected exception"))
415 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
417 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCCreate(mex) }))
421 public void preProcessSDNCCreate_Ex() {
422 ExecutionEntity mex = setupMock()
423 initPreProcessSDNC(mex)
425 when(mex.getVariable("rollbackData")).thenThrow(new RuntimeException("expected exception"))
427 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
429 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCCreate(mex) }))
432 // ***** preProcessSDNCActivate *****
435 public void preProcessSDNCActivate() {
436 ExecutionEntity mex = setupMock()
437 def map = setupMap(mex)
438 def data = initPreProcessSDNC(mex)
440 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
441 DoCreateAllottedResourceBRG.preProcessSDNCActivate(mex)
443 def req = map.get("sdncActivateRequest")
446 assertEquals(data, map.get("rollbackData"))
448 def rbreq = data.get(Prefix, "sdncActivateRollbackReq")
450 assertTrue(req.indexOf("<sdncadapter:SvcAction>activate</") >= 0)
451 assertTrue(req.indexOf("<request-action>CreateBRGInstance</") >= 0)
452 assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
454 assertTrue(rbreq.indexOf("<sdncadapter:SvcAction>deactivate</") >= 0)
455 assertTrue(rbreq.indexOf("<request-action>DeleteBRGInstance</") >= 0)
456 assertTrue(rbreq.indexOf("<sdncadapter:RequestId>") >= 0)
461 public void preProcessSDNCActivate_BpmnError() {
462 ExecutionEntity mex = setupMock()
463 initPreProcessSDNC(mex)
465 when(mex.getVariable("rollbackData")).thenThrow(new BpmnError("expected exception"))
467 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
469 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCActivate(mex) }))
473 public void preProcessSDNCActivate_Ex() {
474 ExecutionEntity mex = setupMock()
475 initPreProcessSDNC(mex)
477 when(mex.getVariable("rollbackData")).thenThrow(new RuntimeException("expected exception"))
479 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
481 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCActivate(mex) }))
484 // ***** validateSDNCResp *****
487 public void validateSDNCResp() {
488 ExecutionEntity mex = setupMock()
489 def map = setupMap(mex)
490 def data = initValidateSDNCResp(mex)
491 def resp = initValidateSDNCResp_Resp()
493 when(mex.getVariable(Prefix + "sdncResponseSuccess")).thenReturn(true)
495 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
497 DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "create")
499 verify(mex).getVariable("WorkflowException")
500 verify(mex).getVariable("SDNCA_SuccessIndicator")
501 verify(mex).getVariable("rollbackData")
503 assertEquals(data, map.get("rollbackData"))
505 assertEquals("true", data.get(Prefix, "rollback" + "SDNCcreate"))
510 public void validateSDNCResp_Get() {
511 ExecutionEntity mex = setupMock()
512 def data = initValidateSDNCResp(mex)
513 def resp = initValidateSDNCResp_Resp()
515 when(mex.getVariable(Prefix + "sdncResponseSuccess")).thenReturn(true)
517 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
519 DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "get")
521 verify(mex).getVariable("WorkflowException")
522 verify(mex).getVariable("SDNCA_SuccessIndicator")
524 verify(mex, never()).getVariable("rollbackData")
528 public void validateSDNCResp_Unsuccessful() {
529 ExecutionEntity mex = setupMock()
530 initValidateSDNCResp(mex)
531 def resp = initValidateSDNCResp_Resp()
534 when(mex.getVariable(Prefix + "sdncResponseSuccess")).thenReturn(false)
536 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
538 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "create") }))
542 public void validateSDNCResp_BpmnError() {
543 ExecutionEntity mex = setupMock()
544 initValidateSDNCResp(mex)
545 def resp = initValidateSDNCResp_Resp()
547 when(mex.getVariable("WorkflowException")).thenThrow(new BpmnError("expected exception"))
549 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
551 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "create") }))
555 public void validateSDNCResp_Ex() {
556 ExecutionEntity mex = setupMock()
557 initValidateSDNCResp(mex)
558 def resp = initValidateSDNCResp_Resp()
560 when(mex.getVariable("WorkflowException")).thenThrow(new RuntimeException("expected exception"))
562 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
564 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "create") }))
567 // ***** preProcessSDNCGet *****
570 public void preProcessSDNCGet_FoundAR() {
571 ExecutionEntity mex = setupMock()
572 def map = setupMap(mex)
573 initPreProcessSDNCGet(mex)
575 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
576 DoCreateAllottedResourceBRG.preProcessSDNCGet(mex)
578 String req = map.get("sdncGetRequest")
580 assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
581 assertTrue(req.indexOf("<sdncadapter:SvcInstanceId>sii</") >= 0)
582 assertTrue(req.indexOf("<sdncadapter:SvcOperation>arlink</") >= 0)
583 assertTrue(req.indexOf("<sdncadapter:CallbackUrl>myurl</") >= 0)
588 public void preProcessSDNCGet_NotFoundAR() {
589 ExecutionEntity mex = setupMock()
590 def map = setupMap(mex)
591 initPreProcessSDNCGet(mex)
593 when(mex.getVariable("foundActiveAR")).thenReturn(false)
595 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
596 DoCreateAllottedResourceBRG.preProcessSDNCGet(mex)
598 String req = map.get("sdncGetRequest")
600 assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
601 assertTrue(req.indexOf("<sdncadapter:SvcInstanceId>sii</") >= 0)
602 assertTrue(req.indexOf("<sdncadapter:SvcOperation>assignlink</") >= 0)
603 assertTrue(req.indexOf("<sdncadapter:CallbackUrl>myurl</") >= 0)
608 public void preProcessSDNCGet_Ex() {
609 ExecutionEntity mex = setupMock()
610 initPreProcessSDNCGet(mex)
612 when(mex.getVariable("foundActiveAR")).thenThrow(new RuntimeException("expected exception"))
614 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
616 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCGet(mex) }))
619 // ***** updateAaiAROrchStatus *****
623 public void updateAaiAROrchStatus() {
624 MockPatchAllottedResource(CUST, SVC, INST, ARID)
626 ExecutionEntity mex = setupMock()
627 initUpdateAaiAROrchStatus(mex)
629 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
630 DoCreateAllottedResourceBRG.updateAaiAROrchStatus(mex, "success")
633 // ***** generateOutputs *****
636 public void generateOutputs() {
637 ExecutionEntity mex = setupMock()
638 def brgtop = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/SDNCTopologyQueryCallback.xml")
640 when(mex.getVariable(DBGFLAG)).thenReturn("true")
641 when(mex.getVariable("enhancedCallbackRequestData")).thenReturn(brgtop)
643 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
644 DoCreateAllottedResourceBRG.generateOutputs(mex)
646 verify(mex).setVariable("allotedResourceName", "namefromrequest")
651 public void generateOutputs_BadXml() {
652 ExecutionEntity mex = setupMock()
654 when(mex.getVariable(DBGFLAG)).thenReturn("true")
655 when(mex.getVariable("enhancedCallbackRequestData")).thenReturn("invalid xml")
657 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
658 DoCreateAllottedResourceBRG.generateOutputs(mex)
660 verify(mex, never()).setVariable(anyString(), anyString())
665 public void generateOutputs_BpmnError() {
666 ExecutionEntity mex = setupMock()
668 when(mex.getVariable(DBGFLAG)).thenReturn("true")
669 when(mex.getVariable("enhancedCallbackRequestData")).thenThrow(new BpmnError("expected exception"))
671 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
673 DoCreateAllottedResourceBRG.generateOutputs(mex)
674 verify(mex, never()).setVariable(anyString(), anyString())
679 public void generateOutputs_Ex() {
680 ExecutionEntity mex = setupMock()
682 when(mex.getVariable(DBGFLAG)).thenReturn("true")
683 when(mex.getVariable("enhancedCallbackRequestData")).thenThrow(new RuntimeException("expected exception"))
685 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
687 DoCreateAllottedResourceBRG.generateOutputs(mex)
688 verify(mex, never()).setVariable(anyString(), anyString())
692 // ***** preProcessRollback *****
695 public void preProcessRollback() {
696 ExecutionEntity mex = setupMock()
697 WorkflowException wfe = mock(WorkflowException.class)
699 when(mex.getVariable(DBGFLAG)).thenReturn("true")
700 when(mex.getVariable("WorkflowException")).thenReturn(wfe)
702 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
703 DoCreateAllottedResourceBRG.preProcessRollback(mex)
705 verify(mex).setVariable("prevWorkflowException", wfe)
709 public void preProcessRollback_NotWFE() {
710 ExecutionEntity mex = setupMock()
712 when(mex.getVariable(DBGFLAG)).thenReturn("true")
713 when(mex.getVariable("WorkflowException")).thenReturn("I'm not a WFE")
715 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
716 DoCreateAllottedResourceBRG.preProcessRollback(mex)
720 public void preProcessRollback_BpmnError() {
721 ExecutionEntity mex = setupMock()
723 when(mex.getVariable(DBGFLAG)).thenReturn("true")
724 when(mex.getVariable("WorkflowException")).thenThrow(new BpmnError("expected exception"))
726 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
728 DoCreateAllottedResourceBRG.preProcessRollback(mex)
732 public void preProcessRollback_Ex() {
733 ExecutionEntity mex = setupMock()
735 when(mex.getVariable(DBGFLAG)).thenReturn("true")
736 when(mex.getVariable("WorkflowException")).thenThrow(new RuntimeException("expected exception"))
738 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
740 DoCreateAllottedResourceBRG.preProcessRollback(mex)
744 // ***** postProcessRollback *****
747 public void postProcessRollback() {
748 ExecutionEntity mex = setupMock()
749 WorkflowException wfe = mock(WorkflowException.class)
751 when(mex.getVariable(DBGFLAG)).thenReturn("true")
752 when(mex.getVariable("prevWorkflowException")).thenReturn(wfe)
754 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
755 DoCreateAllottedResourceBRG.postProcessRollback(mex)
757 verify(mex).setVariable("WorkflowException", wfe)
758 verify(mex).setVariable("rollbackData", null)
763 public void postProcessRollback_NotWFE() {
764 ExecutionEntity mex = setupMock()
766 when(mex.getVariable(DBGFLAG)).thenReturn("true")
767 when(mex.getVariable("prevWorkflowException")).thenReturn("I'm not a WFE")
769 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
770 DoCreateAllottedResourceBRG.postProcessRollback(mex)
772 verify(mex).setVariable("rollbackData", null)
777 public void postProcessRollback_BpmnError() {
778 ExecutionEntity mex = setupMock()
780 when(mex.getVariable(DBGFLAG)).thenReturn("true")
781 when(mex.getVariable("prevWorkflowException")).thenThrow(new BpmnError("expected exception"))
783 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
785 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.postProcessRollback(mex) }))
786 verify(mex, never()).setVariable("rollbackData", null)
791 public void postProcessRollback_Ex() {
792 ExecutionEntity mex = setupMock()
794 when(mex.getVariable(DBGFLAG)).thenReturn("true")
795 when(mex.getVariable("prevWorkflowException")).thenThrow(new RuntimeException("expected exception"))
797 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
799 DoCreateAllottedResourceBRG.postProcessRollback(mex)
800 verify(mex, never()).setVariable("rollbackData", null)
804 private boolean checkMissingPreProcessRequest(String fieldnm) {
805 ExecutionEntity mex = setupMock()
808 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
810 when(mex.getVariable(fieldnm)).thenReturn("")
812 return doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessRequest(mex) })
815 private void initPreProcess(ExecutionEntity mex) {
816 when(mex.getVariable(DBGFLAG)).thenReturn("true")
817 when(mex.getVariable("mso.workflow.sdncadapter.callback")).thenReturn("sdncurn")
818 when(mex.getVariable("mso.workflow.sdnc.replication.delay")).thenReturn("sdncdelay")
819 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
820 when(mex.getVariable("parentServiceInstanceId")).thenReturn("psii")
821 when(mex.getVariable("allottedResourceModelInfo")).thenReturn("armi")
822 when(mex.getVariable("vni")).thenReturn("myvni")
823 when(mex.getVariable("vgmuxBearerIP")).thenReturn("vbi")
824 when(mex.getVariable("brgWanMacAddress")).thenReturn("bwma")
825 when(mex.getVariable("allottedResourceRole")).thenReturn("arr")
826 when(mex.getVariable("allottedResourceType")).thenReturn("art")
829 private void initGetAaiAR(ExecutionEntity mex) {
830 when(mex.getVariable(DBGFLAG)).thenReturn("true")
831 when(mex.getVariable("allottedResourceType")).thenReturn("BRGt")
832 when(mex.getVariable("allottedResourceRole")).thenReturn("BRGr")
833 when(mex.getVariable("CSI_service")).thenReturn(FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/getAR.xml"))
834 when(mex.getVariable("aai.endpoint")).thenReturn(aaiUriPfx)
835 when(mex.getVariable("aaiAROrchStatus")).thenReturn("Active")
838 private initCreateAaiAr(ExecutionEntity mex) {
839 when(mex.getVariable("disableRollback")).thenReturn(45)
840 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
841 when(mex.getVariable("parentServiceInstanceId")).thenReturn("psii")
842 when(mex.getVariable(DBGFLAG)).thenReturn("true")
843 when(mex.getVariable("allottedResourceId")).thenReturn(ARID)
844 when(mex.getVariable("aai.endpoint")).thenReturn(aaiUriPfx)
845 when(mex.getVariable("mso.workflow.global.default.aai.namespace")).thenReturn(UrnPropertiesReader.getVariable("mso.workflow.global.default.aai.namespace"))
846 when(mex.getVariable("PSI_resourceLink")).thenReturn(AAIUriFactory.createResourceFromExistingURI(AAIObjectType.SERVICE_INSTANCE, UriBuilder.fromPath("/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST).build()))
847 when(mex.getVariable("allottedResourceType")).thenReturn("BRGt")
848 when(mex.getVariable("allottedResourceRole")).thenReturn("BRGr")
849 when(mex.getVariable("CSI_resourceLink")).thenReturn(aaiUriPfx + "/aai/v9/mycsi")
850 when(mex.getVariable("allottedResourceModelInfo")).thenReturn("""
852 "modelInvariantUuid":"modelinvuuid",
853 "modelUuid":"modeluuid",
854 "modelCustomizationUuid":"modelcustuuid"
859 private initBuildSDNCRequest(ExecutionEntity mex) {
860 when(mex.getVariable(DBGFLAG)).thenReturn("true")
861 when(mex.getVariable("allottedResourceId")).thenReturn("ari")
862 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
863 when(mex.getVariable("parentServiceInstanceId")).thenReturn("psii")
864 when(mex.getVariable("subscriptionServiceType")).thenReturn("sst")
865 when(mex.getVariable("globalCustomerId")).thenReturn("gci")
866 when(mex.getVariable("sdncCallbackUrl")).thenReturn("scu")
867 when(mex.getVariable("msoRequestId")).thenReturn("mri")
868 when(mex.getVariable("brgWanMacAddress")).thenReturn("bwma")
869 when(mex.getVariable("vni")).thenReturn("myvni")
870 when(mex.getVariable("vgmuxBearerIP")).thenReturn("vbi")
871 when(mex.getVariable("allottedResourceModelInfo")).thenReturn("""
873 "modelInvariantUuid":"miu",
875 "modelCustomizationUuid":"mcu",
882 private RollbackData initPreProcessSDNC(ExecutionEntity mex) {
883 def data = new RollbackData()
885 when(mex.getVariable(DBGFLAG)).thenReturn("true")
886 when(mex.getVariable("rollbackData")).thenReturn(data)
891 private initPreProcessSDNCGet(ExecutionEntity mex) {
892 when(mex.getVariable(DBGFLAG)).thenReturn("true")
893 when(mex.getVariable("sdncCallbackUrl")).thenReturn("myurl")
894 when(mex.getVariable("foundActiveAR")).thenReturn(true)
895 when(mex.getVariable("aaiARGetResponse")).thenReturn("<selflink>arlink</selflink>")
896 when(mex.getVariable("sdncAssignResponse")).thenReturn("<response-data><object-path>assignlink</object-path></response-data>")
897 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
898 when(mex.getVariable("sdncCallbackUrl")).thenReturn("myurl")
901 private RollbackData initValidateSDNCResp(ExecutionEntity mex) {
902 def data = new RollbackData()
904 when(mex.getVariable(DBGFLAG)).thenReturn("true")
905 when(mex.getVariable("prefix")).thenReturn(Prefix)
906 when(mex.getVariable("SDNCA_SuccessIndicator")).thenReturn(true)
907 when(mex.getVariable("rollbackData")).thenReturn(data)
912 private String initValidateSDNCResp_Resp() {
913 return "<response-data><response-code>200</response-code></response-data>"
916 private initUpdateAaiAROrchStatus(ExecutionEntity mex) {
917 when(mex.getVariable(DBGFLAG)).thenReturn("true")
918 when(mex.getVariable("aaiARPath")).thenReturn("/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST + "/allotted-resources/allotted-resource/" + ARID)