2b78690e274ecf4ed1dc3ae069c4303df55325f1
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.so.bpmn.servicedecomposition.tasks;
22
23 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
24 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
25 import static org.hamcrest.CoreMatchers.containsString;
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertNull;
28 import static org.mockito.ArgumentMatchers.any;
29 import static org.mockito.ArgumentMatchers.anyString;
30 import static org.mockito.ArgumentMatchers.eq;
31 import static org.mockito.ArgumentMatchers.isA;
32 import static org.mockito.Mockito.doReturn;
33 import static org.mockito.Mockito.times;
34 import static org.mockito.Mockito.verify;
35 import java.io.File;
36 import java.io.IOException;
37 import java.util.Arrays;
38 import java.util.List;
39 import java.util.Optional;
40 import org.junit.Before;
41 import org.junit.Rule;
42 import org.junit.Test;
43 import org.junit.rules.ExpectedException;
44 import org.junit.runner.RunWith;
45 import org.mockito.InjectMocks;
46 import org.mockito.Mock;
47 import org.mockito.Mockito;
48 import org.mockito.junit.MockitoJUnitRunner;
49 import org.onap.aai.domain.yang.CloudRegion;
50 import org.onap.aai.domain.yang.Configuration;
51 import org.onap.aai.domain.yang.Configurations;
52 import org.onap.aai.domain.yang.GenericVnf;
53 import org.onap.aai.domain.yang.GenericVnfs;
54 import org.onap.aai.domain.yang.L3Network;
55 import org.onap.aai.domain.yang.L3Networks;
56 import org.onap.aai.domain.yang.ServiceInstance;
57 import org.onap.aai.domain.yang.ServiceInstances;
58 import org.onap.aai.domain.yang.VolumeGroup;
59 import org.onap.aai.domain.yang.VolumeGroups;
60 import org.onap.so.bpmn.common.InjectionHelper;
61 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
62 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceSubscription;
63 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
64 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.MultipleObjectsFoundException;
65 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.NoServiceInstanceFoundException;
66 import org.onap.so.client.aai.AAIObjectPlurals;
67 import org.onap.so.client.aai.AAIObjectType;
68 import org.onap.so.client.aai.AAIResourcesClient;
69 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
70 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
71 import org.onap.so.client.graphinventory.entities.uri.Depth;
72 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
73 import org.onap.so.db.catalog.beans.Service;
74 import org.onap.so.db.catalog.beans.VnfcInstanceGroupCustomization;
75 import org.onap.so.db.catalog.client.CatalogDbClient;
76 import org.onap.so.db.request.beans.InfraActiveRequests;
77 import org.onap.so.db.request.beans.RequestProcessingData;
78 import org.onap.so.db.request.client.RequestsDbClient;
79 import org.onap.so.serviceinstancebeans.CloudConfiguration;
80 import org.onap.so.serviceinstancebeans.ModelInfo;
81 import org.onap.so.serviceinstancebeans.RequestDetails;
82 import com.fasterxml.jackson.core.JsonParseException;
83 import com.fasterxml.jackson.databind.JsonMappingException;
84 import com.fasterxml.jackson.databind.ObjectMapper;
85
86 @RunWith(MockitoJUnitRunner.class)
87 public class BBInputSetupUtilsTest {
88     protected ObjectMapper mapper = new ObjectMapper();
89     private static final String RESOURCE_PATH = "src/test/resources/__files/ExecuteBuildingBlock/";
90
91     @InjectMocks
92     BBInputSetupUtils bbInputSetupUtils = new BBInputSetupUtils();
93
94     @Mock
95     protected CatalogDbClient MOCK_catalogDbClient;
96
97     @Mock
98     protected RequestsDbClient MOCK_requestsDbClient;
99
100     @Mock
101     protected AAIResourcesClient MOCK_aaiResourcesClient;
102
103     @Mock
104     protected InjectionHelper MOCK_injectionHelper;
105
106     @Rule
107     public ExpectedException expectedException = ExpectedException.none();
108
109     @Before
110     public void setup() {
111         doReturn(MOCK_aaiResourcesClient).when(MOCK_injectionHelper).getAaiClient();
112     }
113
114     @Test
115     public void testGetCatalogServiceByModelUUID() throws JsonParseException, JsonMappingException, IOException {
116         Service expected = mapper.readValue(new File(RESOURCE_PATH + "CatalogServiceExpected.json"), Service.class);
117
118         RequestDetails requestDetails = new RequestDetails();
119         ModelInfo modelInfo = new ModelInfo();
120         modelInfo.setModelVersionId("modelUUID");
121         requestDetails.setModelInfo(modelInfo);
122         doReturn(expected).when(MOCK_catalogDbClient).getServiceByID("modelUUID");
123         Service actual = bbInputSetupUtils.getCatalogServiceByModelUUID(modelInfo.getModelVersionId());
124
125         assertThat(actual, sameBeanAs(expected));
126     }
127
128     @Test
129     public void testGetCatalogServiceByModelVersionAndModelInvariantUUID()
130             throws JsonParseException, JsonMappingException, IOException {
131         String modelVersion = "modelVersion";
132         String modelInvariantUUID = "modelInvariantUUID";
133         Service expectedService =
134                 mapper.readValue(new File(RESOURCE_PATH + "CatalogServiceExpected.json"), Service.class);
135
136         doReturn(expectedService).when(MOCK_catalogDbClient)
137                 .getServiceByModelVersionAndModelInvariantUUID(isA(String.class), isA(String.class));
138
139         Service actualService = bbInputSetupUtils.getCatalogServiceByModelVersionAndModelInvariantUUID(modelVersion,
140                 modelInvariantUUID);
141
142         assertThat(actualService, sameBeanAs(expectedService));
143     }
144
145     @Test
146     public void testGetVnfcInstanceGroups() throws JsonParseException, JsonMappingException, IOException {
147         VnfcInstanceGroupCustomization vnfc = mapper.readValue(
148                 new File(RESOURCE_PATH + "VnfcInstanceGroupCustomization.json"), VnfcInstanceGroupCustomization.class);
149         String modelCustomizationUUID = "modelCustomizationUUID";
150
151         doReturn(Arrays.asList(vnfc)).when(MOCK_catalogDbClient)
152                 .getVnfcInstanceGroupsByVnfResourceCust(isA(String.class));
153
154         List<VnfcInstanceGroupCustomization> actualVnfcList =
155                 bbInputSetupUtils.getVnfcInstanceGroups(modelCustomizationUUID);
156
157         assertThat(actualVnfcList, sameBeanAs(Arrays.asList(vnfc)));
158     }
159
160     @Test
161     public void testGetRequestDetails() throws JsonParseException, JsonMappingException, IOException {
162         InfraActiveRequests infraActiveRequest = mapper
163                 .readValue(new File(RESOURCE_PATH + "InfraActiveRequestExpected.json"), InfraActiveRequests.class);
164
165         RequestDetails expected =
166                 mapper.readValue(new File(RESOURCE_PATH + "RequestDetailsExpected.json"), RequestDetails.class);
167         String requestId = "requestId";
168         doReturn(infraActiveRequest).when(MOCK_requestsDbClient).getInfraActiveRequestbyRequestId(requestId);
169         RequestDetails actual = bbInputSetupUtils.getRequestDetails(requestId);
170
171         assertThat(actual, sameBeanAs(expected));
172     }
173
174     @Test
175     public void getRequestDetailsNullTest() throws IOException {
176         RequestDetails requestDetails = bbInputSetupUtils.getRequestDetails("");
177
178         assertNull(requestDetails);
179     }
180
181     @Test
182     public void testGetCloudRegion() {
183         CloudConfiguration cloudConfig = new CloudConfiguration();
184         cloudConfig.setLcpCloudRegionId("lcpCloudRegionId");
185         Optional<org.onap.aai.domain.yang.CloudRegion> expected =
186                 Optional.of(new org.onap.aai.domain.yang.CloudRegion());
187         expected.get().setCloudOwner("cloudOwner");
188         expected.get().setCloudRegionId("lcpCloudRegionId");
189         doReturn(expected).when(MOCK_aaiResourcesClient).get(org.onap.aai.domain.yang.CloudRegion.class,
190                 AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, cloudConfig.getCloudOwner(),
191                         cloudConfig.getLcpCloudRegionId()).depth(Depth.TWO));
192
193         AAIResourceUri expectedUri = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION,
194                 cloudConfig.getCloudOwner(), cloudConfig.getLcpCloudRegionId()).depth(Depth.TWO);
195         bbInputSetupUtils.getCloudRegion(cloudConfig);
196
197         verify(MOCK_aaiResourcesClient, times(1)).get(CloudRegion.class, expectedUri);
198     }
199
200     @Test
201     public void testGetCloudRegionExceptionTest() {
202
203         CloudConfiguration cloudConfig = new CloudConfiguration();
204         cloudConfig.setLcpCloudRegionId("lcpCloudRegionId");
205
206         RequestDetails requestDetails = new RequestDetails();
207         requestDetails.setCloudConfiguration(cloudConfig);
208
209         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(isA(Class.class), isA(AAIResourceUri.class));
210
211         CloudRegion cloudRegion = bbInputSetupUtils.getCloudRegion(cloudConfig);
212
213         assertNull(cloudRegion);
214     }
215
216     @Test
217     public void testGetCloudRegionEmptyId() {
218         CloudConfiguration cloudConfig = new CloudConfiguration();
219         cloudConfig.setLcpCloudRegionId("");
220
221         RequestDetails requestDetails = new RequestDetails();
222         requestDetails.setCloudConfiguration(cloudConfig);
223
224         CloudRegion cloudRegion = bbInputSetupUtils.getCloudRegion(cloudConfig);
225
226         assertNull(cloudRegion);
227     }
228
229     @Test
230     public void testGetCloudRegionEmptyConfiguration() {
231         RequestDetails requestDetails = new RequestDetails();
232
233         CloudRegion cloudRegion = bbInputSetupUtils.getCloudRegion(requestDetails.getCloudConfiguration());
234
235         assertNull(cloudRegion);
236     }
237
238     @Test
239     public void testGetAAIInstanceGroup() {
240         Optional<org.onap.aai.domain.yang.InstanceGroup> expected =
241                 Optional.of(new org.onap.aai.domain.yang.InstanceGroup());
242         String instanceGroupId = "instanceGroupId";
243         expected.get().setId(instanceGroupId);
244         doReturn(expected).when(MOCK_aaiResourcesClient).get(org.onap.aai.domain.yang.InstanceGroup.class,
245                 AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroupId));
246         AAIResourceUri expectedUri = AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroupId);
247
248         bbInputSetupUtils.getAAIInstanceGroup(instanceGroupId);
249         verify(MOCK_aaiResourcesClient, times(1)).get(org.onap.aai.domain.yang.InstanceGroup.class, expectedUri);
250     }
251
252     @Test
253     public void testGetAAIInstanceGroupThrowNotFound() {
254         String instanceGroupId = "instanceGroupId";
255         doReturn(MOCK_aaiResourcesClient).when(MOCK_injectionHelper).getAaiClient();
256         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(org.onap.aai.domain.yang.InstanceGroup.class,
257                 AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroupId));
258
259         org.onap.aai.domain.yang.InstanceGroup actual = bbInputSetupUtils.getAAIInstanceGroup(instanceGroupId);
260
261         assertNull(actual);
262     }
263
264     @Test
265     public void testGetAAICustomer() {
266         Optional<org.onap.aai.domain.yang.Customer> expected = Optional.of(new org.onap.aai.domain.yang.Customer());
267         String globalSubscriberId = "globalSubscriberId";
268         expected.get().setGlobalCustomerId(globalSubscriberId);
269         doReturn(expected).when(MOCK_aaiResourcesClient).get(org.onap.aai.domain.yang.Customer.class,
270                 AAIUriFactory.createResourceUri(AAIObjectType.CUSTOMER, globalSubscriberId));
271         AAIResourceUri expectedUri = AAIUriFactory.createResourceUri(AAIObjectType.CUSTOMER, globalSubscriberId);
272
273         bbInputSetupUtils.getAAICustomer(globalSubscriberId);
274         verify(MOCK_aaiResourcesClient, times(1)).get(org.onap.aai.domain.yang.Customer.class, expectedUri);
275     }
276
277     @Test
278     public void testGetAAICustomerThrowNotFound() {
279         String globalSubscriberId = "globalSubscriberId";
280         doReturn(MOCK_aaiResourcesClient).when(MOCK_injectionHelper).getAaiClient();
281         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(org.onap.aai.domain.yang.Customer.class,
282                 AAIUriFactory.createResourceUri(AAIObjectType.CUSTOMER, globalSubscriberId));
283
284         org.onap.aai.domain.yang.Customer actual = bbInputSetupUtils.getAAICustomer(globalSubscriberId);
285
286         assertNull(actual);
287     }
288
289     @Test
290     public void testGetAAIServiceSubscription() {
291         Optional<org.onap.aai.domain.yang.ServiceSubscription> expected =
292                 Optional.of(new org.onap.aai.domain.yang.ServiceSubscription());
293         String globalSubscriberId = "globalSubscriberId";
294         String subscriptionServiceType = "subscriptionServiceType";
295         expected.get().setServiceType(subscriptionServiceType);
296         doReturn(expected).when(MOCK_aaiResourcesClient).get(org.onap.aai.domain.yang.ServiceSubscription.class,
297                 AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_SUBSCRIPTION, globalSubscriberId,
298                         subscriptionServiceType));
299         AAIResourceUri expectedUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_SUBSCRIPTION,
300                 globalSubscriberId, subscriptionServiceType);
301
302         bbInputSetupUtils.getAAIServiceSubscription(globalSubscriberId, subscriptionServiceType);
303         verify(MOCK_aaiResourcesClient, times(1)).get(org.onap.aai.domain.yang.ServiceSubscription.class, expectedUri);
304     }
305
306     @Test
307     public void testGetAAIServiceSubscriptionErrors() {
308         String globalSubId = null;
309         String subServiceType = null;
310         org.onap.aai.domain.yang.ServiceSubscription actual =
311                 bbInputSetupUtils.getAAIServiceSubscription(globalSubId, subServiceType);
312         assertNull(actual);
313
314         String globalSubId2 = "";
315         String subServiceType2 = "";
316         org.onap.aai.domain.yang.ServiceSubscription actual2 =
317                 bbInputSetupUtils.getAAIServiceSubscription(globalSubId2, subServiceType2);
318         assertNull(actual2);
319
320         String globalSubId3 = "";
321         String subServiceType3 = null;
322         org.onap.aai.domain.yang.ServiceSubscription actual3 =
323                 bbInputSetupUtils.getAAIServiceSubscription(globalSubId3, subServiceType3);
324         assertNull(actual3);
325
326         String globalSubId4 = null;
327         String subServiceType4 = "";
328         org.onap.aai.domain.yang.ServiceSubscription actual4 =
329                 bbInputSetupUtils.getAAIServiceSubscription(globalSubId4, subServiceType4);
330         assertNull(actual4);
331     }
332
333     @Test
334     public void testGetAAIServiceSubscriptionThrowNotFound() {
335         String globalSubscriberId = "globalSubscriberId";
336         String subscriptionServiceType = "subscriptionServiceType";
337         doReturn(MOCK_aaiResourcesClient).when(MOCK_injectionHelper).getAaiClient();
338         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(org.onap.aai.domain.yang.ServiceSubscription.class,
339                 AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_SUBSCRIPTION, globalSubscriberId,
340                         subscriptionServiceType));
341         org.onap.aai.domain.yang.ServiceSubscription actual =
342                 bbInputSetupUtils.getAAIServiceSubscription(globalSubscriberId, subscriptionServiceType);
343         assertNull(actual);
344     }
345
346     @Test
347     public void testGetAAIServiceInstanceById() {
348         String serviceInstanceId = "serviceInstanceId";
349
350         ServiceInstance expectedServiceInstance = new ServiceInstance();
351
352         doReturn(Optional.of(expectedServiceInstance)).when(MOCK_aaiResourcesClient).get(isA(Class.class),
353                 isA(AAIResourceUri.class));
354
355         ServiceInstance actualServiceInstance = bbInputSetupUtils.getAAIServiceInstanceById(serviceInstanceId);
356
357         assertThat(actualServiceInstance, sameBeanAs(expectedServiceInstance));
358     }
359
360     @Test
361     public void testGetAAIServiceInstanceByIdThrowNotFound() {
362         String serviceInstanceId = "serviceInstanceId";
363
364         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(isA(Class.class), isA(AAIResourceUri.class));
365
366         ServiceInstance actualServiceInstance = bbInputSetupUtils.getAAIServiceInstanceById(serviceInstanceId);
367
368         assertNull(actualServiceInstance);
369     }
370
371     @Test
372     public void testGetAAIServiceInstanceByIdAndCustomer() {
373         String globalCustomerId = "globalCustomerId";
374         String serviceType = "serviceType";
375         String serviceInstanceId = "serviceInstanceId";
376         ServiceInstance expected = new ServiceInstance();
377         expected.setServiceInstanceId(serviceInstanceId);
378         doReturn(Optional.of(expected)).when(MOCK_aaiResourcesClient).get(isA(Class.class), isA(AAIResourceUri.class));
379         AAIResourceUri expectedUri = AAIUriFactory
380                 .createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalCustomerId, serviceType, serviceInstanceId)
381                 .depth(Depth.TWO);
382         this.bbInputSetupUtils.getAAIServiceInstanceByIdAndCustomer(globalCustomerId, serviceType, serviceInstanceId);
383
384         verify(MOCK_aaiResourcesClient, times(1)).get(org.onap.aai.domain.yang.ServiceInstance.class, expectedUri);
385
386     }
387
388     @Test
389     public void testGetAAIServiceInstanceByIdAndCustomerThrowNotFound() {
390         String globalCustomerId = "globalCustomerId";
391         String serviceType = "serviceType";
392         String serviceInstanceId = "serviceInstanceId";
393
394         doReturn(MOCK_aaiResourcesClient).when(MOCK_injectionHelper).getAaiClient();
395         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(isA(Class.class), isA(AAIResourceUri.class));
396         ServiceInstance actual = this.bbInputSetupUtils.getAAIServiceInstanceByIdAndCustomer(globalCustomerId,
397                 serviceType, serviceInstanceId);
398
399         assertNull(actual);
400     }
401
402     @Test
403     public void testGetAAIServiceInstanceByName() throws Exception {
404         String serviceInstanceName = "serviceInstanceName";
405
406         ServiceInstance expectedServiceInstance = new ServiceInstance();
407         expectedServiceInstance.setServiceInstanceId("serviceInstanceId");
408
409         ServiceSubscription serviceSubscription = new ServiceSubscription();
410         serviceSubscription.setServiceType("serviceType");
411
412         Customer customer = new Customer();
413         customer.setGlobalCustomerId("globalCustomerId");
414         customer.setServiceSubscription(serviceSubscription);
415
416         ServiceInstances serviceInstances = new ServiceInstances();
417         serviceInstances.getServiceInstance().add(expectedServiceInstance);
418
419         doReturn(Optional.of(serviceInstances)).when(MOCK_aaiResourcesClient).get(isA(Class.class),
420                 isA(AAIResourceUri.class));
421         AAIResourceUri expectedUri = AAIUriFactory
422                 .createResourceUri(AAIObjectPlurals.SERVICE_INSTANCE, customer.getGlobalCustomerId(),
423                         customer.getServiceSubscription().getServiceType())
424                 .queryParam("service-instance-name", serviceInstanceName).depth(Depth.TWO);
425         bbInputSetupUtils.getAAIServiceInstanceByName(serviceInstanceName, customer);
426
427         verify(MOCK_aaiResourcesClient, times(1)).get(org.onap.aai.domain.yang.ServiceInstances.class, expectedUri);
428     }
429
430     @Test
431     public void testGetAAIServiceInstanceByNameException() throws Exception {
432         expectedException.expect(Exception.class);
433
434         String serviceInstanceName = "serviceInstanceName";
435
436         ServiceInstance serviceInstance = new ServiceInstance();
437         serviceInstance.setServiceInstanceId("serviceInstanceId");
438
439         ServiceSubscription serviceSubscription = new ServiceSubscription();
440         serviceSubscription.setServiceType("serviceType");
441
442         Customer customer = new Customer();
443         customer.setGlobalCustomerId("globalCustomerId");
444         customer.setServiceSubscription(serviceSubscription);
445
446         ServiceInstances serviceInstances = new ServiceInstances();
447         serviceInstances.getServiceInstance().add(serviceInstance);
448         serviceInstances.getServiceInstance().add(serviceInstance);
449
450         doReturn(Optional.of(serviceInstances)).when(MOCK_aaiResourcesClient).get(isA(Class.class),
451                 isA(AAIResourceUri.class));
452
453         bbInputSetupUtils.getAAIServiceInstanceByName(serviceInstanceName, customer);
454     }
455
456     @Test
457     public void testGetAAIServiceInstanceByNameNull() throws Exception {
458         String serviceInstanceName = "serviceInstanceName";
459
460         ServiceInstance serviceInstance = new ServiceInstance();
461         serviceInstance.setServiceInstanceId("serviceInstanceId");
462
463         ServiceSubscription serviceSubscription = new ServiceSubscription();
464         serviceSubscription.setServiceType("serviceType");
465
466         Customer customer = new Customer();
467         customer.setGlobalCustomerId("globalCustomerId");
468         customer.setServiceSubscription(serviceSubscription);
469
470         ServiceInstances serviceInstances = new ServiceInstances();
471         serviceInstances.getServiceInstance().add(serviceInstance);
472         serviceInstances.getServiceInstance().add(serviceInstance);
473
474         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(isA(Class.class), isA(AAIResourceUri.class));
475
476         ServiceInstance actualServiceInstance =
477                 bbInputSetupUtils.getAAIServiceInstanceByName(serviceInstanceName, customer);
478
479         assertNull(actualServiceInstance);
480     }
481
482     @Test
483     public void testGetOptionalAAIServiceInstanceByNameException() throws Exception {
484         expectedException.expect(MultipleObjectsFoundException.class);
485         expectedException.expectMessage(containsString(
486                 "Multiple service instances found for customer-id: globalCustomerId, service-type: serviceType and service-instance-name: serviceInstanceId."));
487
488         String globalCustomerId = "globalCustomerId";
489         String serviceType = "serviceType";
490         String serviceInstanceId = "serviceInstanceId";
491
492         ServiceInstance serviceInstance = new ServiceInstance();
493         serviceInstance.setServiceInstanceId("serviceInstanceId");
494         serviceInstance.setServiceType(serviceType);
495         serviceInstance.setServiceInstanceName("serviceInstanceName");
496
497         ServiceInstances serviceInstances = new ServiceInstances();
498         serviceInstances.getServiceInstance().add(serviceInstance);
499         serviceInstances.getServiceInstance().add(serviceInstance);
500
501         doReturn(Optional.of(serviceInstances)).when(MOCK_aaiResourcesClient).get(isA(Class.class),
502                 isA(AAIResourceUri.class));
503
504         bbInputSetupUtils.getAAIServiceInstanceByName(globalCustomerId, serviceType, serviceInstanceId);
505     }
506
507     @Test
508     public void testGetOptionalAAIServiceInstanceByNameNull() throws Exception {
509         String globalCustomerId = "globalCustomerId";
510         String serviceType = "serviceType";
511         String serviceInstanceId = "serviceInstanceId";
512
513         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(isA(Class.class), isA(AAIResourceUri.class));
514         Optional<ServiceInstance> actual =
515                 this.bbInputSetupUtils.getAAIServiceInstanceByName(globalCustomerId, serviceType, serviceInstanceId);
516
517         assertThat(actual, sameBeanAs(Optional.empty()));
518     }
519
520     @Test
521     public void testGetCatalogInstanceGroup() throws JsonParseException, JsonMappingException, IOException {
522         String modelUUID = "modelUUID";
523
524         org.onap.so.db.catalog.beans.InstanceGroup expectedInstanceGroup = mapper.readValue(
525                 new File(RESOURCE_PATH + "InstanceGroup.json"), org.onap.so.db.catalog.beans.InstanceGroup.class);
526
527         doReturn(expectedInstanceGroup).when(MOCK_catalogDbClient).getInstanceGroupByModelUUID(isA(String.class));
528
529         org.onap.so.db.catalog.beans.InstanceGroup actualInstanceGroup =
530                 bbInputSetupUtils.getCatalogInstanceGroup(modelUUID);
531
532         assertThat(actualInstanceGroup, sameBeanAs(expectedInstanceGroup));
533     }
534
535     @Test
536     public void testGetCollectionResourceInstanceGroupCustomization() {
537         String modelCustomizationUUID = "modelCustomizationUUID";
538
539         CollectionResourceInstanceGroupCustomization expectedCollection =
540                 new CollectionResourceInstanceGroupCustomization();
541
542         doReturn(Arrays.asList(expectedCollection)).when(MOCK_catalogDbClient)
543                 .getCollectionResourceInstanceGroupCustomizationByModelCustUUID(modelCustomizationUUID);
544
545         List<CollectionResourceInstanceGroupCustomization> actualCollection =
546                 bbInputSetupUtils.getCollectionResourceInstanceGroupCustomization(modelCustomizationUUID);
547
548         assertThat(actualCollection, sameBeanAs(Arrays.asList(expectedCollection)));
549     }
550
551     @Test
552     public void testGetAAIGenericVnf() throws JsonParseException, JsonMappingException, IOException {
553         String vnfId = "vnfId";
554
555         GenericVnf expectedAaiVnf =
556                 mapper.readValue(new File(RESOURCE_PATH + "aaiGenericVnfInput.json"), GenericVnf.class);
557
558         doReturn(Optional.of(expectedAaiVnf)).when(MOCK_aaiResourcesClient).get(isA(Class.class),
559                 isA(AAIResourceUri.class));
560         AAIResourceUri expectedUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId).depth(Depth.ONE);
561         GenericVnf actualAaiVnf = bbInputSetupUtils.getAAIGenericVnf(vnfId);
562
563         assertThat(actualAaiVnf, sameBeanAs(expectedAaiVnf));
564
565         verify(MOCK_aaiResourcesClient, times(1)).get(org.onap.aai.domain.yang.GenericVnf.class, expectedUri);
566     }
567
568     @Test
569     public void testGetAAIConfiguration() throws JsonParseException, JsonMappingException, IOException {
570         String configurationId = "configurationId";
571
572         Configuration expectedAaiConfiguration =
573                 mapper.readValue(new File(RESOURCE_PATH + "ConfigurationInput.json"), Configuration.class);
574
575         doReturn(Optional.of(expectedAaiConfiguration)).when(MOCK_aaiResourcesClient).get(isA(Class.class),
576                 isA(AAIResourceUri.class));
577         AAIResourceUri expectedUri =
578                 AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, configurationId).depth(Depth.ONE);
579         bbInputSetupUtils.getAAIConfiguration(configurationId);
580
581         verify(MOCK_aaiResourcesClient, times(1)).get(org.onap.aai.domain.yang.Configuration.class, expectedUri);
582     }
583
584     @Test
585     public void testGetAAIGenericVnfThrowNotFound() throws JsonParseException, JsonMappingException, IOException {
586         String vnfId = "vnfId";
587
588         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(isA(Class.class), isA(AAIResourceUri.class));
589
590         GenericVnf actualAaiVnf = bbInputSetupUtils.getAAIGenericVnf(vnfId);
591
592         assertNull(actualAaiVnf);
593     }
594
595     @Test
596     public void testGetAAIResourceDepthOne() {
597         String vnfId = "vnfId";
598         AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId);
599         AAIResourceUri expectedUri = aaiResourceUri.clone().depth(Depth.ONE);
600         AAIResourceUri aaiResourceUriClone = aaiResourceUri.clone();
601         bbInputSetupUtils.getAAIResourceDepthOne(aaiResourceUri);
602
603         verify(MOCK_aaiResourcesClient, times(1)).get(expectedUri);
604         assertEquals("Uri should not have changed", aaiResourceUriClone.build(), aaiResourceUri.build());
605     }
606
607     @Test
608     public void testGetAAIResourceDepthTwo() {
609         String vnfId = "vnfId";
610         AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId);
611         AAIResourceUri expectedUri = aaiResourceUri.clone().depth(Depth.TWO);
612         AAIResourceUri aaiResourceUriClone = aaiResourceUri.clone();
613         bbInputSetupUtils.getAAIResourceDepthTwo(aaiResourceUri);
614
615         verify(MOCK_aaiResourcesClient, times(1)).get(expectedUri);
616         assertEquals("Uri should not have changed", aaiResourceUriClone.build(), aaiResourceUri.build());
617     }
618
619     @Test
620     public void getRelatedNetworkByNameFromServiceInstanceTest() throws Exception {
621         Optional<L3Networks> expected = Optional.of(new L3Networks());
622         L3Network network = new L3Network();
623         network.setNetworkId("id123");
624         network.setNetworkName("name123");
625         expected.get().getL3Network().add(network);
626         doReturn(expected).when(MOCK_aaiResourcesClient).get(eq(L3Networks.class), any(AAIResourceUri.class));
627         Optional<L3Network> actual =
628                 this.bbInputSetupUtils.getRelatedNetworkByNameFromServiceInstance("id123", "name123");
629         assertEquals(actual.get().getNetworkId(), expected.get().getL3Network().get(0).getNetworkId());
630     }
631
632     @Test
633     public void getRelatedNetworkByNameFromServiceInstanceMultipleNetworksExceptionTest() throws Exception {
634         expectedException.expect(MultipleObjectsFoundException.class);
635         expectedException.expectMessage(containsString(
636                 "Multiple networks found for service-instance-id: serviceInstanceId and network-name: networkName."));
637
638         String serviceInstanceId = "serviceInstanceId";
639         String networkName = "networkName";
640
641         L3Network network = new L3Network();
642         network.setNetworkId("id123");
643         network.setNetworkName("name123");
644
645         L3Networks l3Networks = new L3Networks();
646         l3Networks.getL3Network().add(network);
647         l3Networks.getL3Network().add(network);
648         Optional<L3Networks> optNetworks = Optional.of(l3Networks);
649
650         doReturn(optNetworks).when(MOCK_aaiResourcesClient).get(eq(L3Networks.class), any(AAIResourceUri.class));
651
652         bbInputSetupUtils.getRelatedNetworkByNameFromServiceInstance(serviceInstanceId, networkName);
653     }
654
655     @Test
656     public void getRelatedNetworkByNameFromServiceInstanceNotFoundTest() throws Exception {
657         String serviceInstanceId = "serviceInstanceId";
658         String networkName = "networkName";
659
660         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(eq(L3Networks.class), any(AAIResourceUri.class));
661
662         Optional<L3Network> actualNetwork =
663                 bbInputSetupUtils.getRelatedNetworkByNameFromServiceInstance(serviceInstanceId, networkName);
664
665         assertEquals(Optional.empty(), actualNetwork);
666     }
667
668     @Test
669     public void getRelatedServiceInstanceFromInstanceGroupTest() throws Exception {
670         Optional<ServiceInstances> expected = Optional.of(new ServiceInstances());
671         ServiceInstance serviceInstance = new ServiceInstance();
672         serviceInstance.setServiceInstanceId("serviceInstanceId");
673         serviceInstance.setServiceInstanceName("serviceInstanceName");
674         expected.get().getServiceInstance().add(serviceInstance);
675
676         doReturn(expected).when(MOCK_aaiResourcesClient).get(eq(ServiceInstances.class), any(AAIResourceUri.class));
677         Optional<ServiceInstance> actual = this.bbInputSetupUtils.getRelatedServiceInstanceFromInstanceGroup("ig-001");
678         assertEquals(actual.get().getServiceInstanceId(),
679                 expected.get().getServiceInstance().get(0).getServiceInstanceId());
680     }
681
682     @Test
683     public void getRelatedServiceInstanceFromInstanceGroupMultipleTest() throws Exception {
684         expectedException.expect(MultipleObjectsFoundException.class);
685         Optional<ServiceInstances> serviceInstances = Optional.of(new ServiceInstances());
686         ServiceInstance si1 = Mockito.mock(ServiceInstance.class);
687         ServiceInstance si2 = Mockito.mock(ServiceInstance.class);
688         serviceInstances.get().getServiceInstance().add(si1);
689         serviceInstances.get().getServiceInstance().add(si2);
690
691         doReturn(serviceInstances).when(MOCK_aaiResourcesClient).get(eq(ServiceInstances.class),
692                 any(AAIResourceUri.class));
693         this.bbInputSetupUtils.getRelatedServiceInstanceFromInstanceGroup("ig-001");
694     }
695
696     @Test
697     public void getRelatedServiceInstanceFromInstanceGroupNotFoundTest() throws Exception {
698         expectedException.expect(NoServiceInstanceFoundException.class);
699         Optional<ServiceInstances> serviceInstances = Optional.of(new ServiceInstances());
700
701         doReturn(serviceInstances).when(MOCK_aaiResourcesClient).get(eq(ServiceInstances.class),
702                 any(AAIResourceUri.class));
703         this.bbInputSetupUtils.getRelatedServiceInstanceFromInstanceGroup("ig-001");
704     }
705
706     @Test
707     public void getRelatedVnfByNameFromServiceInstanceTest() throws Exception {
708         Optional<GenericVnfs> expected = Optional.of(new GenericVnfs());
709         GenericVnf vnf = new GenericVnf();
710         vnf.setVnfId("id123");
711         vnf.setVnfName("name123");
712         expected.get().getGenericVnf().add(vnf);
713         doReturn(expected).when(MOCK_aaiResourcesClient).get(eq(GenericVnfs.class), any(AAIResourceUri.class));
714         Optional<GenericVnf> actual = this.bbInputSetupUtils.getRelatedVnfByNameFromServiceInstance("id123", "name123");
715         assertEquals(actual.get().getVnfId(), expected.get().getGenericVnf().get(0).getVnfId());
716     }
717
718     @Test
719     public void getRelatedVnfByNameFromServiceInstanceMultipleVnfsExceptionTest() throws Exception {
720         expectedException.expect(MultipleObjectsFoundException.class);
721         expectedException.expectMessage(containsString(
722                 "Multiple vnfs found for service-instance-id: serviceInstanceId and vnf-name: vnfName."));
723
724         String serviceInstanceId = "serviceInstanceId";
725         String vnfName = "vnfName";
726
727         GenericVnf vnf = new GenericVnf();
728         vnf.setVnfId("id123");
729         vnf.setVnfName("name123");
730
731         GenericVnfs vnfs = new GenericVnfs();
732         vnfs.getGenericVnf().add(vnf);
733         vnfs.getGenericVnf().add(vnf);
734
735         Optional<GenericVnfs> optVnfs = Optional.of(vnfs);
736
737         doReturn(optVnfs).when(MOCK_aaiResourcesClient).get(eq(GenericVnfs.class), any(AAIResourceUri.class));
738
739         bbInputSetupUtils.getRelatedVnfByNameFromServiceInstance(serviceInstanceId, vnfName);
740     }
741
742     @Test
743     public void getRelatedVnfByNameFromServiceInstanceNotFoundTest() throws Exception {
744         String serviceInstanceId = "serviceInstanceId";
745         String vnfName = "vnfName";
746
747         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(eq(GenericVnfs.class), any(AAIResourceUri.class));
748
749         Optional<GenericVnf> actualVnf =
750                 this.bbInputSetupUtils.getRelatedVnfByNameFromServiceInstance(serviceInstanceId, vnfName);
751
752         assertEquals(actualVnf, Optional.empty());
753     }
754
755     @Test
756     public void getRelatedVolumeGroupByNameFromVnfTest() throws Exception {
757         Optional<VolumeGroups> expected = Optional.of(new VolumeGroups());
758         VolumeGroup volumeGroup = new VolumeGroup();
759         volumeGroup.setVolumeGroupId("id123");
760         volumeGroup.setVolumeGroupName("name123");
761         expected.get().getVolumeGroup().add(volumeGroup);
762         doReturn(expected).when(MOCK_aaiResourcesClient).get(eq(VolumeGroups.class), any(AAIResourceUri.class));
763         Optional<VolumeGroup> actual = this.bbInputSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123", "name123");
764         assertEquals(actual.get().getVolumeGroupId(), expected.get().getVolumeGroup().get(0).getVolumeGroupId());
765     }
766
767     @Test
768     public void getRelatedVolumeGroupByNameFromVnfMultipleVolumeGroupsExceptionTest() throws Exception {
769         expectedException.expect(MultipleObjectsFoundException.class);
770         expectedException.expectMessage(containsString(
771                 "Multiple volume-groups found for vnf-id: vnfId and volume-group-name: volumeGroupName."));
772
773
774         String vnfId = "vnfId";
775         String volumeGroupName = "volumeGroupName";
776
777         VolumeGroup volumeGroup = new VolumeGroup();
778         volumeGroup.setVolumeGroupId("id123");
779         volumeGroup.setVolumeGroupName("name123");
780
781         VolumeGroups volumeGroups = new VolumeGroups();
782         volumeGroups.getVolumeGroup().add(volumeGroup);
783         volumeGroups.getVolumeGroup().add(volumeGroup);
784         Optional<VolumeGroups> optVolumeGroups = Optional.of(volumeGroups);
785
786         doReturn(optVolumeGroups).when(MOCK_aaiResourcesClient).get(eq(VolumeGroups.class), any(AAIResourceUri.class));
787
788         bbInputSetupUtils.getRelatedVolumeGroupByNameFromVnf(vnfId, volumeGroupName);
789     }
790
791     @Test
792     public void getRelatedVolumeGroupByNameFromVnfNotFoundTest() throws Exception {
793         String vnfId = "vnfId";
794         String volumeGroupName = "volumeGroupName";
795
796         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(eq(VolumeGroups.class), any(AAIResourceUri.class));
797
798         Optional<VolumeGroup> actualVolumeGroup =
799                 bbInputSetupUtils.getRelatedVolumeGroupByNameFromVnf(vnfId, volumeGroupName);
800
801         assertEquals(actualVolumeGroup, Optional.empty());
802     }
803
804     @Test
805     public void getRelatedVolumeGroupByNameFromVfModuleTest() throws Exception {
806         Optional<VolumeGroups> expected = Optional.of(new VolumeGroups());
807         VolumeGroup volumeGroup = new VolumeGroup();
808         volumeGroup.setVolumeGroupId("id123");
809         volumeGroup.setVolumeGroupName("name123");
810         expected.get().getVolumeGroup().add(volumeGroup);
811         doReturn(expected).when(MOCK_aaiResourcesClient).get(eq(VolumeGroups.class), any(AAIResourceUri.class));
812         Optional<VolumeGroup> actual =
813                 this.bbInputSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123", "name123");
814         assertEquals(actual.get().getVolumeGroupId(), expected.get().getVolumeGroup().get(0).getVolumeGroupId());
815     }
816
817     @Test
818     public void getRelatedVolumeGroupByNameFromVfModuleMultipleVolumeGroupsExceptionTest() throws Exception {
819         expectedException.expect(MultipleObjectsFoundException.class);
820         expectedException.expectMessage(containsString(
821                 "Multiple voulme-groups found for vnf-id: vnfId, vf-module-id: volumeGroupId and volume-group-name: volumeGroupName."));
822         String vnfId = "vnfId";
823         String volumeGroupId = "volumeGroupId";
824         String volumeGroupName = "volumeGroupName";
825
826         VolumeGroup volumeGroup = new VolumeGroup();
827         volumeGroup.setVolumeGroupId("id123");
828         volumeGroup.setVolumeGroupName("name123");
829
830         VolumeGroups volumeGroups = new VolumeGroups();
831         volumeGroups.getVolumeGroup().add(volumeGroup);
832         volumeGroups.getVolumeGroup().add(volumeGroup);
833
834         Optional<VolumeGroups> optVolumeGroups = Optional.of(volumeGroups);
835
836         doReturn(optVolumeGroups).when(MOCK_aaiResourcesClient).get(eq(VolumeGroups.class), any(AAIResourceUri.class));
837
838         bbInputSetupUtils.getRelatedVolumeGroupByNameFromVfModule(vnfId, volumeGroupId, volumeGroupName);
839     }
840
841     @Test
842     public void getRelatedVolumeGroupByNameFromVfModuleNotFoundTest() throws Exception {
843         String vnfId = "vnfId";
844         String volumeGroupId = "volumeGroupId";
845         String volumeGroupName = "volumeGroupName";
846
847         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(eq(VolumeGroups.class), any(AAIResourceUri.class));
848
849         Optional<VolumeGroup> actualVolumeGroup =
850                 bbInputSetupUtils.getRelatedVolumeGroupByNameFromVfModule(vnfId, volumeGroupId, volumeGroupName);
851
852         assertEquals(actualVolumeGroup, Optional.empty());
853     }
854
855     @Test
856     public void loadOriginalFlowExecutionPathTest() throws Exception {
857
858         String requestId = "123";
859         String flowsToExecuteString =
860                 "[{\"buildingBlock\":{\"mso-id\":\"2f9ddc4b-4dcf-4129-a35f-be1625ae0176\",\"bpmn-flow-name\":\"DeactivateFabricConfigurationBB\",\"key\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"is-virtual-link\":false,\"virtual-link-key\":null},\"requestId\":\"9c944122-d161-4280-8594-48c06a9d96d5\",\"apiVersion\":\"7\",\"resourceId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"requestAction\":\"deleteInstance\",\"vnfType\":\"\",\"aLaCarte\":true,\"homing\":false,\"workflowResourceIds\":{\"serviceInstanceId\":\"ff9dae72-05bb-4277-ad2b-1b082467c138\",\"vnfId\":\"84a29830-e533-4f20-a838-910c740bf24c\",\"networkId\":\"\",\"volumeGroupId\":\"\",\"vfModuleId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"networkCollectionId\":null,\"configurationId\":\"10f8a3a3-91bf-4821-9515-c01b2864dff0\",\"instanceGroupId\":\"\"},\"requestDetails\":{\"modelInfo\":{\"modelCustomizationName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelInvariantId\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelType\":\"vfModule\",\"modelId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelVersion\":\"1\",\"modelCustomizationUuid\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelVersionId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelCustomizationId\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelUuid\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelInvariantUuid\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelInstanceName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\"},\"requestInfo\":{\"source\":\"VID\",\"suppressRollback\":false,\"requestorId\":\"pj8646\"},\"cloudConfiguration\":{\"tenantId\":\"e2a6af59d1cb43b2874e943bbbf8470a\",\"cloudOwner\":\"att-nc\",\"lcpCloudRegionId\":\"auk51b\"},\"requestParameters\":{\"testApi\":\"GR_API\"}},\"configurationResourceKeys\":{\"vfModuleCustomizationUUID\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"vnfResourceCustomizationUUID\":\"a80f05b8-d651-44af-b999-8ed78fb4582f\",\"cvnfcCustomizationUUID\":\"69cce457-9ffd-4359-962b-0596a1e83ad1\",\"vnfcName\":\"zauk51bmcmr01mcm001\"}},{\"buildingBlock\":{\"mso-id\":\"1ca5584e-38a9-4c3f-a4b4-99b0d42089ba\",\"bpmn-flow-name\":\"UnassignFabricConfigurationBB\",\"key\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"is-virtual-link\":false,\"virtual-link-key\":null},\"requestId\":\"9c944122-d161-4280-8594-48c06a9d96d5\",\"apiVersion\":\"7\",\"resourceId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"requestAction\":\"deleteInstance\",\"vnfType\":\"\",\"aLaCarte\":true,\"homing\":false,\"workflowResourceIds\":{\"serviceInstanceId\":\"ff9dae72-05bb-4277-ad2b-1b082467c138\",\"vnfId\":\"84a29830-e533-4f20-a838-910c740bf24c\",\"networkId\":\"\",\"volumeGroupId\":\"\",\"vfModuleId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"networkCollectionId\":null,\"configurationId\":\"10f8a3a3-91bf-4821-9515-c01b2864dff0\",\"instanceGroupId\":\"\"},\"requestDetails\":{\"modelInfo\":{\"modelCustomizationName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelInvariantId\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelType\":\"vfModule\",\"modelId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelVersion\":\"1\",\"modelCustomizationUuid\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelVersionId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelCustomizationId\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelUuid\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelInvariantUuid\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelInstanceName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\"},\"requestInfo\":{\"source\":\"VID\",\"suppressRollback\":false,\"requestorId\":\"pj8646\"},\"cloudConfiguration\":{\"tenantId\":\"e2a6af59d1cb43b2874e943bbbf8470a\",\"cloudOwner\":\"att-nc\",\"lcpCloudRegionId\":\"auk51b\"},\"requestParameters\":{\"testApi\":\"GR_API\"}},\"configurationResourceKeys\":{\"vfModuleCustomizationUUID\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"vnfResourceCustomizationUUID\":\"a80f05b8-d651-44af-b999-8ed78fb4582f\",\"cvnfcCustomizationUUID\":\"69cce457-9ffd-4359-962b-0596a1e83ad1\",\"vnfcName\":\"zauk51bmcmr01mcm001\"}},{\"buildingBlock\":{\"mso-id\":\"68d16097-4810-477d-803b-8322106106ef\",\"bpmn-flow-name\":\"DeactivateVfModuleBB\",\"key\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"is-virtual-link\":false,\"virtual-link-key\":null},\"requestId\":\"9c944122-d161-4280-8594-48c06a9d96d5\",\"apiVersion\":\"7\",\"resourceId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"requestAction\":\"deleteInstance\",\"vnfType\":\"\",\"aLaCarte\":true,\"homing\":false,\"workflowResourceIds\":{\"serviceInstanceId\":\"ff9dae72-05bb-4277-ad2b-1b082467c138\",\"vnfId\":\"84a29830-e533-4f20-a838-910c740bf24c\",\"networkId\":\"\",\"volumeGroupId\":\"\",\"vfModuleId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"networkCollectionId\":null,\"configurationId\":\"10f8a3a3-91bf-4821-9515-c01b2864dff0\",\"instanceGroupId\":\"\"},\"requestDetails\":{\"modelInfo\":{\"modelCustomizationName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelInvariantId\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelType\":\"vfModule\",\"modelId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelVersion\":\"1\",\"modelCustomizationUuid\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelVersionId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelCustomizationId\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelUuid\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelInvariantUuid\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelInstanceName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\"},\"requestInfo\":{\"source\":\"VID\",\"suppressRollback\":false,\"requestorId\":\"pj8646\"},\"cloudConfiguration\":{\"tenantId\":\"e2a6af59d1cb43b2874e943bbbf8470a\",\"cloudOwner\":\"att-nc\",\"lcpCloudRegionId\":\"auk51b\"},\"requestParameters\":{\"testApi\":\"GR_API\"}},\"configurationResourceKeys\":null},{\"buildingBlock\":{\"mso-id\":\"0b02eb09-bc23-4329-b19e-716dcca4e4a6\",\"bpmn-flow-name\":\"DeleteVfModuleBB\",\"key\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"is-virtual-link\":false,\"virtual-link-key\":null},\"requestId\":\"9c944122-d161-4280-8594-48c06a9d96d5\",\"apiVersion\":\"7\",\"resourceId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"requestAction\":\"deleteInstance\",\"vnfType\":\"\",\"aLaCarte\":true,\"homing\":false,\"workflowResourceIds\":{\"serviceInstanceId\":\"ff9dae72-05bb-4277-ad2b-1b082467c138\",\"vnfId\":\"84a29830-e533-4f20-a838-910c740bf24c\",\"networkId\":\"\",\"volumeGroupId\":\"\",\"vfModuleId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"networkCollectionId\":null,\"configurationId\":\"10f8a3a3-91bf-4821-9515-c01b2864dff0\",\"instanceGroupId\":\"\"},\"requestDetails\":{\"modelInfo\":{\"modelCustomizationName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelInvariantId\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelType\":\"vfModule\",\"modelId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelVersion\":\"1\",\"modelCustomizationUuid\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelVersionId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelCustomizationId\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelUuid\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelInvariantUuid\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelInstanceName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\"},\"requestInfo\":{\"source\":\"VID\",\"suppressRollback\":false,\"requestorId\":\"pj8646\"},\"cloudConfiguration\":{\"tenantId\":\"e2a6af59d1cb43b2874e943bbbf8470a\",\"cloudOwner\":\"att-nc\",\"lcpCloudRegionId\":\"auk51b\"},\"requestParameters\":{\"testApi\":\"GR_API\"}},\"configurationResourceKeys\":null},{\"buildingBlock\":{\"mso-id\":\"bcf95d05-0782-44ff-920d-d5100525c275\",\"bpmn-flow-name\":\"UnassignVfModuleBB\",\"key\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"is-virtual-link\":false,\"virtual-link-key\":null},\"requestId\":\"9c944122-d161-4280-8594-48c06a9d96d5\",\"apiVersion\":\"7\",\"resourceId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"requestAction\":\"deleteInstance\",\"vnfType\":\"\",\"aLaCarte\":true,\"homing\":false,\"workflowResourceIds\":{\"serviceInstanceId\":\"ff9dae72-05bb-4277-ad2b-1b082467c138\",\"vnfId\":\"84a29830-e533-4f20-a838-910c740bf24c\",\"networkId\":\"\",\"volumeGroupId\":\"\",\"vfModuleId\":\"d1d35800-783d-42d3-82f6-d654c5054a6e\",\"networkCollectionId\":null,\"configurationId\":\"10f8a3a3-91bf-4821-9515-c01b2864dff0\",\"instanceGroupId\":\"\"},\"requestDetails\":{\"modelInfo\":{\"modelCustomizationName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelInvariantId\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelType\":\"vfModule\",\"modelId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\",\"modelVersion\":\"1\",\"modelCustomizationUuid\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelVersionId\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelCustomizationId\":\"7adc7c29-21a3-40a2-b8b6-5d4ad08b68e9\",\"modelUuid\":\"00d15ebb-c80e-43c1-80f0-90c40dde70b0\",\"modelInvariantUuid\":\"8028fcc0-96dc-427d-a4de-4536245943da\",\"modelInstanceName\":\"McmrNcUpVnf20191..cr_mccm_fc_base..module-0\"},\"requestInfo\":{\"source\":\"VID\",\"suppressRollback\":false,\"requestorId\":\"pj8646\"},\"cloudConfiguration\":{\"tenantId\":\"e2a6af59d1cb43b2874e943bbbf8470a\",\"cloudOwner\":\"att-nc\",\"lcpCloudRegionId\":\"auk51b\"},\"requestParameters\":{\"testApi\":\"GR_API\"}},\"configurationResourceKeys\":null}]";
861         ObjectMapper om = new ObjectMapper();
862         List<ExecuteBuildingBlock> expectedFlowsToExecute = null;
863         try {
864             ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
865             expectedFlowsToExecute = Arrays.asList(asArray);
866         } catch (Exception e) {
867             // TODO Auto-generated catch block
868             e.printStackTrace();
869         }
870
871         InfraActiveRequests request = new InfraActiveRequests();
872         request.setRequestId("requestId");
873         request.setOriginalRequestId("originalRequestId");
874         doReturn(request).when(MOCK_requestsDbClient).getInfraActiveRequestbyRequestId(anyString());
875         RequestProcessingData rpd = new RequestProcessingData();
876         rpd.setValue(flowsToExecuteString);
877         doReturn(rpd).when(MOCK_requestsDbClient).getRequestProcessingDataBySoRequestIdAndName(anyString(),
878                 anyString());
879
880         List<ExecuteBuildingBlock> flowsToExecute = bbInputSetupUtils.loadOriginalFlowExecutionPath(requestId);
881         assertEquals(expectedFlowsToExecute.size(), flowsToExecute.size());
882     }
883
884     @Test
885     public void getRelatedConfigurationByNameFromServiceInstanceExceptionTest() throws Exception {
886         Configuration configuration = new Configuration();
887         configuration.setConfigurationId("id123");
888
889         Configurations configurations = new Configurations();
890         configurations.getConfiguration().add(configuration);
891         configurations.getConfiguration().add(configuration);
892
893         Optional<Configurations> optConfigurations = Optional.of(configurations);
894
895         doReturn(optConfigurations).when(MOCK_aaiResourcesClient).get(eq(Configurations.class),
896                 any(AAIResourceUri.class));
897
898         expectedException.expect(MultipleObjectsFoundException.class);
899         this.bbInputSetupUtils.getRelatedConfigurationByNameFromServiceInstance("id123", "name123");
900     }
901
902     @Test
903     public void getRelatedConfigurationByNameFromServiceInstanceNotFoundTest() throws Exception {
904         doReturn(Optional.empty()).when(MOCK_aaiResourcesClient).get(eq(Configurations.class),
905                 any(AAIResourceUri.class));
906         Optional<Configuration> actualConfiguration =
907                 bbInputSetupUtils.getRelatedConfigurationByNameFromServiceInstance("id123", "name123");
908         assertEquals(actualConfiguration, Optional.empty());
909     }
910
911     @Test
912     public void getRelatedConfigurationByNameFromServiceInstanceTest() throws Exception {
913         Optional<Configurations> expected = Optional.of(new Configurations());
914         Configuration configuration = new Configuration();
915         configuration.setConfigurationId("id123");
916         expected.get().getConfiguration().add(configuration);
917         doReturn(expected).when(MOCK_aaiResourcesClient).get(eq(Configurations.class), any(AAIResourceUri.class));
918         Optional<Configuration> actual =
919                 this.bbInputSetupUtils.getRelatedConfigurationByNameFromServiceInstance("id123", "name123");
920         assertEquals(actual.get().getConfigurationId(), expected.get().getConfiguration().get(0).getConfigurationId());
921     }
922
923     @Test
924     public void existsAAIVfModuleGloballyByNameTest() throws Exception {
925         AAIResourceUri expectedUri =
926                 AAIUriFactory.createNodesUri(AAIObjectPlurals.VF_MODULE).queryParam("vf-module-name", "testVfModule");
927         bbInputSetupUtils.existsAAIVfModuleGloballyByName("testVfModule");
928         verify(MOCK_aaiResourcesClient, times(1)).exists(expectedUri);
929     }
930
931     @Test
932     public void existsAAIConfigurationGloballyByNameTest() throws Exception {
933         AAIResourceUri expectedUri = AAIUriFactory.createResourceUri(AAIObjectPlurals.CONFIGURATION)
934                 .queryParam("configuration-name", "testConfig");
935         bbInputSetupUtils.existsAAIConfigurationGloballyByName("testConfig");
936         verify(MOCK_aaiResourcesClient, times(1)).exists(expectedUri);
937     }
938
939     @Test
940     public void existsAAINetworksGloballyByNameTest() throws Exception {
941         AAIResourceUri expectedUri =
942                 AAIUriFactory.createResourceUri(AAIObjectPlurals.L3_NETWORK).queryParam("network-name", "testNetwork");
943         bbInputSetupUtils.existsAAINetworksGloballyByName("testNetwork");
944         verify(MOCK_aaiResourcesClient, times(1)).exists(expectedUri);
945     }
946
947     @Test
948     public void existsAAIVolumeGroupGloballyByNameTest() throws Exception {
949         AAIResourceUri expectedUri = AAIUriFactory.createNodesUri(AAIObjectPlurals.VOLUME_GROUP)
950                 .queryParam("volume-group-name", "testVoumeGroup");
951         bbInputSetupUtils.existsAAIVolumeGroupGloballyByName("testVoumeGroup");
952         verify(MOCK_aaiResourcesClient, times(1)).exists(expectedUri);
953     }
954 }