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 static com.github.tomakehurst.wiremock.client.WireMock.aResponse
26 import static com.github.tomakehurst.wiremock.client.WireMock.put
27 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching
28 import static org.junit.Assert.*
29 import static org.mockito.Mockito.*
30 import static org.onap.so.bpmn.mock.StubResponseAAI.*
31 import javax.ws.rs.core.UriBuilder
32 import org.camunda.bpm.engine.delegate.BpmnError
33 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
35 import org.mockito.MockitoAnnotations
36 import org.onap.aaiclient.client.aai.AAIResourcesClient
37 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
38 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder
39 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types
40 import org.onap.so.bpmn.core.RollbackData
41 import org.onap.so.bpmn.core.UrnPropertiesReader
42 import org.onap.so.bpmn.core.WorkflowException
43 import org.onap.so.bpmn.mock.FileUtil
44 import com.github.tomakehurst.wiremock.junit.WireMockRule
46 class DoCreateAllottedResourceBRGTest extends GroovyTestBase {
49 public WireMockRule wireMockRule = new WireMockRule(PORT)
51 String Prefix = "DCARBRG_"
54 public static void setUpBeforeClass() {
55 aaiUriPfx = UrnPropertiesReader.getVariable("aai.endpoint")
60 MockitoAnnotations.initMocks(this)
63 public DoCreateAllottedResourceBRGTest() {
64 super("DoCreateAllottedResourceBRG")
67 // ***** preProcessRequest *****
70 public void preProcessRequest() {
71 ExecutionEntity mex = setupMock()
74 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
75 DoCreateAllottedResourceBRG.preProcessRequest(mex)
77 verify(mex).setVariable("prefix", Prefix)
79 assertTrue(checkMissingPreProcessRequest("mso.workflow.sdncadapter.callback"))
80 assertTrue(checkMissingPreProcessRequest("mso.workflow.sdnc.replication.delay"))
81 assertTrue(checkMissingPreProcessRequest("serviceInstanceId"))
82 assertTrue(checkMissingPreProcessRequest("parentServiceInstanceId"))
83 assertTrue(checkMissingPreProcessRequest("allottedResourceModelInfo"))
84 assertTrue(checkMissingPreProcessRequest("vni"))
85 assertTrue(checkMissingPreProcessRequest("vgmuxBearerIP"))
86 assertTrue(checkMissingPreProcessRequest("brgWanMacAddress"))
87 assertTrue(checkMissingPreProcessRequest("allottedResourceRole"))
88 assertTrue(checkMissingPreProcessRequest("allottedResourceType"))
91 // ***** getAaiAR *****
95 public void getAaiAR() {
96 MockGetAllottedResource(wireMockRule, CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")
98 ExecutionEntity mex = setupMock()
101 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
102 DoCreateAllottedResourceBRG.getAaiAR(mex)
104 verify(mex).setVariable("foundActiveAR", true)
108 public void getAaiAR_Duplicate() {
109 MockGetAllottedResource(wireMockRule, CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")
111 ExecutionEntity mex = setupMock()
115 when(mex.getVariable("failExists")).thenReturn("true")
117 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
119 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.getAaiAR(mex) }))
123 public void getAaiAR_NotActive() {
124 MockGetAllottedResource(wireMockRule, CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")
126 ExecutionEntity mex = setupMock()
130 when(mex.getVariable("aaiAROrchStatus")).thenReturn("not-active")
132 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
134 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.getAaiAR(mex) }))
139 public void getAaiAR_NoStatus() {
140 MockGetAllottedResource(wireMockRule, CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")
142 ExecutionEntity mex = setupMock()
145 when(mex.getVariable("aaiAROrchStatus")).thenReturn(null)
147 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
148 DoCreateAllottedResourceBRG.getAaiAR(mex)
150 verify(mex, never()).setVariable("foundActiveAR", true)
153 // ***** createAaiAR *****
156 public void createAaiAR() {
157 ExecutionEntity mockExecution = setupMock()
158 AAIResourcesClient client = mock(AAIResourcesClient.class)
159 when(mockExecution.getVariable("PSI_resourceLink")).thenReturn(AAIUriFactory.createResourceFromExistingURI(Types.SERVICE_INSTANCE, UriBuilder.fromPath("/aai/v9/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST).build()))
160 when(mockExecution.getVariable("CSI_resourceLink")).thenReturn("/aai/v9/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST)
161 when(mockExecution.getVariable("allottedResourceModelInfo")).thenReturn("{\n" +
162 " \"modelInvariantUuid\":\"modelInvariantUuid\",\n" +
163 " \"modelUuid\" : \"modelUuid\"\n" +
165 DoCreateAllottedResourceBRG doCreateAllottedResourceBRG = spy(DoCreateAllottedResourceBRG.class)
166 when(doCreateAllottedResourceBRG.getAAIClient()).thenReturn(client)
167 doCreateAllottedResourceBRG.createAaiAR(mockExecution)
172 public void createAaiAR_NoArid_NoModelUuids() {
173 ExecutionEntity mex = setupMock()
174 def map = setupMap(mex)
177 // no allottedResourceId - will be generated
179 when(mex.getVariable("allottedResourceId")).thenReturn(null)
182 .stubFor(put(urlMatching("/aai/.*/allotted-resource/.*"))
183 .willReturn(aResponse()
186 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
187 DoCreateAllottedResourceBRG.createAaiAR(mex)
189 def arid = map.get("allottedResourceId")
191 assertFalse(arid.isEmpty())
193 def data = map.get("rollbackData")
195 assertTrue(data instanceof RollbackData)
197 assertEquals(arid, data.get(Prefix, "allottedResourceId"))
201 public void createAaiAR_MissingPsiLink() {
202 ExecutionEntity mex = setupMock()
205 when(mex.getVariable("PSI_resourceLink")).thenReturn(null)
207 MockPutAllottedResource(wireMockRule, CUST, SVC, INST, ARID)
209 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
211 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.createAaiAR(mex) }))
215 public void createAaiAR_HttpFailed() {
216 ExecutionEntity mex = setupMock()
219 MockPutAllottedResource_500(wireMockRule, CUST, SVC, INST, ARID)
221 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
223 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.createAaiAR(mex) }))
227 public void createAaiAR_BpmnError() {
228 ExecutionEntity mex = setupMock()
231 when(mex.getVariable("aai.endpoint")).thenThrow(new BpmnError("expected exception"))
233 MockPutAllottedResource(wireMockRule, CUST, SVC, INST, ARID)
235 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
237 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.createAaiAR(mex) }))
241 public void createAaiAR_Ex() {
242 ExecutionEntity mex = setupMock()
245 when(mex.getVariable("aai.endpoint")).thenThrow(new RuntimeException("expected exception"))
247 MockPutAllottedResource(wireMockRule, CUST, SVC, INST, ARID)
249 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
251 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.createAaiAR(mex) }))
254 // ***** buildSDNCRequest *****
257 public void buildSDNCRequest() {
258 ExecutionEntity mex = setupMock()
259 initBuildSDNCRequest(mex)
261 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
263 String result = DoCreateAllottedResourceBRG.buildSDNCRequest(mex, "myact", "myreq")
265 assertTrue(result.indexOf("<sdncadapter:RequestId>myreq</") >= 0)
266 assertTrue(result.indexOf("<sdncadapter:SvcAction>myact</") >= 0)
267 assertTrue(result.indexOf("<allotted-resource-id>ari</") >= 0)
268 assertTrue(result.indexOf("<sdncadapter:SvcInstanceId>sii</") >= 0)
269 assertTrue(result.indexOf("<service-instance-id>sii</") >= 0)
270 assertTrue(result.indexOf("<parent-service-instance-id>psii</") >= 0)
271 assertTrue(result.indexOf("<subscription-service-type>sst</") >= 0)
272 assertTrue(result.indexOf("<global-customer-id>gci</") >= 0)
273 assertTrue(result.indexOf("<sdncadapter:CallbackUrl>scu</") >= 0)
274 assertTrue(result.indexOf("<request-id>mri</") >= 0)
275 assertTrue(result.indexOf("<brg-wan-mac-address>bwma</") >= 0)
276 assertTrue(result.indexOf("<vni>myvni</") >= 0)
277 assertTrue(result.indexOf("<vgmux-bearer-ip>vbi</") >= 0)
278 assertTrue(result.indexOf("<model-invariant-uuid>miu</") >= 0)
279 assertTrue(result.indexOf("<model-uuid>mu</") >= 0)
280 assertTrue(result.indexOf("<model-customization-uuid>mcu</") >= 0)
281 assertTrue(result.indexOf("<model-version>mv</") >= 0)
282 assertTrue(result.indexOf("<model-name>mn</") >= 0)
286 public void buildSDNCRequest_EmptyModelInfo() {
287 ExecutionEntity mex = setupMock()
288 initBuildSDNCRequest(mex)
290 when(mex.getVariable("allottedResourceModelInfo")).thenReturn("{}")
292 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
294 String result = DoCreateAllottedResourceBRG.buildSDNCRequest(mex, "myact", "myreq")
296 assertTrue(result.indexOf("<sdncadapter:RequestId>myreq</") >= 0)
297 assertTrue(result.indexOf("<sdncadapter:SvcAction>myact</") >= 0)
298 assertTrue(result.indexOf("<allotted-resource-id>ari</") >= 0)
299 assertTrue(result.indexOf("<sdncadapter:SvcInstanceId>sii</") >= 0)
300 assertTrue(result.indexOf("<service-instance-id>sii</") >= 0)
301 assertTrue(result.indexOf("<parent-service-instance-id>psii</") >= 0)
302 assertTrue(result.indexOf("<subscription-service-type>sst</") >= 0)
303 assertTrue(result.indexOf("<global-customer-id>gci</") >= 0)
304 assertTrue(result.indexOf("<sdncadapter:CallbackUrl>scu</") >= 0)
305 assertTrue(result.indexOf("<request-id>mri</") >= 0)
306 assertTrue(result.indexOf("<brg-wan-mac-address>bwma</") >= 0)
307 assertTrue(result.indexOf("<vni>myvni</") >= 0)
308 assertTrue(result.indexOf("<vgmux-bearer-ip>vbi</") >= 0)
309 assertTrue(result.indexOf("<model-invariant-uuid/>") >= 0)
310 assertTrue(result.indexOf("<model-uuid/>") >= 0)
311 assertTrue(result.indexOf("<model-customization-uuid/>") >= 0)
312 assertTrue(result.indexOf("<model-version/>") >= 0)
313 assertTrue(result.indexOf("<model-name/>") >= 0)
317 public void buildSDNCRequest_Ex() {
318 ExecutionEntity mex = setupMock()
319 initBuildSDNCRequest(mex)
321 when(mex.getVariable("allottedResourceId")).thenThrow(new RuntimeException("expected exception"))
323 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
325 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.buildSDNCRequest(mex, "myact", "myreq") }))
328 // ***** preProcessSDNCAssign *****
331 public void preProcessSDNCAssign() {
332 ExecutionEntity mex = setupMock()
333 def map = setupMap(mex)
334 def data = initPreProcessSDNC(mex)
336 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
337 DoCreateAllottedResourceBRG.preProcessSDNCAssign(mex)
339 def req = map.get("sdncAssignRequest")
342 assertEquals(data, map.get("rollbackData"))
344 def rbreq = data.get(Prefix, "sdncAssignRollbackReq")
346 assertTrue(req.indexOf("<sdncadapter:SvcAction>assign</") >= 0)
347 assertTrue(req.indexOf("<request-action>CreateBRGInstance</") >= 0)
348 assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
350 assertTrue(rbreq.indexOf("<sdncadapter:SvcAction>unassign</") >= 0)
351 assertTrue(rbreq.indexOf("<request-action>DeleteBRGInstance</") >= 0)
352 assertTrue(rbreq.indexOf("<sdncadapter:RequestId>") >= 0)
356 public void preProcessSDNCAssign_BpmnError() {
357 ExecutionEntity mex = setupMock()
358 initPreProcessSDNC(mex)
360 when(mex.getVariable("rollbackData")).thenThrow(new BpmnError("expected exception"))
362 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
364 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCAssign(mex) }))
368 public void preProcessSDNCAssign_Ex() {
369 ExecutionEntity mex = setupMock()
370 initPreProcessSDNC(mex)
372 when(mex.getVariable("rollbackData")).thenThrow(new RuntimeException("expected exception"))
374 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
376 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCAssign(mex) }))
379 // ***** preProcessSDNCCreate *****
382 public void preProcessSDNCCreate() {
383 ExecutionEntity mex = setupMock()
384 def map = setupMap(mex)
385 def data = initPreProcessSDNC(mex)
387 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
388 DoCreateAllottedResourceBRG.preProcessSDNCCreate(mex)
390 def req = map.get("sdncCreateRequest")
393 assertEquals(data, map.get("rollbackData"))
395 def rbreq = data.get(Prefix, "sdncCreateRollbackReq")
397 assertTrue(req.indexOf("<sdncadapter:SvcAction>create</") >= 0)
398 assertTrue(req.indexOf("<request-action>CreateBRGInstance</") >= 0)
399 assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
401 assertTrue(rbreq.indexOf("<sdncadapter:SvcAction>delete</") >= 0)
402 assertTrue(rbreq.indexOf("<request-action>DeleteBRGInstance</") >= 0)
403 assertTrue(rbreq.indexOf("<sdncadapter:RequestId>") >= 0)
408 public void preProcessSDNCCreate_BpmnError() {
409 ExecutionEntity mex = setupMock()
410 initPreProcessSDNC(mex)
412 when(mex.getVariable("rollbackData")).thenThrow(new BpmnError("expected exception"))
414 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
416 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCCreate(mex) }))
420 public void preProcessSDNCCreate_Ex() {
421 ExecutionEntity mex = setupMock()
422 initPreProcessSDNC(mex)
424 when(mex.getVariable("rollbackData")).thenThrow(new RuntimeException("expected exception"))
426 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
428 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCCreate(mex) }))
431 // ***** preProcessSDNCActivate *****
434 public void preProcessSDNCActivate() {
435 ExecutionEntity mex = setupMock()
436 def map = setupMap(mex)
437 def data = initPreProcessSDNC(mex)
439 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
440 DoCreateAllottedResourceBRG.preProcessSDNCActivate(mex)
442 def req = map.get("sdncActivateRequest")
445 assertEquals(data, map.get("rollbackData"))
447 def rbreq = data.get(Prefix, "sdncActivateRollbackReq")
449 assertTrue(req.indexOf("<sdncadapter:SvcAction>activate</") >= 0)
450 assertTrue(req.indexOf("<request-action>CreateBRGInstance</") >= 0)
451 assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
453 assertTrue(rbreq.indexOf("<sdncadapter:SvcAction>deactivate</") >= 0)
454 assertTrue(rbreq.indexOf("<request-action>DeleteBRGInstance</") >= 0)
455 assertTrue(rbreq.indexOf("<sdncadapter:RequestId>") >= 0)
460 public void preProcessSDNCActivate_BpmnError() {
461 ExecutionEntity mex = setupMock()
462 initPreProcessSDNC(mex)
464 when(mex.getVariable("rollbackData")).thenThrow(new BpmnError("expected exception"))
466 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
468 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCActivate(mex) }))
472 public void preProcessSDNCActivate_Ex() {
473 ExecutionEntity mex = setupMock()
474 initPreProcessSDNC(mex)
476 when(mex.getVariable("rollbackData")).thenThrow(new RuntimeException("expected exception"))
478 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
480 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCActivate(mex) }))
483 // ***** validateSDNCResp *****
486 public void validateSDNCResp() {
487 ExecutionEntity mex = setupMock()
488 def map = setupMap(mex)
489 def data = initValidateSDNCResp(mex)
490 def resp = initValidateSDNCResp_Resp()
492 when(mex.getVariable(Prefix + "sdncResponseSuccess")).thenReturn(true)
494 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
496 DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "create")
498 verify(mex).getVariable("WorkflowException")
499 verify(mex).getVariable("SDNCA_SuccessIndicator")
500 verify(mex).getVariable("rollbackData")
502 assertEquals(data, map.get("rollbackData"))
504 assertEquals("true", data.get(Prefix, "rollback" + "SDNCcreate"))
509 public void validateSDNCResp_Get() {
510 ExecutionEntity mex = setupMock()
511 def data = initValidateSDNCResp(mex)
512 def resp = initValidateSDNCResp_Resp()
514 when(mex.getVariable(Prefix + "sdncResponseSuccess")).thenReturn(true)
516 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
518 DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "get")
520 verify(mex).getVariable("WorkflowException")
521 verify(mex).getVariable("SDNCA_SuccessIndicator")
523 verify(mex, never()).getVariable("rollbackData")
527 public void validateSDNCResp_Unsuccessful() {
528 ExecutionEntity mex = setupMock()
529 initValidateSDNCResp(mex)
530 def resp = initValidateSDNCResp_Resp()
533 when(mex.getVariable(Prefix + "sdncResponseSuccess")).thenReturn(false)
535 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
537 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "create") }))
541 public void validateSDNCResp_BpmnError() {
542 ExecutionEntity mex = setupMock()
543 initValidateSDNCResp(mex)
544 def resp = initValidateSDNCResp_Resp()
546 when(mex.getVariable("WorkflowException")).thenThrow(new BpmnError("expected exception"))
548 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
550 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "create") }))
554 public void validateSDNCResp_Ex() {
555 ExecutionEntity mex = setupMock()
556 initValidateSDNCResp(mex)
557 def resp = initValidateSDNCResp_Resp()
559 when(mex.getVariable("WorkflowException")).thenThrow(new RuntimeException("expected exception"))
561 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
563 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "create") }))
566 // ***** preProcessSDNCGet *****
569 public void preProcessSDNCGet_FoundAR() {
570 ExecutionEntity mex = setupMock()
571 def map = setupMap(mex)
572 initPreProcessSDNCGet(mex)
574 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
575 DoCreateAllottedResourceBRG.preProcessSDNCGet(mex)
577 String req = map.get("sdncGetRequest")
579 assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
580 assertTrue(req.indexOf("<sdncadapter:SvcInstanceId>sii</") >= 0)
581 assertTrue(req.indexOf("<sdncadapter:SvcOperation>arlink</") >= 0)
582 assertTrue(req.indexOf("<sdncadapter:CallbackUrl>myurl</") >= 0)
587 public void preProcessSDNCGet_NotFoundAR() {
588 ExecutionEntity mex = setupMock()
589 def map = setupMap(mex)
590 initPreProcessSDNCGet(mex)
592 when(mex.getVariable("foundActiveAR")).thenReturn(false)
594 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
595 DoCreateAllottedResourceBRG.preProcessSDNCGet(mex)
597 String req = map.get("sdncGetRequest")
599 assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
600 assertTrue(req.indexOf("<sdncadapter:SvcInstanceId>sii</") >= 0)
601 assertTrue(req.indexOf("<sdncadapter:SvcOperation>assignlink</") >= 0)
602 assertTrue(req.indexOf("<sdncadapter:CallbackUrl>myurl</") >= 0)
607 public void preProcessSDNCGet_Ex() {
608 ExecutionEntity mex = setupMock()
609 initPreProcessSDNCGet(mex)
611 when(mex.getVariable("foundActiveAR")).thenThrow(new RuntimeException("expected exception"))
613 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
615 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCGet(mex) }))
618 // ***** updateAaiAROrchStatus *****
622 public void updateAaiAROrchStatus() {
623 MockPatchAllottedResource(wireMockRule, CUST, SVC, INST, ARID)
625 ExecutionEntity mex = setupMock()
626 initUpdateAaiAROrchStatus(mex)
628 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
629 DoCreateAllottedResourceBRG.updateAaiAROrchStatus(mex, "success")
632 // ***** generateOutputs *****
635 public void generateOutputs() {
636 ExecutionEntity mex = setupMock()
637 def brgtop = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/SDNCTopologyQueryCallback.xml")
639 when(mex.getVariable(DBGFLAG)).thenReturn("true")
640 when(mex.getVariable("enhancedCallbackRequestData")).thenReturn(brgtop)
642 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
643 DoCreateAllottedResourceBRG.generateOutputs(mex)
645 verify(mex).setVariable("allotedResourceName", "namefromrequest")
650 public void generateOutputs_BadXml() {
651 ExecutionEntity mex = setupMock()
653 when(mex.getVariable(DBGFLAG)).thenReturn("true")
654 when(mex.getVariable("enhancedCallbackRequestData")).thenReturn("invalid xml")
656 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
657 DoCreateAllottedResourceBRG.generateOutputs(mex)
659 verify(mex, never()).setVariable(anyString(), anyString())
664 public void generateOutputs_BpmnError() {
665 ExecutionEntity mex = setupMock()
667 when(mex.getVariable(DBGFLAG)).thenReturn("true")
668 when(mex.getVariable("enhancedCallbackRequestData")).thenThrow(new BpmnError("expected exception"))
670 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
672 DoCreateAllottedResourceBRG.generateOutputs(mex)
673 verify(mex, never()).setVariable(anyString(), anyString())
678 public void generateOutputs_Ex() {
679 ExecutionEntity mex = setupMock()
681 when(mex.getVariable(DBGFLAG)).thenReturn("true")
682 when(mex.getVariable("enhancedCallbackRequestData")).thenThrow(new RuntimeException("expected exception"))
684 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
686 DoCreateAllottedResourceBRG.generateOutputs(mex)
687 verify(mex, never()).setVariable(anyString(), anyString())
691 // ***** preProcessRollback *****
694 public void preProcessRollback() {
695 ExecutionEntity mex = setupMock()
696 WorkflowException wfe = mock(WorkflowException.class)
698 when(mex.getVariable(DBGFLAG)).thenReturn("true")
699 when(mex.getVariable("WorkflowException")).thenReturn(wfe)
701 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
702 DoCreateAllottedResourceBRG.preProcessRollback(mex)
704 verify(mex).setVariable("prevWorkflowException", wfe)
708 public void preProcessRollback_NotWFE() {
709 ExecutionEntity mex = setupMock()
711 when(mex.getVariable(DBGFLAG)).thenReturn("true")
712 when(mex.getVariable("WorkflowException")).thenReturn("I'm not a WFE")
714 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
715 DoCreateAllottedResourceBRG.preProcessRollback(mex)
719 public void preProcessRollback_BpmnError() {
720 ExecutionEntity mex = setupMock()
722 when(mex.getVariable(DBGFLAG)).thenReturn("true")
723 when(mex.getVariable("WorkflowException")).thenThrow(new BpmnError("expected exception"))
725 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
727 DoCreateAllottedResourceBRG.preProcessRollback(mex)
731 public void preProcessRollback_Ex() {
732 ExecutionEntity mex = setupMock()
734 when(mex.getVariable(DBGFLAG)).thenReturn("true")
735 when(mex.getVariable("WorkflowException")).thenThrow(new RuntimeException("expected exception"))
737 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
739 DoCreateAllottedResourceBRG.preProcessRollback(mex)
743 // ***** postProcessRollback *****
746 public void postProcessRollback() {
747 ExecutionEntity mex = setupMock()
748 WorkflowException wfe = mock(WorkflowException.class)
750 when(mex.getVariable(DBGFLAG)).thenReturn("true")
751 when(mex.getVariable("prevWorkflowException")).thenReturn(wfe)
753 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
754 DoCreateAllottedResourceBRG.postProcessRollback(mex)
756 verify(mex).setVariable("WorkflowException", wfe)
757 verify(mex).setVariable("rollbackData", null)
762 public void postProcessRollback_NotWFE() {
763 ExecutionEntity mex = setupMock()
765 when(mex.getVariable(DBGFLAG)).thenReturn("true")
766 when(mex.getVariable("prevWorkflowException")).thenReturn("I'm not a WFE")
768 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
769 DoCreateAllottedResourceBRG.postProcessRollback(mex)
771 verify(mex).setVariable("rollbackData", null)
776 public void postProcessRollback_BpmnError() {
777 ExecutionEntity mex = setupMock()
779 when(mex.getVariable(DBGFLAG)).thenReturn("true")
780 when(mex.getVariable("prevWorkflowException")).thenThrow(new BpmnError("expected exception"))
782 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
784 assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.postProcessRollback(mex) }))
785 verify(mex, never()).setVariable("rollbackData", null)
790 public void postProcessRollback_Ex() {
791 ExecutionEntity mex = setupMock()
793 when(mex.getVariable(DBGFLAG)).thenReturn("true")
794 when(mex.getVariable("prevWorkflowException")).thenThrow(new RuntimeException("expected exception"))
796 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
798 DoCreateAllottedResourceBRG.postProcessRollback(mex)
799 verify(mex, never()).setVariable("rollbackData", null)
803 private boolean checkMissingPreProcessRequest(String fieldnm) {
804 ExecutionEntity mex = setupMock()
807 DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
809 when(mex.getVariable(fieldnm)).thenReturn("")
811 return doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessRequest(mex) })
814 private void initPreProcess(ExecutionEntity mex) {
815 when(mex.getVariable(DBGFLAG)).thenReturn("true")
816 when(mex.getVariable("mso.workflow.sdncadapter.callback")).thenReturn("sdncurn")
817 when(mex.getVariable("mso.workflow.sdnc.replication.delay")).thenReturn("sdncdelay")
818 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
819 when(mex.getVariable("parentServiceInstanceId")).thenReturn("psii")
820 when(mex.getVariable("allottedResourceModelInfo")).thenReturn("armi")
821 when(mex.getVariable("vni")).thenReturn("myvni")
822 when(mex.getVariable("vgmuxBearerIP")).thenReturn("vbi")
823 when(mex.getVariable("brgWanMacAddress")).thenReturn("bwma")
824 when(mex.getVariable("allottedResourceRole")).thenReturn("arr")
825 when(mex.getVariable("allottedResourceType")).thenReturn("art")
828 private void initGetAaiAR(ExecutionEntity mex) {
829 when(mex.getVariable(DBGFLAG)).thenReturn("true")
830 when(mex.getVariable("allottedResourceType")).thenReturn("BRGt")
831 when(mex.getVariable("allottedResourceRole")).thenReturn("BRGr")
832 when(mex.getVariable("CSI_service")).thenReturn(FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/getAR.xml"))
833 when(mex.getVariable("aai.endpoint")).thenReturn(aaiUriPfx)
834 when(mex.getVariable("aaiAROrchStatus")).thenReturn("Active")
837 private initCreateAaiAr(ExecutionEntity mex) {
838 when(mex.getVariable("disableRollback")).thenReturn(45)
839 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
840 when(mex.getVariable("parentServiceInstanceId")).thenReturn("psii")
841 when(mex.getVariable(DBGFLAG)).thenReturn("true")
842 when(mex.getVariable("allottedResourceId")).thenReturn(ARID)
843 when(mex.getVariable("aai.endpoint")).thenReturn(aaiUriPfx)
844 when(mex.getVariable("mso.workflow.global.default.aai.namespace")).thenReturn(UrnPropertiesReader.getVariable("mso.workflow.global.default.aai.namespace"))
845 when(mex.getVariable("PSI_resourceLink")).thenReturn(AAIUriFactory.createResourceFromExistingURI(Types.SERVICE_INSTANCE, UriBuilder.fromPath("/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST).build()))
846 when(mex.getVariable("allottedResourceType")).thenReturn("BRGt")
847 when(mex.getVariable("allottedResourceRole")).thenReturn("BRGr")
848 when(mex.getVariable("CSI_resourceLink")).thenReturn(aaiUriPfx + "/aai/v9/mycsi")
849 when(mex.getVariable("allottedResourceModelInfo")).thenReturn("""
851 "modelInvariantUuid":"modelinvuuid",
852 "modelUuid":"modeluuid",
853 "modelCustomizationUuid":"modelcustuuid"
858 private initBuildSDNCRequest(ExecutionEntity mex) {
859 when(mex.getVariable(DBGFLAG)).thenReturn("true")
860 when(mex.getVariable("allottedResourceId")).thenReturn("ari")
861 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
862 when(mex.getVariable("parentServiceInstanceId")).thenReturn("psii")
863 when(mex.getVariable("subscriptionServiceType")).thenReturn("sst")
864 when(mex.getVariable("globalCustomerId")).thenReturn("gci")
865 when(mex.getVariable("sdncCallbackUrl")).thenReturn("scu")
866 when(mex.getVariable("msoRequestId")).thenReturn("mri")
867 when(mex.getVariable("brgWanMacAddress")).thenReturn("bwma")
868 when(mex.getVariable("vni")).thenReturn("myvni")
869 when(mex.getVariable("vgmuxBearerIP")).thenReturn("vbi")
870 when(mex.getVariable("allottedResourceModelInfo")).thenReturn("""
872 "modelInvariantUuid":"miu",
874 "modelCustomizationUuid":"mcu",
881 private RollbackData initPreProcessSDNC(ExecutionEntity mex) {
882 def data = new RollbackData()
884 when(mex.getVariable(DBGFLAG)).thenReturn("true")
885 when(mex.getVariable("rollbackData")).thenReturn(data)
890 private initPreProcessSDNCGet(ExecutionEntity mex) {
891 when(mex.getVariable(DBGFLAG)).thenReturn("true")
892 when(mex.getVariable("sdncCallbackUrl")).thenReturn("myurl")
893 when(mex.getVariable("foundActiveAR")).thenReturn(true)
894 when(mex.getVariable("aaiARGetResponse")).thenReturn("<selflink>arlink</selflink>")
895 when(mex.getVariable("sdncAssignResponse")).thenReturn("<response-data><object-path>assignlink</object-path></response-data>")
896 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
897 when(mex.getVariable("sdncCallbackUrl")).thenReturn("myurl")
900 private RollbackData initValidateSDNCResp(ExecutionEntity mex) {
901 def data = new RollbackData()
903 when(mex.getVariable(DBGFLAG)).thenReturn("true")
904 when(mex.getVariable("prefix")).thenReturn(Prefix)
905 when(mex.getVariable("SDNCA_SuccessIndicator")).thenReturn(true)
906 when(mex.getVariable("rollbackData")).thenReturn(data)
911 private String initValidateSDNCResp_Resp() {
912 return "<response-data><response-code>200</response-code></response-data>"
915 private initUpdateAaiAROrchStatus(ExecutionEntity mex) {
916 when(mex.getVariable(DBGFLAG)).thenReturn("true")
917 when(mex.getVariable("aaiARPath")).thenReturn("/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST + "/allotted-resources/allotted-resource/" + ARID)