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.aaiclient.client.aai.AAIObjectType
35 import org.onap.aaiclient.client.aai.AAIResourcesClient
36 import org.onap.aaiclient.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(wireMockRule, 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(wireMockRule, 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(wireMockRule, 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(wireMockRule, 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(wireMockRule, 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(wireMockRule, 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(wireMockRule, 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(wireMockRule, 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(wireMockRule, 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)