Merge "BBInputSetup, getServiceInstanceHelper, mapCollection refactoring Deleted...
[so.git] / bpmn / MSOCommonBPMN / src / test / java / org / onap / so / bpmn / servicedecomposition / tasks / BBInputSetupTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Modifications Copyright (c) 2019 Samsung
8  * ================================================================================
9  * Modifications Copyright (c) 2020 Nokia
10  * ================================================================================
11  * Licensed under the Apache License, Version 2.0 (the "License");
12  * you may not use this file except in compliance with the License.
13  * You may obtain a copy of the License at
14  *
15  *      http://www.apache.org/licenses/LICENSE-2.0
16  *
17  * Unless required by applicable law or agreed to in writing, software
18  * distributed under the License is distributed on an "AS IS" BASIS,
19  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20  * See the License for the specific language governing permissions and
21  * limitations under the License.
22  * ============LICENSE_END=========================================================
23  */
24
25 package org.onap.so.bpmn.servicedecomposition.tasks;
26
27 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
28 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
29 import static org.junit.Assert.assertEquals;
30 import static org.junit.Assert.assertNotNull;
31 import static org.junit.Assert.assertNull;
32 import static org.mockito.ArgumentMatchers.any;
33 import static org.mockito.ArgumentMatchers.eq;
34 import static org.mockito.ArgumentMatchers.isA;
35 import static org.mockito.Mockito.doNothing;
36 import static org.mockito.Mockito.doReturn;
37 import static org.mockito.Mockito.times;
38 import static org.mockito.Mockito.verify;
39 import static org.onap.so.bpmn.servicedecomposition.tasks.BaseBBInputSetupTestHelper.prepareConfigurationResourceKeys;
40 import static org.onap.so.bpmn.servicedecomposition.tasks.BaseBBInputSetupTestHelper.prepareLookupKeyMap;
41 import java.io.File;
42 import java.io.IOException;
43 import java.util.ArrayList;
44 import java.util.Arrays;
45 import java.util.HashMap;
46 import java.util.List;
47 import java.util.Map;
48 import java.util.Optional;
49 import org.camunda.bpm.engine.delegate.DelegateExecution;
50 import org.junit.Assert;
51 import org.junit.Rule;
52 import org.junit.Test;
53 import org.junit.rules.ExpectedException;
54 import org.junit.runner.RunWith;
55 import org.mockito.ArgumentMatchers;
56 import org.mockito.InjectMocks;
57 import org.mockito.Mock;
58 import org.mockito.Mockito;
59 import org.mockito.Spy;
60 import org.mockito.junit.MockitoJUnitRunner;
61 import org.onap.aaiclient.client.aai.AAICommonObjectMapperProvider;
62 import org.onap.aaiclient.client.aai.AAIObjectType;
63 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper;
64 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
65 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
66 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
67 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
68 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
69 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
70 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
71 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
72 import org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup;
73 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
74 import org.onap.so.bpmn.servicedecomposition.bbobjects.LineOfBusiness;
75 import org.onap.so.bpmn.servicedecomposition.bbobjects.OwningEntity;
76 import org.onap.so.bpmn.servicedecomposition.bbobjects.Platform;
77 import org.onap.so.bpmn.servicedecomposition.bbobjects.Project;
78 import org.onap.so.bpmn.servicedecomposition.bbobjects.RouteTableReference;
79 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
80 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceProxy;
81 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceSubscription;
82 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
83 import org.onap.so.bpmn.servicedecomposition.bbobjects.Vnfc;
84 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
85 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
86 import org.onap.so.bpmn.servicedecomposition.entities.ConfigurationResourceKeys;
87 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
88 import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
89 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
90 import org.onap.so.bpmn.servicedecomposition.entities.ServiceModel;
91 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
92 import org.onap.so.bpmn.servicedecomposition.generalobjects.OrchestrationContext;
93 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
94 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoCollection;
95 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoGenericVnf;
96 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoInstanceGroup;
97 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoNetwork;
98 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceInstance;
99 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceProxy;
100 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
101 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.NoServiceInstanceFoundException;
102 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.ServiceModelNotFoundException;
103 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
104 import org.onap.so.db.catalog.beans.CollectionResource;
105 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
106 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
107 import org.onap.so.db.catalog.beans.ConfigurationResource;
108 import org.onap.so.db.catalog.beans.ConfigurationResourceCustomization;
109 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
110 import org.onap.so.db.catalog.beans.InstanceGroupType;
111 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
112 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
113 import org.onap.so.db.catalog.beans.OrchestrationStatus;
114 import org.onap.so.db.catalog.beans.Service;
115 import org.onap.so.db.catalog.beans.ServiceProxyResourceCustomization;
116 import org.onap.so.db.catalog.beans.VfModuleCustomization;
117 import org.onap.so.db.catalog.beans.VnfResourceCustomization;
118 import org.onap.so.db.catalog.beans.VnfcInstanceGroupCustomization;
119 import org.onap.so.db.request.beans.InfraActiveRequests;
120 import org.onap.so.serviceinstancebeans.CloudConfiguration;
121 import org.onap.so.serviceinstancebeans.ModelInfo;
122 import org.onap.so.serviceinstancebeans.ModelType;
123 import org.onap.so.serviceinstancebeans.RelatedInstance;
124 import org.onap.so.serviceinstancebeans.RelatedInstanceList;
125 import org.onap.so.serviceinstancebeans.RequestDetails;
126 import org.onap.so.serviceinstancebeans.RequestInfo;
127 import org.onap.so.serviceinstancebeans.RequestParameters;
128 import org.onap.so.serviceinstancebeans.Resources;
129 import org.onap.so.serviceinstancebeans.SubscriberInfo;
130 import com.fasterxml.jackson.core.JsonParseException;
131 import com.fasterxml.jackson.core.JsonProcessingException;
132 import com.fasterxml.jackson.databind.JsonMappingException;
133 import com.fasterxml.jackson.databind.ObjectMapper;
134
135 @RunWith(MockitoJUnitRunner.class)
136 public class BBInputSetupTest {
137     private static final String RESOURCE_PATH = "src/test/resources/__files/ExecuteBuildingBlock/";
138
139     protected ObjectMapper mapper = new ObjectMapper();
140     private static final String CLOUD_OWNER = "CloudOwner";
141     private static final String REQUEST_ID = "b20bbd26-af25-4a50-a9fe-222a3c0f9771";
142
143     @Spy
144     @InjectMocks
145     private BBInputSetup SPY_bbInputSetup = new BBInputSetup();
146
147     @Mock
148     private BBInputSetupUtils SPY_bbInputSetupUtils;
149
150     @Mock
151     private CloudInfoFromAAI SPY_cloudInfoFromAAI;
152
153     @Spy
154     private BBInputSetupMapperLayer bbInputSetupMapperLayer;
155
156     @Rule
157     public ExpectedException expectedException = ExpectedException.none();
158
159     @Test
160     public void testGetVolumeGroupIdRelatedToVfModule() {
161         String expected = "volumeGroupId";
162         String modelCustomizationId = "modelCustomizationId";
163         ModelInfo modelInfo = new ModelInfo();
164         modelInfo.setModelCustomizationId(modelCustomizationId);
165         String cloudOwner = "cloudOwner";
166         String cloudRegionId = "cloudRegionId";
167         String volumeGroupId = "volumeGroupId";
168         GenericVnf vnf = new GenericVnf();
169         VolumeGroup volumeGroup = new VolumeGroup();
170         volumeGroup.setVolumeGroupId(expected);
171         vnf.getVolumeGroups().add(volumeGroup);
172         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
173         lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, null);
174         org.onap.aai.domain.yang.VolumeGroup aaiVolumeGroup = new org.onap.aai.domain.yang.VolumeGroup();
175         aaiVolumeGroup.setModelCustomizationId(modelCustomizationId);
176         doReturn(aaiVolumeGroup).when(SPY_bbInputSetupUtils).getAAIVolumeGroup(cloudOwner, cloudRegionId,
177                 volumeGroupId);
178
179         Optional<String> actual = SPY_bbInputSetup.getVolumeGroupIdRelatedToVfModule(vnf, modelInfo, cloudOwner,
180                 cloudRegionId, lookupKeyMap);
181
182         assertEquals(expected, actual.get());
183     }
184
185     @Test
186     public void testGetAlaCarteServiceInstance() throws Exception {
187         ServiceInstance expected =
188                 mapper.readValue(new File(RESOURCE_PATH + "ServiceInstance_getServiceInstanceNOAAIExpected.json"),
189                         ServiceInstance.class);
190         RequestDetails requestDetails = new RequestDetails();
191         RequestInfo requestInfo = new RequestInfo();
192         requestInfo.setInstanceName("SharansInstanceName");
193         requestDetails.setRequestInfo(requestInfo);
194         Customer customer = new Customer();
195         String serviceInstanceId = "SharansInstanceId";
196         boolean aLaCarte = true;
197         Service service = new Service();
198         service.setModelUUID("modelUUID");
199         ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
200         modelInfoServiceInstance.setModelUuid("modelUUID");
201         expected.setModelInfoServiceInstance(modelInfoServiceInstance);
202         org.onap.aai.domain.yang.ServiceInstance serviceInstanceAAI = new org.onap.aai.domain.yang.ServiceInstance();
203         serviceInstanceAAI.setModelVersionId("modelUUIDDifferent");
204         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
205         String bbName = AssignFlows.SERVICE_INSTANCE.toString();
206         Service differentService = new Service();
207         differentService.setModelUUID("modelUUIDDifferent");
208
209         doReturn(expected).when(SPY_bbInputSetup).getServiceInstanceHelper(requestDetails, customer, null, null,
210                 lookupKeyMap, serviceInstanceId, aLaCarte, service, bbName);
211         doReturn(serviceInstanceAAI).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById(serviceInstanceId);
212         doReturn(differentService).when(SPY_bbInputSetupUtils)
213                 .getCatalogServiceByModelUUID(serviceInstanceAAI.getModelVersionId());
214         doReturn(expected.getModelInfoServiceInstance()).when(bbInputSetupMapperLayer)
215                 .mapCatalogServiceIntoServiceInstance(differentService);
216
217         ServiceInstance actual = SPY_bbInputSetup.getALaCarteServiceInstance(service, requestDetails, customer, null,
218                 null, lookupKeyMap, serviceInstanceId, aLaCarte, bbName);
219         assertThat(actual, sameBeanAs(expected));
220     }
221
222     @Test(expected = Exception.class)
223     public void testGetAlaCarteServiceInstanceException() throws Exception {
224         ServiceInstance expected =
225                 mapper.readValue(new File(RESOURCE_PATH + "ServiceInstance_getServiceInstanceNOAAIExpected.json"),
226                         ServiceInstance.class);
227         RequestDetails requestDetails = new RequestDetails();
228         RequestInfo requestInfo = new RequestInfo();
229         requestInfo.setInstanceName("SharansInstanceName");
230         requestDetails.setRequestInfo(requestInfo);
231         Customer customer = new Customer();
232         String serviceInstanceId = "SharansInstanceId";
233         boolean aLaCarte = true;
234         Service service = new Service();
235         service.setModelUUID("modelUUID");
236         ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
237         modelInfoServiceInstance.setModelUuid("modelUUID");
238         expected.setModelInfoServiceInstance(modelInfoServiceInstance);
239         org.onap.aai.domain.yang.ServiceInstance serviceInstanceAAI = new org.onap.aai.domain.yang.ServiceInstance();
240         serviceInstanceAAI.setModelVersionId("modelUUIDDifferent");
241         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
242         String bbName = AssignFlows.SERVICE_INSTANCE.toString();
243         Service differentService = new Service();
244         differentService.setModelUUID("modelUUIDDifferent");
245
246         doReturn(expected).when(SPY_bbInputSetup).getServiceInstanceHelper(requestDetails, customer, null, null,
247                 lookupKeyMap, serviceInstanceId, aLaCarte, service, bbName);
248         doReturn(serviceInstanceAAI).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById(serviceInstanceId);
249         doReturn(null).when(SPY_bbInputSetupUtils).getCatalogServiceByModelUUID(serviceInstanceAAI.getModelVersionId());
250
251         ServiceInstance actual = SPY_bbInputSetup.getALaCarteServiceInstance(service, requestDetails, customer, null,
252                 null, lookupKeyMap, serviceInstanceId, aLaCarte, bbName);
253         assertThat(actual, sameBeanAs(expected));
254     }
255
256     @Test
257     public void testGetCustomerAndServiceSubscription() throws JsonParseException, JsonMappingException, IOException {
258         RequestDetails requestDetails = mapper.readValue(
259                 new File(RESOURCE_PATH + "RequestDetailsInput_withRelatedInstanceList.json"), RequestDetails.class);
260         SubscriberInfo subscriberInfo = new SubscriberInfo();
261         subscriberInfo.setGlobalSubscriberId("globalSubscriberId");
262         RequestParameters requestParams = new RequestParameters();
263         requestParams.setSubscriptionServiceType("subscriptionServiceType");
264         requestDetails.setRequestParameters(requestParams);
265         requestDetails.setSubscriberInfo(subscriberInfo);
266         String resourceId = "resourceId";
267         Customer expected = new Customer();
268         expected.setGlobalCustomerId("globalCustomerId");
269         ServiceSubscription serviceSubscription = new ServiceSubscription();
270         serviceSubscription.setServiceType("subscriptionServiceType");
271
272         doReturn(expected).when(this.SPY_bbInputSetup).getCustomerFromRequest(requestDetails);
273         doReturn(serviceSubscription).when(this.SPY_bbInputSetup).getServiceSubscription(requestDetails, expected);
274
275         Customer actual = this.SPY_bbInputSetup.getCustomerAndServiceSubscription(requestDetails, resourceId);
276
277         assertThat(actual, sameBeanAs(expected));
278
279         requestDetails.setSubscriberInfo(null);
280
281
282         assertThat(actual, sameBeanAs(expected));
283
284     }
285
286     @Test
287     public void testSetHomingFlag() throws IOException {
288         GeneralBuildingBlock expected = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
289                 GeneralBuildingBlock.class);
290         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
291         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "vnfId");
292         GenericVnf genericVnfExpected = new GenericVnf();
293         genericVnfExpected.setVnfId("vnfId");
294         genericVnfExpected.setCallHoming(true);
295         expected.getCustomer().getServiceSubscription().getServiceInstances().get(0).getVnfs().add(genericVnfExpected);
296         boolean homing = true;
297         GenericVnf genericVnfActual = new GenericVnf();
298         genericVnfActual.setVnfId("vnfId");
299         genericVnfActual.setCallHoming(false);
300         GeneralBuildingBlock actual = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
301                 GeneralBuildingBlock.class);
302         actual.getCustomer().getServiceSubscription().getServiceInstances().get(0).getVnfs().add(genericVnfActual);
303
304         SPY_bbInputSetup.setHomingFlag(actual, homing, lookupKeyMap);
305         assertThat(actual, sameBeanAs(expected));
306     }
307
308     @Test
309     public void testGetExecuteBBFromExecution() throws IOException {
310         BuildingBlock bb = new BuildingBlock().setBpmnFlowName("AssignServiceInstanceBB");
311         ExecuteBuildingBlock expected =
312                 new ExecuteBuildingBlock().setBuildingBlock(bb).setRequestId("00032ab7-3fb3-42e5-965d-8ea592502017");
313         DelegateExecution execution = Mockito.mock(DelegateExecution.class);
314         doReturn(expected).when(execution).getVariable(any(String.class));
315         ExecuteBuildingBlock actual = SPY_bbInputSetup.getExecuteBBFromExecution(execution);
316         assertThat(actual, sameBeanAs(expected));
317     }
318
319     @Test
320     public void testGetGBB() throws Exception {
321         GeneralBuildingBlock expected = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
322                 GeneralBuildingBlock.class);
323
324         ExecuteBuildingBlock executeBB = new ExecuteBuildingBlock().setRequestId("requestId");
325         RequestDetails requestDetails = new RequestDetails();
326         ModelInfo modelInfo = new ModelInfo();
327         modelInfo.setModelType(ModelType.service);
328         requestDetails.setModelInfo(modelInfo);
329         RequestParameters requestParams = new RequestParameters();
330         requestParams.setaLaCarte(true);
331         requestDetails.setRequestParameters(requestParams);
332         doReturn(requestDetails).when(SPY_bbInputSetupUtils).getRequestDetails(executeBB.getRequestId());
333         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
334         String resourceId = "123";
335         String requestAction = "createInstance";
336         doReturn(expected).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
337                 requestAction, resourceId);
338         doNothing().when(SPY_bbInputSetup).populateLookupKeyMapWithIds(executeBB.getWorkflowResourceIds(),
339                 lookupKeyMap);
340         boolean aLaCarte = true;
341         GeneralBuildingBlock actual =
342                 SPY_bbInputSetup.getGBB(executeBB, lookupKeyMap, requestAction, aLaCarte, resourceId, null);
343
344         assertThat(actual, sameBeanAs(expected));
345     }
346
347     @Test
348     public void testGetGBBCM() throws Exception {
349         GeneralBuildingBlock expected = mapper
350                 .readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockCMExpected.json"), GeneralBuildingBlock.class);
351
352         ExecuteBuildingBlock executeBB = new ExecuteBuildingBlock().setRequestId("requestId");
353         RequestDetails requestDetails = new RequestDetails();
354         requestDetails.setModelInfo(null);
355         RequestParameters requestParams = new RequestParameters();
356         requestParams.setaLaCarte(true);
357         requestDetails.setRequestParameters(requestParams);
358         RequestInfo requestInfo = new RequestInfo();
359         requestInfo.setSuppressRollback(true);
360         requestInfo.setSource("VID");
361         requestDetails.setRequestInfo(requestInfo);
362         CloudConfiguration cloudConfiguration = new CloudConfiguration();
363         cloudConfiguration.setLcpCloudRegionId("myRegionId");
364         requestDetails.setCloudConfiguration(cloudConfiguration);
365         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
366         String resourceId = "123";
367         String requestAction = "createInstance";
368
369         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "vnf-001");
370
371         doReturn(new org.onap.aai.domain.yang.GenericVnf()).when(SPY_bbInputSetupUtils)
372                 .getAAIGenericVnf(ArgumentMatchers.isA(String.class));
373         doReturn(null).when(bbInputSetupMapperLayer)
374                 .mapAAIGenericVnfIntoGenericVnf(ArgumentMatchers.isA(org.onap.aai.domain.yang.GenericVnf.class));
375         GeneralBuildingBlock actual =
376                 SPY_bbInputSetup.getGBBCM(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId);
377         assertThat(actual, sameBeanAs(expected));
378     }
379
380     @Test
381     public void testGetGBBCMAddMembersAction() throws Exception {
382         GeneralBuildingBlock expected = mapper.readValue(
383                 new File(RESOURCE_PATH + "GeneralBuildingBlockInstanceGroupExpected.json"), GeneralBuildingBlock.class);
384         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
385                 ExecuteBuildingBlock.class);
386         RequestDetails requestDetails = mapper.readValue(
387                 new File(RESOURCE_PATH + "RequestDetailsInput_instanceGroupAddMembers.json"), RequestDetails.class);
388         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
389         String requestAction = "addMembers";
390         String instanceGroupId = "instance-group-001";
391
392         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
393         workflowResourceIds.setInstanceGroupId(instanceGroupId);
394         executeBB.setWorkflowResourceIds(workflowResourceIds);
395
396         lookupKeyMap.put(ResourceKey.INSTANCE_GROUP_ID, instanceGroupId);
397
398         org.onap.aai.domain.yang.InstanceGroup aaiInstanceGroup = new org.onap.aai.domain.yang.InstanceGroup();
399         aaiInstanceGroup.setId(instanceGroupId);
400         aaiInstanceGroup.setInstanceGroupName("test instance group 1");
401
402         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
403         aaiServiceInstance.setServiceInstanceId("service-instance-001");
404         aaiServiceInstance.setServiceInstanceName("test service instance 1");
405         Optional<org.onap.aai.domain.yang.ServiceInstance> optSI = Optional.of(aaiServiceInstance);
406
407         org.onap.aai.domain.yang.GenericVnf vnf1 = new org.onap.aai.domain.yang.GenericVnf();
408         vnf1.setVnfId("vnf-001");
409         vnf1.setVnfName("test vnf 1");
410
411         org.onap.aai.domain.yang.GenericVnf vnf2 = new org.onap.aai.domain.yang.GenericVnf();
412         vnf2.setVnfId("vnf-002");
413         vnf2.setVnfName("test vnf 2");
414
415         doReturn(aaiInstanceGroup).when(SPY_bbInputSetupUtils).getAAIInstanceGroup(instanceGroupId);
416         doReturn(optSI).when(SPY_bbInputSetupUtils).getRelatedServiceInstanceFromInstanceGroup(instanceGroupId);
417         doReturn(vnf1).when(SPY_bbInputSetupUtils).getAAIGenericVnf("vnf-001");
418         doReturn(vnf2).when(SPY_bbInputSetupUtils).getAAIGenericVnf("vnf-002");
419
420         GeneralBuildingBlock actual =
421                 SPY_bbInputSetup.getGBBCM(executeBB, requestDetails, lookupKeyMap, requestAction, instanceGroupId);
422
423         assertThat(actual, sameBeanAs(expected));
424     }
425
426     @Test
427     public void testGetGBBALaCarteNonService() throws Exception {
428         GeneralBuildingBlock expected = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
429                 GeneralBuildingBlock.class);
430         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
431                 ExecuteBuildingBlock.class);
432         RequestDetails requestDetails = mapper.readValue(
433                 new File(RESOURCE_PATH + "RequestDetailsInput_withRelatedInstanceList.json"), RequestDetails.class);
434         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
435         String requestAction = "createInstance";
436         Service service = Mockito.mock(Service.class);
437         ServiceModel serviceModel = new ServiceModel();
438         serviceModel.setCurrentService(service);
439         ServiceInstance serviceInstance = Mockito.mock(ServiceInstance.class);
440         String resourceId = "123";
441         String vnfType = "vnfType";
442         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
443         aaiServiceInstance.setModelVersionId("modelVersionId");
444         org.onap.aai.domain.yang.CloudRegion aaiCloudRegion = Mockito.mock(org.onap.aai.domain.yang.CloudRegion.class);
445         lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "instanceId");
446         doReturn(service).when(SPY_bbInputSetupUtils)
447                 .getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
448         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById("instanceId");
449         doNothing().when(SPY_bbInputSetup).populateObjectsOnAssignAndCreateFlows(any(BBInputSetupParameter.class));
450         doReturn(serviceInstance).when(SPY_bbInputSetup).getExistingServiceInstance(aaiServiceInstance);
451         doReturn(expected).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
452
453         GeneralBuildingBlock actual = SPY_bbInputSetup.getGBBALaCarteNonService(executeBB, requestDetails, lookupKeyMap,
454                 requestAction, resourceId, vnfType);
455
456         assertThat(actual, sameBeanAs(expected));
457     }
458
459     @Test
460     public void testGetGBBALaCarteNonServiceIsReplace() throws Exception {
461         GeneralBuildingBlock expected = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
462                 GeneralBuildingBlock.class);
463         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
464                 ExecuteBuildingBlock.class);
465         RequestDetails requestDetails = mapper.readValue(
466                 new File(RESOURCE_PATH + "RequestDetailsInput_withRelatedInstanceList.json"), RequestDetails.class);
467         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
468         String requestAction = "replaceInstance";
469         Service service = Mockito.mock(Service.class);
470         ServiceModel serviceModel = new ServiceModel();
471         serviceModel.setCurrentService(service);
472         ServiceInstance serviceInstance = Mockito.mock(ServiceInstance.class);
473         String resourceId = "123";
474         String vnfType = "vnfType";
475         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
476         aaiServiceInstance.setModelVersionId("modelVersionId");
477         org.onap.aai.domain.yang.CloudRegion aaiCloudRegion = Mockito.mock(org.onap.aai.domain.yang.CloudRegion.class);
478         lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "instanceId");
479         doReturn(service).when(SPY_bbInputSetupUtils)
480                 .getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
481         doReturn(service).when(SPY_bbInputSetupUtils).getCatalogServiceByModelUUID("modelUUID");
482         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById("instanceId");
483
484         doNothing().when(SPY_bbInputSetup).populateObjectsOnAssignAndCreateFlows(any(BBInputSetupParameter.class));
485         doReturn(serviceInstance).when(SPY_bbInputSetup).getExistingServiceInstance(aaiServiceInstance);
486         doReturn(expected).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
487
488         GeneralBuildingBlock actual = SPY_bbInputSetup.getGBBALaCarteNonService(executeBB, requestDetails, lookupKeyMap,
489                 requestAction, resourceId, vnfType);
490
491         verify(SPY_bbInputSetup, times(1)).populateObjectsOnAssignAndCreateFlows(any(BBInputSetupParameter.class));
492
493         verify(SPY_bbInputSetupUtils, times(1)).getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
494         verify(SPY_bbInputSetupUtils, times(1)).getCatalogServiceByModelUUID("modelUUID");
495
496         assertThat(actual, sameBeanAs(expected));
497     }
498
499     @Test
500     public void testGetGBBALaCarteNonServiceWithoutServiceModelInfo() throws Exception {
501         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
502                 ExecuteBuildingBlock.class);
503         RequestDetails requestDetails = mapper.readValue(
504                 new File(RESOURCE_PATH + "RequestDetailsInput_withRelatedInstanceList.json"), RequestDetails.class);
505         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
506         lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "si123");
507         String requestAction = "createInstance";
508         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
509         aaiServiceInstance.setModelVersionId("modelVersionId");
510         String resourceId = "123";
511         String vnfType = "vnfType";
512
513         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById("si123");
514         doReturn(null).when(SPY_bbInputSetupUtils).getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
515
516         expectedException.expect(ServiceModelNotFoundException.class);
517         expectedException.expectMessage(
518                 "Related service instance model not found in MSO CatalogDB: model-version-id=modelVersionId");
519
520         SPY_bbInputSetup.getGBBALaCarteNonService(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId,
521                 vnfType);
522     }
523
524     @Test
525     public void testGetGBBALaCarteNonServiceServiceInstanceNotFoundInAAI() throws Exception {
526         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
527                 ExecuteBuildingBlock.class);
528         RequestDetails requestDetails = mapper.readValue(
529                 new File(RESOURCE_PATH + "RequestDetailsInput_withRelatedInstanceList.json"), RequestDetails.class);
530         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
531         lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "si123");
532         String requestAction = "createInstance";
533         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
534         aaiServiceInstance.setModelVersionId("modelVersionId");
535         String resourceId = "123";
536         String vnfType = "vnfType";
537
538         doReturn(null).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById("si123");
539
540         expectedException.expect(NoServiceInstanceFoundException.class);
541         expectedException.expectMessage("Related service instance from AAI not found: service-instance-id=si123");
542
543         SPY_bbInputSetup.getGBBALaCarteNonService(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId,
544                 vnfType);
545     }
546
547     @Test
548     public void testGetGBBALaCarteNonServiceWithoutRelatedInstances() throws Exception {
549         GeneralBuildingBlock expected = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
550                 GeneralBuildingBlock.class);
551         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
552                 ExecuteBuildingBlock.class);
553         RequestDetails requestDetails = mapper.readValue(
554                 new File(RESOURCE_PATH + "RequestDetailsInput_withoutRelatedInstanceList.json"), RequestDetails.class);
555         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
556         String requestAction = "createInstance";
557         Service service = Mockito.mock(Service.class);
558         ServiceModel serviceModel = new ServiceModel();
559         serviceModel.setCurrentService(service);
560         String resourceId = "123";
561         ServiceInstance serviceInstance = Mockito.mock(ServiceInstance.class);
562         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
563         aaiServiceInstance.setModelVersionId("modelVersionId");
564         org.onap.aai.domain.yang.CloudRegion aaiCloudRegion = Mockito.mock(org.onap.aai.domain.yang.CloudRegion.class);
565         String vnfType = "vnfType";
566         lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "instanceId");
567         doReturn(service).when(SPY_bbInputSetupUtils)
568                 .getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
569         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById("instanceId");
570
571         doNothing().when(SPY_bbInputSetup).populateObjectsOnAssignAndCreateFlows(any(BBInputSetupParameter.class));
572
573         doReturn(serviceInstance).when(SPY_bbInputSetup).getExistingServiceInstance(aaiServiceInstance);
574         doReturn(expected).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
575
576         GeneralBuildingBlock actual = SPY_bbInputSetup.getGBBALaCarteNonService(executeBB, requestDetails, lookupKeyMap,
577                 requestAction, resourceId, vnfType);
578
579         assertThat(actual, sameBeanAs(expected));
580     }
581
582     @Test
583     public void testGetGBBALaCarteService() throws Exception {
584         GeneralBuildingBlock expected = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
585                 GeneralBuildingBlock.class);
586         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
587                 ExecuteBuildingBlock.class);
588         RequestDetails requestDetails = mapper.readValue(
589                 new File(RESOURCE_PATH + "RequestDetailsInput_withRelatedInstanceList.json"), RequestDetails.class);
590         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
591
592         org.onap.so.serviceinstancebeans.Project requestProject = new org.onap.so.serviceinstancebeans.Project();
593         org.onap.so.serviceinstancebeans.OwningEntity requestOwningEntity =
594                 new org.onap.so.serviceinstancebeans.OwningEntity();
595         requestDetails.setProject(requestProject);
596         requestDetails.setOwningEntity(requestOwningEntity);
597
598         Service service = Mockito.mock(Service.class);
599         Customer customer = Mockito.mock(Customer.class);
600         ServiceSubscription serviceSubscription = Mockito.mock(ServiceSubscription.class);
601         Project project = Mockito.mock(Project.class);
602         OwningEntity owningEntity = Mockito.mock(OwningEntity.class);
603         ServiceInstance serviceInstance = Mockito.mock(ServiceInstance.class);
604         String resourceId = "123";
605         String requestAction = "createInstance";
606         executeBB.setaLaCarte(true);
607         executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.SERVICE_INSTANCE.toString());
608         org.onap.aai.domain.yang.CloudRegion aaiCloudRegion = Mockito.mock(org.onap.aai.domain.yang.CloudRegion.class);
609
610         doReturn(service).when(SPY_bbInputSetupUtils)
611                 .getCatalogServiceByModelUUID(requestDetails.getModelInfo().getModelVersionId());
612         doReturn(project).when(bbInputSetupMapperLayer).mapRequestProject(requestDetails.getProject());
613         doReturn(owningEntity).when(bbInputSetupMapperLayer).mapRequestOwningEntity(requestDetails.getOwningEntity());
614
615         doReturn(customer).when(SPY_bbInputSetup).getCustomerAndServiceSubscription(requestDetails, resourceId);
616         doReturn(serviceInstance).when(SPY_bbInputSetup).getALaCarteServiceInstance(service, requestDetails, customer,
617                 project, owningEntity, lookupKeyMap, resourceId, Boolean.TRUE.equals(executeBB.isaLaCarte()),
618                 executeBB.getBuildingBlock().getBpmnFlowName());
619         doReturn(expected).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
620
621         GeneralBuildingBlock actual = SPY_bbInputSetup.getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
622                 requestAction, resourceId);
623
624         assertThat(actual, sameBeanAs(expected));
625     }
626
627     @Test
628     public void testGetGBBALaCarteServiceFindServiceByModelVersionId() throws Exception {
629         GeneralBuildingBlock expected = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
630                 GeneralBuildingBlock.class);
631         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
632                 ExecuteBuildingBlock.class);
633         RequestDetails requestDetails = mapper.readValue(
634                 new File(RESOURCE_PATH + "RequestDetailsInput_withRelatedInstanceList.json"), RequestDetails.class);
635         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
636
637         org.onap.so.serviceinstancebeans.Project requestProject = new org.onap.so.serviceinstancebeans.Project();
638         org.onap.so.serviceinstancebeans.OwningEntity requestOwningEntity =
639                 new org.onap.so.serviceinstancebeans.OwningEntity();
640         requestDetails.setProject(requestProject);
641         requestDetails.setOwningEntity(requestOwningEntity);
642
643         Service service = Mockito.mock(Service.class);
644         Customer customer = Mockito.mock(Customer.class);
645         ServiceSubscription serviceSubscription = Mockito.mock(ServiceSubscription.class);
646         Project project = Mockito.mock(Project.class);
647         OwningEntity owningEntity = Mockito.mock(OwningEntity.class);
648         ServiceInstance serviceInstance = Mockito.mock(ServiceInstance.class);
649         String resourceId = "123";
650         String requestAction = "createInstance";
651         executeBB.setaLaCarte(true);
652         executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.SERVICE_INSTANCE.toString());
653         org.onap.aai.domain.yang.CloudRegion aaiCloudRegion = Mockito.mock(org.onap.aai.domain.yang.CloudRegion.class);
654
655         doReturn(null).when(SPY_bbInputSetupUtils)
656                 .getCatalogServiceByModelUUID(requestDetails.getModelInfo().getModelVersionId());
657         doReturn(service).when(SPY_bbInputSetupUtils).getCatalogServiceByModelVersionAndModelInvariantUUID(
658                 requestDetails.getModelInfo().getModelVersion(), requestDetails.getModelInfo().getModelInvariantId());
659         doReturn(project).when(bbInputSetupMapperLayer).mapRequestProject(requestDetails.getProject());
660         doReturn(owningEntity).when(bbInputSetupMapperLayer).mapRequestOwningEntity(requestDetails.getOwningEntity());
661
662         doReturn(customer).when(SPY_bbInputSetup).getCustomerAndServiceSubscription(requestDetails, resourceId);
663         doReturn(serviceInstance).when(SPY_bbInputSetup).getALaCarteServiceInstance(service, requestDetails, customer,
664                 project, owningEntity, lookupKeyMap, resourceId, Boolean.TRUE.equals(executeBB.isaLaCarte()),
665                 executeBB.getBuildingBlock().getBpmnFlowName());
666         doReturn(expected).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
667
668         GeneralBuildingBlock actual = SPY_bbInputSetup.getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
669                 requestAction, resourceId);
670
671         assertThat(actual, sameBeanAs(expected));
672     }
673
674     @Test
675     public void testGetGBBALaCarteServiceNoProjectNoOE() throws Exception {
676         GeneralBuildingBlock expected = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
677                 GeneralBuildingBlock.class);
678         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
679                 ExecuteBuildingBlock.class);
680         RequestDetails requestDetails = mapper.readValue(
681                 new File(RESOURCE_PATH + "RequestDetailsInput_withRelatedInstanceList.json"), RequestDetails.class);
682         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
683
684         Service service = Mockito.mock(Service.class);
685         Customer customer = Mockito.mock(Customer.class);
686         ServiceSubscription serviceSubscription = Mockito.mock(ServiceSubscription.class);
687         ServiceInstance serviceInstance = Mockito.mock(ServiceInstance.class);
688         String resourceId = "123";
689         String requestAction = "createInstance";
690         executeBB.setaLaCarte(true);
691         executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.SERVICE_INSTANCE.toString());
692         org.onap.aai.domain.yang.CloudRegion aaiCloudRegion = Mockito.mock(org.onap.aai.domain.yang.CloudRegion.class);
693
694         Map<String, String> uriKeys = new HashMap<>();
695         uriKeys.put("global-customer-id", "globalCustomerId");
696         uriKeys.put("service-type", "serviceType");
697
698         doReturn(service).when(SPY_bbInputSetupUtils)
699                 .getCatalogServiceByModelUUID(requestDetails.getModelInfo().getModelVersionId());
700
701         doReturn(customer).when(SPY_bbInputSetup).getCustomerAndServiceSubscription(requestDetails, resourceId);
702
703         doReturn(serviceInstance).when(SPY_bbInputSetup).getALaCarteServiceInstance(service, requestDetails, customer,
704                 null, null, lookupKeyMap, resourceId, Boolean.TRUE.equals(executeBB.isaLaCarte()),
705                 executeBB.getBuildingBlock().getBpmnFlowName());
706         doReturn(expected).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
707
708         GeneralBuildingBlock actual = SPY_bbInputSetup.getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
709                 requestAction, resourceId);
710
711         assertThat(actual, sameBeanAs(expected));
712     }
713
714     @Test
715     public void testGetServiceInstanceHelperCreateScenario() throws Exception {
716         RequestDetails requestDetails = new RequestDetails();
717         RequestInfo requestInfo = new RequestInfo();
718         requestInfo.setInstanceName("SharansInstanceName");
719         requestDetails.setRequestInfo(requestInfo);
720         Customer customer = new Customer();
721         String serviceInstanceId = "SharansInstanceId";
722         boolean aLaCarte = true;
723         ServiceInstance expected = new ServiceInstance();
724         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
725         Service service = new Service();
726         service.setModelUUID("modelUUID");
727         String bbName = AssignFlows.SERVICE_INSTANCE.toString();
728
729         doReturn(null).when(SPY_bbInputSetupUtils).getAAIServiceInstanceByName(requestInfo.getInstanceName(), customer);
730         doReturn(null).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById(serviceInstanceId);
731
732
733         doReturn(expected).when(SPY_bbInputSetup).createServiceInstance(requestDetails, null, null, lookupKeyMap,
734                 serviceInstanceId);
735
736         ServiceInstance actual = SPY_bbInputSetup.getServiceInstanceHelper(requestDetails, customer, null, null,
737                 lookupKeyMap, serviceInstanceId, aLaCarte, service, bbName);
738         assertThat(actual, sameBeanAs(expected));
739     }
740
741     @Test
742     public void testGetServiceInstanceHelperCreateScenarioExisting() throws Exception {
743         RequestDetails requestDetails = new RequestDetails();
744         RequestInfo requestInfo = new RequestInfo();
745         requestInfo.setInstanceName("SharansInstanceName");
746         requestDetails.setRequestInfo(requestInfo);
747         Customer customer = new Customer();
748         String serviceInstanceId = "SharansInstanceId";
749         boolean aLaCarte = true;
750         Service service = new Service();
751         service.setModelUUID("modelUUID");
752         ServiceInstance expected = new ServiceInstance();
753         org.onap.aai.domain.yang.ServiceInstance serviceInstanceAAI = new org.onap.aai.domain.yang.ServiceInstance();
754         serviceInstanceAAI.setModelVersionId("modelUUID");
755         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
756         String bbName = AssignFlows.SERVICE_INSTANCE.toString();
757
758         doReturn(serviceInstanceAAI).when(SPY_bbInputSetupUtils)
759                 .getAAIServiceInstanceByName(requestInfo.getInstanceName(), customer);
760         doReturn(expected).when(SPY_bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
761
762         ServiceInstance actual = SPY_bbInputSetup.getServiceInstanceHelper(requestDetails, customer, null, null,
763                 lookupKeyMap, serviceInstanceId, aLaCarte, service, bbName);
764         assertThat(actual, sameBeanAs(expected));
765     }
766
767     @Test
768     public void testGetServiceInstanceHelperCreateScenarioExistingNoNameButWithId() throws Exception {
769         RequestDetails requestDetails = new RequestDetails();
770         RequestInfo requestInfo = new RequestInfo();
771         requestInfo.setInstanceName("SharansInstanceName");
772         requestDetails.setRequestInfo(requestInfo);
773         Customer customer = new Customer();
774         String serviceInstanceId = "SharansInstanceId";
775         boolean aLaCarte = true;
776         Service service = new Service();
777         service.setModelUUID("modelUUID");
778         ServiceInstance expected = new ServiceInstance();
779         org.onap.aai.domain.yang.ServiceInstance serviceInstanceAAI = new org.onap.aai.domain.yang.ServiceInstance();
780         serviceInstanceAAI.setModelVersionId("modelUUID");
781         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
782         String bbName = "ActivateServiceInstanceBB";
783
784         doReturn(serviceInstanceAAI).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById(serviceInstanceId);
785         doReturn(expected).when(SPY_bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
786
787         ServiceInstance actual = SPY_bbInputSetup.getServiceInstanceHelper(requestDetails, customer, null, null,
788                 lookupKeyMap, serviceInstanceId, aLaCarte, service, bbName);
789         assertThat(actual, sameBeanAs(expected));
790     }
791
792     @Test
793     public void testGetServiceInstanceHelperCreateScenarioExistingNoNameButWithIdDifferentModel() throws Exception {
794         RequestDetails requestDetails = new RequestDetails();
795         RequestInfo requestInfo = new RequestInfo();
796         requestDetails.setRequestInfo(requestInfo);
797         Customer customer = new Customer();
798         String serviceInstanceId = "SharansInstanceId";
799         boolean aLaCarte = true;
800         Service service = new Service();
801         service.setModelUUID("modelUUID");
802         ServiceInstance expected = new ServiceInstance();
803         org.onap.aai.domain.yang.ServiceInstance serviceInstanceAAI = new org.onap.aai.domain.yang.ServiceInstance();
804         serviceInstanceAAI.setModelVersionId("modelUUIDDifferent");
805         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
806         String bbName = "ActivateServiceInstanceBB";
807         Service differentService = new Service();
808         differentService.setModelUUID("modelUUIDDifferent");
809
810         doReturn(serviceInstanceAAI).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById(serviceInstanceId);
811
812
813         ServiceInstance actual = SPY_bbInputSetup.getServiceInstanceHelper(requestDetails, customer, null, null,
814                 lookupKeyMap, serviceInstanceId, aLaCarte, service, bbName);
815         assertThat(actual, sameBeanAs(expected));
816     }
817
818     @Test
819     public void testGetServiceInstanceHelperCreateScenarioExistingWithName() throws Exception {
820         RequestDetails requestDetails = new RequestDetails();
821         RequestInfo requestInfo = new RequestInfo();
822         requestDetails.setRequestInfo(requestInfo);
823         ServiceSubscription serviceSub = new ServiceSubscription();
824         Customer customer = new Customer();
825         customer.setServiceSubscription(serviceSub);
826         ServiceInstance expected = new ServiceInstance();
827         expected.setServiceInstanceId("serviceInstanceId");
828         org.onap.aai.domain.yang.ServiceInstance serviceInstanceAAI = new org.onap.aai.domain.yang.ServiceInstance();
829         serviceInstanceAAI.setServiceInstanceId("serviceInstanceId");
830
831         doReturn(serviceInstanceAAI).when(SPY_bbInputSetupUtils).getAAIServiceInstanceByIdAndCustomer(Mockito.any(),
832                 Mockito.any(), Mockito.any());
833         ServiceInstance actual = SPY_bbInputSetup.getServiceInstanceHelper(requestDetails, customer, null, null,
834                 new HashMap<>(), "SharansInstanceId", false, new Service(), "ActivateServiceInstanceBB");
835         assertThat(actual, sameBeanAs(expected));
836     }
837
838     @Test(expected = Exception.class)
839     public void testGetServiceInstanceHelperCreateScenarioExistingNoNameButWithIdExceptionThrown() throws Exception {
840         RequestDetails requestDetails = new RequestDetails();
841         RequestInfo requestInfo = new RequestInfo();
842         requestDetails.setRequestInfo(requestInfo);
843         Customer customer = new Customer();
844         String serviceInstanceId = "SharansInstanceId";
845         boolean aLaCarte = true;
846         Service service = new Service();
847         service.setModelUUID("modelUUID");
848         org.onap.aai.domain.yang.ServiceInstance serviceInstanceAAI = new org.onap.aai.domain.yang.ServiceInstance();
849         serviceInstanceAAI.setModelVersionId("modelUUIDDifferent");
850         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
851         String bbName = AssignFlows.SERVICE_INSTANCE.toString();
852
853         ServiceInstance actual = SPY_bbInputSetup.getServiceInstanceHelper(requestDetails, customer, null, null,
854                 lookupKeyMap, serviceInstanceId, aLaCarte, service, bbName);
855     }
856
857     @Test
858     public void testPopulateObjectsOnAssignAndCreateFlows() throws Exception {
859         String bbName = AssignFlows.SERVICE_INSTANCE.toString();
860         String instanceName = "instanceName";
861         String vnfType = "vnfType";
862         String resourceId = "networkId";
863         String productFamilyId = "productFamilyId";
864         String applicationId = "applicationId";
865         Service service = Mockito.mock(Service.class);
866         ServiceModel serviceModel = new ServiceModel();
867         serviceModel.setCurrentService(service);
868         ServiceInstance serviceInstance = Mockito.mock(ServiceInstance.class);
869         RequestDetails requestDetails = Mockito.mock(RequestDetails.class);
870         ModelInfo modelInfo = Mockito.mock(ModelInfo.class);
871         RequestInfo requestInfo = Mockito.mock(RequestInfo.class);
872         RelatedInstanceList[] relatedInstanceList = new RelatedInstanceList[] {};
873         CloudConfiguration cloudConfiguration = new CloudConfiguration();
874         org.onap.so.serviceinstancebeans.Platform platform =
875                 Mockito.mock(org.onap.so.serviceinstancebeans.Platform.class);
876         org.onap.so.serviceinstancebeans.LineOfBusiness lineOfBusiness =
877                 Mockito.mock(org.onap.so.serviceinstancebeans.LineOfBusiness.class);
878         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
879
880         doReturn(modelInfo).when(requestDetails).getModelInfo();
881         doReturn(productFamilyId).when(requestInfo).getProductFamilyId();
882         doReturn(requestInfo).when(requestDetails).getRequestInfo();
883         doReturn(instanceName).when(requestInfo).getInstanceName();
884         doReturn(platform).when(requestDetails).getPlatform();
885         doReturn(lineOfBusiness).when(requestDetails).getLineOfBusiness();
886         doReturn(relatedInstanceList).when(requestDetails).getRelatedInstanceList();
887         doReturn(cloudConfiguration).when(requestDetails).getCloudConfiguration();
888         doReturn(applicationId).when(requestInfo).getApplicationId();
889
890         doReturn(ModelType.network).when(modelInfo).getModelType();
891         BBInputSetupParameter parameter = new BBInputSetupParameter.Builder().setRequestId(REQUEST_ID)
892                 .setRequestDetails(requestDetails).setService(service).setBbName(bbName)
893                 .setServiceInstance(serviceInstance).setLookupKeyMap(lookupKeyMap).setResourceId(resourceId)
894                 .setVnfType(vnfType).setIsReplace(false).setApplicationId(applicationId).build();
895
896         doNothing().when(SPY_bbInputSetup).populateL3Network(parameter);
897         SPY_bbInputSetup.populateObjectsOnAssignAndCreateFlows(parameter);
898         parameter.setInstanceName(instanceName);
899         parameter.setModelInfo(modelInfo);
900         verify(SPY_bbInputSetup, times(1)).populateL3Network(parameter);
901         assertEquals("NetworkId populated", true,
902                 lookupKeyMap.get(ResourceKey.NETWORK_ID).equalsIgnoreCase(resourceId));
903
904         doReturn(ModelType.vnf).when(modelInfo).getModelType();
905         resourceId = "vnfId";
906         doNothing().when(SPY_bbInputSetup).populateGenericVnf(parameter);
907         parameter.setResourceId(resourceId);
908         SPY_bbInputSetup.populateObjectsOnAssignAndCreateFlows(parameter);
909         verify(SPY_bbInputSetup, times(1)).populateGenericVnf(parameter);
910         assertEquals("VnfId populated", true,
911                 lookupKeyMap.get(ResourceKey.GENERIC_VNF_ID).equalsIgnoreCase(resourceId));
912         doReturn(ModelType.volumeGroup).when(modelInfo).getModelType();
913         resourceId = "volumeGroupId";
914         parameter.setResourceId(resourceId);
915         doNothing().when(SPY_bbInputSetup).populateVolumeGroup(parameter);
916         SPY_bbInputSetup.populateObjectsOnAssignAndCreateFlows(parameter);
917         verify(SPY_bbInputSetup, times(1)).populateVolumeGroup(parameter);
918         assertEquals("VolumeGroupId populated", true,
919                 lookupKeyMap.get(ResourceKey.VOLUME_GROUP_ID).equalsIgnoreCase(resourceId));
920
921         doReturn(ModelType.vfModule).when(modelInfo).getModelType();
922         resourceId = "vfModuleId";
923         parameter.setResourceId(resourceId);
924         doNothing().when(SPY_bbInputSetup).populateVfModule(parameter);
925         SPY_bbInputSetup.populateObjectsOnAssignAndCreateFlows(parameter);
926         verify(SPY_bbInputSetup, times(1)).populateVfModule(parameter);
927         assertEquals("VfModuleId populated", true,
928                 lookupKeyMap.get(ResourceKey.VF_MODULE_ID).equalsIgnoreCase(resourceId));
929
930         String bbNameAssignVolume = AssignFlows.VOLUME_GROUP.toString();
931         doReturn(ModelType.vfModule).when(modelInfo).getModelType();
932         resourceId = "vfModuleId";
933         parameter.setResourceId(resourceId);
934         parameter.setBbName(bbNameAssignVolume);
935         doNothing().when(SPY_bbInputSetup).populateVolumeGroup(parameter);
936         SPY_bbInputSetup.populateObjectsOnAssignAndCreateFlows(parameter);
937         verify(SPY_bbInputSetup, times(2)).populateVolumeGroup(parameter);
938         assertEquals(resourceId, lookupKeyMap.get(ResourceKey.VOLUME_GROUP_ID));
939     }
940
941     @Test
942     public void testPopulateGBBWithSIAndAdditionalInfo() throws Exception {
943         GeneralBuildingBlock expected =
944                 mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpectedWUserParamsInfo.json"),
945                         GeneralBuildingBlock.class);
946         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
947                 ExecuteBuildingBlock.class);
948         RequestDetails requestDetails = mapper.readValue(
949                 new File(RESOURCE_PATH + "RequestDetailsInput_withRelatedInstanceList.json"), RequestDetails.class);
950         RequestContext requestContext =
951                 mapper.readValue(new File(RESOURCE_PATH + "RequestContextExpected.json"), RequestContext.class);
952         ServiceInstance serviceInstance =
953                 mapper.readValue(new File(RESOURCE_PATH + "ServiceInstance_getServiceInstanceNOAAIExpected.json"),
954                         ServiceInstance.class);
955         CloudConfiguration cloudConfiguration = new CloudConfiguration();
956         cloudConfiguration.setTenantId("tenantId");
957         requestDetails.setCloudConfiguration(cloudConfiguration);
958         OrchestrationContext orchestrationContext = new OrchestrationContext();
959         orchestrationContext.setIsRollbackEnabled(false);
960
961         CloudRegion cloudRegion = new CloudRegion();
962         cloudRegion.setCloudOwner("test-owner-name");
963         cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
964         cloudRegion.setComplex("complexName");
965         cloudRegion.setTenantId("tenantId");
966
967         Map<String, String> uriKeys = new HashMap<>();
968         uriKeys.put(AAIFluentTypeBuilder.Types.CUSTOMER.getUriParams().globalCustomerId, "global-customer-id");
969         uriKeys.put(AAIFluentTypeBuilder.Types.SERVICE_SUBSCRIPTION.getUriParams().serviceType, "service-type");
970
971         Customer customer = new Customer();
972         ServiceSubscription serviceSubscription = new ServiceSubscription();
973         serviceSubscription.setServiceType("subscriptionServiceType");
974         customer.setGlobalCustomerId("globalCustomerId");
975         customer.setSubscriberName("subscriberName");
976         customer.setSubscriberType("subscriberType");
977         customer.setServiceSubscription(serviceSubscription);
978
979         org.onap.so.bpmn.servicedecomposition.bbobjects.Tenant tenant =
980                 new org.onap.so.bpmn.servicedecomposition.bbobjects.Tenant();
981         tenant.setTenantContext("tenantContext");
982         tenant.setTenantId("tenantId");
983         tenant.setTenantName("tenantName");
984
985         org.onap.aai.domain.yang.CloudRegion aaiCloudRegion = Mockito.mock(org.onap.aai.domain.yang.CloudRegion.class);
986         org.onap.aai.domain.yang.Tenants aaiTenants = Mockito.mock(org.onap.aai.domain.yang.Tenants.class);
987         org.onap.aai.domain.yang.Tenant aaiTenant = new org.onap.aai.domain.yang.Tenant();
988         aaiTenant.setTenantId("tenantId");
989         List<org.onap.aai.domain.yang.Tenant> tenants = new ArrayList<>();
990         tenants.add(aaiTenant);
991
992         String requestAction = "createInstance";
993
994         doReturn(uriKeys).when(SPY_bbInputSetupUtils)
995                 .getURIKeysFromServiceInstance(serviceInstance.getServiceInstanceId());
996         doReturn(customer).when(SPY_bbInputSetup).mapCustomer(uriKeys.get("global-customer-id"),
997                 uriKeys.get("service-type"));
998         doReturn(aaiCloudRegion).when(SPY_bbInputSetupUtils).getCloudRegion(requestDetails.getCloudConfiguration());
999         doReturn(orchestrationContext).when(bbInputSetupMapperLayer).mapOrchestrationContext(requestDetails);
1000         doReturn(requestContext).when(bbInputSetupMapperLayer).mapRequestContext(requestDetails);
1001         doReturn(cloudRegion).when(bbInputSetupMapperLayer).mapCloudRegion(requestDetails.getCloudConfiguration(),
1002                 aaiCloudRegion);
1003         doReturn(tenant).when(bbInputSetupMapperLayer).mapTenant(aaiTenant);
1004         doReturn(aaiTenants).when(aaiCloudRegion).getTenants();
1005         doReturn(tenants).when(aaiTenants).getTenant();
1006         BBInputSetupParameter parameter = new BBInputSetupParameter.Builder().setServiceInstance(serviceInstance)
1007                 .setRequestDetails(requestDetails).setExecuteBB(executeBB).setRequestAction(requestAction).build();
1008         GeneralBuildingBlock actual = SPY_bbInputSetup.populateGBBWithSIAndAdditionalInfo(parameter);
1009
1010         assertThat(actual, sameBeanAs(expected));
1011     }
1012
1013     @Test
1014     public void testGetServiceInstanceNOAAI() throws Exception {
1015         ServiceInstance expected =
1016                 mapper.readValue(new File(RESOURCE_PATH + "ServiceInstance_getServiceInstanceNOAAIExpected.json"),
1017                         ServiceInstance.class);
1018         Service service = mapper.readValue(
1019                 new File(RESOURCE_PATH + "CatalogDBService_getServiceInstanceNOAAIInput.json"), Service.class);
1020         Customer customer = mapper.readValue(new File(RESOURCE_PATH + "Customer.json"), Customer.class);
1021         Project project = mapper.readValue(new File(RESOURCE_PATH + "Project.json"), Project.class);
1022         OwningEntity owningEntity = mapper.readValue(new File(RESOURCE_PATH + "OwningEntity.json"), OwningEntity.class);
1023         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
1024
1025         BuildingBlock buildingBlock = new BuildingBlock().setBpmnFlowName(AssignFlows.SERVICE_INSTANCE.toString());
1026         ExecuteBuildingBlock executeBB = new ExecuteBuildingBlock().setaLaCarte(true).setBuildingBlock(buildingBlock);
1027         RequestDetails requestDetails = new RequestDetails();
1028         RequestInfo reqInfo = new RequestInfo();
1029         reqInfo.setInstanceName("serviceInstanceName");
1030         requestDetails.setRequestInfo(reqInfo);
1031         ModelInfo modelInfo = new ModelInfo();
1032         modelInfo.setModelType(ModelType.service);
1033         requestDetails.setModelInfo(modelInfo);
1034         doReturn(null).when(SPY_bbInputSetupUtils)
1035                 .getAAIServiceInstanceByName(requestDetails.getRequestInfo().getInstanceName(), customer);
1036         doReturn(expected.getModelInfoServiceInstance()).when(bbInputSetupMapperLayer)
1037                 .mapCatalogServiceIntoServiceInstance(service);
1038         doReturn(null).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById(any(String.class));
1039         String serviceInstanceId = "3655a595-05d1-433c-93c0-3afd6b572545";
1040         boolean aLaCarte = true;
1041
1042         ServiceInstance actual =
1043                 SPY_bbInputSetup.getALaCarteServiceInstance(service, requestDetails, customer, project, owningEntity,
1044                         lookupKeyMap, serviceInstanceId, aLaCarte, executeBB.getBuildingBlock().getBpmnFlowName());
1045
1046         assertThat(actual, sameBeanAs(expected));
1047     }
1048
1049     @Test
1050     public void testGetServiceSubscription() throws IOException {
1051         ServiceSubscription expected = new ServiceSubscription();
1052         RequestDetails requestDetails = new RequestDetails();
1053         RequestParameters params = new RequestParameters();
1054         params.setSubscriptionServiceType("subscriptionServiceType");
1055         requestDetails.setRequestParameters(params);
1056         org.onap.aai.domain.yang.ServiceSubscription aaiServiceSubscription =
1057                 new org.onap.aai.domain.yang.ServiceSubscription();
1058         Customer customer = new Customer();
1059         customer.setGlobalCustomerId("globalCustomerId");
1060         doReturn(aaiServiceSubscription).when(SPY_bbInputSetupUtils).getAAIServiceSubscription(
1061                 customer.getGlobalCustomerId(), requestDetails.getRequestParameters().getSubscriptionServiceType());
1062         doReturn(expected).when(bbInputSetupMapperLayer).mapAAIServiceSubscription(aaiServiceSubscription);
1063
1064         ServiceSubscription actual = SPY_bbInputSetup.getServiceSubscription(requestDetails, customer);
1065         assertThat(actual, sameBeanAs(expected));
1066     }
1067
1068     @Test
1069     public void testGetCustomer() throws IOException {
1070         Customer expected = new Customer();
1071         RequestDetails requestDetails = new RequestDetails();
1072         SubscriberInfo subscriberInfo = new SubscriberInfo();
1073         subscriberInfo.setGlobalSubscriberId("globalSubscriberId");
1074         requestDetails.setSubscriberInfo(subscriberInfo);
1075         org.onap.aai.domain.yang.Customer aaiCustomer = new org.onap.aai.domain.yang.Customer();
1076         doReturn(aaiCustomer).when(SPY_bbInputSetupUtils)
1077                 .getAAICustomer(requestDetails.getSubscriberInfo().getGlobalSubscriberId());
1078         doReturn(expected).when(bbInputSetupMapperLayer).mapAAICustomer(aaiCustomer);
1079
1080         Customer actual = SPY_bbInputSetup.getCustomerFromRequest(requestDetails);
1081         assertThat(actual, sameBeanAs(expected));
1082     }
1083
1084     @Test
1085     public void testGetExistingServiceInstance() throws Exception {
1086         org.onap.aai.domain.yang.ServiceInstance serviceInstanceAAI = new org.onap.aai.domain.yang.ServiceInstance();
1087         ServiceInstance expected = new ServiceInstance();
1088
1089         doReturn(expected).when(bbInputSetupMapperLayer).mapAAIServiceInstanceIntoServiceInstance(serviceInstanceAAI);
1090
1091
1092         ServiceInstance actual = SPY_bbInputSetup.getExistingServiceInstance(serviceInstanceAAI);
1093         assertThat(actual, sameBeanAs(expected));
1094     }
1095
1096     @Test
1097     public void testPopulateNetworkCollectionAndInstanceGroupAssign() throws Exception {
1098         Service service = Mockito.mock(Service.class);
1099         String key = "collectionCustId";
1100         ServiceInstance serviceInstance =
1101                 mapper.readValue(new File(RESOURCE_PATH + "ServiceInstance_getServiceInstanceNOAAIExpected.json"),
1102                         ServiceInstance.class);
1103         String resourceId = "123";
1104         Collection collection = SPY_bbInputSetup.createCollection(resourceId);
1105         InstanceGroup instanceGroup = SPY_bbInputSetup.createInstanceGroup();
1106         assertNull(serviceInstance.getCollection());
1107         doReturn(true).when(SPY_bbInputSetup).isVlanTagging(service, key);
1108
1109         doReturn(collection).when(SPY_bbInputSetup).createCollection(resourceId);
1110         doReturn(instanceGroup).when(SPY_bbInputSetup).createInstanceGroup();
1111         doNothing().when(SPY_bbInputSetup).mapCatalogCollection(service, collection, key);
1112
1113         NetworkCollectionResourceCustomization networkCollection = new NetworkCollectionResourceCustomization();
1114         networkCollection.setModelCustomizationUUID(key);
1115         networkCollection.setCollectionResource(new CollectionResource());
1116         networkCollection.getCollectionResource().setInstanceGroup(new org.onap.so.db.catalog.beans.InstanceGroup());
1117         networkCollection.getCollectionResource().getInstanceGroup().setToscaNodeType("NetworkCollectionResource");
1118         networkCollection.getCollectionResource().getInstanceGroup().setType(InstanceGroupType.L3_NETWORK);
1119         networkCollection.getCollectionResource().getInstanceGroup()
1120                 .setCollectionInstanceGroupCustomizations(new ArrayList<>());
1121         List<CollectionResourceCustomization> customizations = new ArrayList<>();
1122         customizations.add(networkCollection);
1123         doReturn(customizations).when(service).getCollectionResourceCustomizations();
1124         BBInputSetupParameter parameter = new BBInputSetupParameter.Builder().setService(service)
1125                 .setServiceInstance(serviceInstance).setResourceId(resourceId).setKey(key)
1126                 .setBbName(AssignFlows.NETWORK_COLLECTION.toString()).build();
1127
1128         SPY_bbInputSetup.populateNetworkCollectionAndInstanceGroupAssign(parameter);
1129         assertNotNull(serviceInstance.getCollection());
1130         assertNotNull(serviceInstance.getCollection().getInstanceGroup());
1131
1132         verify(SPY_bbInputSetup, times(1)).mapCatalogCollection(service, serviceInstance.getCollection(), key);
1133         verify(SPY_bbInputSetup, times(1)).mapCatalogNetworkCollectionInstanceGroup(service,
1134                 serviceInstance.getCollection().getInstanceGroup(), key);
1135     }
1136
1137     @Test
1138     public void testPopulateInstanceGroup() throws Exception {
1139         ModelInfo modelInfo = Mockito.mock(ModelInfo.class);
1140         Service service = Mockito.mock(Service.class);
1141         List<InstanceGroup> instanceGroups = Mockito.spy(new ArrayList<>());
1142         ServiceInstance serviceInstance = Mockito.spy(new ServiceInstance());
1143         serviceInstance.setServiceInstanceId("si-001");
1144         serviceInstance.setServiceInstanceName("test service instance");
1145         serviceInstance.setInstanceGroups(instanceGroups);
1146
1147         BBInputSetupParameter parameter = new BBInputSetupParameter.Builder().setModelInfo(modelInfo)
1148                 .setService(service).setServiceInstance(serviceInstance).setResourceId("instance-group-001")
1149                 .setInstanceName("test instance group").build();
1150         SPY_bbInputSetup.populateInstanceGroup(parameter);
1151         verify(SPY_bbInputSetup, times(1)).mapCatalogInstanceGroup(isA(InstanceGroup.class), isA(ModelInfo.class),
1152                 isA(Service.class));
1153         verify(instanceGroups, times(1)).add(isA(InstanceGroup.class));
1154     }
1155
1156     @Test
1157     public void testIsVlanTagging() throws Exception {
1158         boolean expected = true;
1159         Service service = Mockito.mock(Service.class);
1160         String key = "collectionCustId";
1161         NetworkCollectionResourceCustomization networkCollection = new NetworkCollectionResourceCustomization();
1162         networkCollection.setModelCustomizationUUID(key);
1163         networkCollection.setCollectionResource(new CollectionResource());
1164         networkCollection.getCollectionResource().setInstanceGroup(new org.onap.so.db.catalog.beans.InstanceGroup());
1165         networkCollection.getCollectionResource().getInstanceGroup()
1166                 .setToscaNodeType("org.openecomp.resource.cr.NetworkCollectionResource1806");
1167         List<CollectionResourceCustomization> customizations = new ArrayList<>();
1168         customizations.add(networkCollection);
1169         doReturn(customizations).when(service).getCollectionResourceCustomizations();
1170         boolean actual = SPY_bbInputSetup.isVlanTagging(service, key);
1171         assertEquals("Is Vlan Tagging check.", expected, actual);
1172     }
1173
1174     @Test
1175     public void testPopulateVolumeGroup() throws Exception {
1176         RequestDetails requestDetails = new RequestDetails();
1177         RelatedInstanceList ril = new RelatedInstanceList();
1178         RelatedInstance ri = new RelatedInstance();
1179         ModelInfo mi = new ModelInfo();
1180         mi.setModelType(ModelType.vnf);
1181         mi.setModelCustomizationUuid("vnfModelCustomizationUUID");
1182         mi.setModelCustomizationId("vnfModelCustomizationUUID");
1183         ri.setModelInfo(mi);
1184         ril.setRelatedInstance(ri);
1185         requestDetails.setRelatedInstanceList(new RelatedInstanceList[] {ril});
1186
1187         ModelInfo modelInfo = new ModelInfo();
1188         modelInfo.setModelCustomizationId("volumeGroupCustId");
1189
1190         RequestInfo reqInfo = new RequestInfo();
1191         reqInfo.setInstanceName("volumeGroupName");
1192         requestDetails.setModelInfo(modelInfo);
1193         requestDetails.setRequestInfo(reqInfo);
1194
1195         ServiceInstance serviceInstance = new ServiceInstance();
1196         GenericVnf vnf = new GenericVnf();
1197         vnf.setVnfId("genericVnfId");
1198
1199         VolumeGroup vg = new VolumeGroup();
1200         vg.setVolumeGroupName("volumeGroupName");
1201         vg.setVolumeGroupId("volumeGroupId");
1202         vg.setModelInfoVfModule(new ModelInfoVfModule());
1203         vg.getModelInfoVfModule().setModelCustomizationUUID("volumeGroupCustId");
1204         vnf.getVolumeGroups().add(vg);
1205         serviceInstance.getVnfs().add(vnf);
1206
1207         Service service = mapper.readValue(
1208                 new File(RESOURCE_PATH + "CatalogDBService_getServiceInstanceNOAAIInput.json"), Service.class);
1209         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
1210         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "genericVnfId");
1211
1212         ServiceModel serviceModel = new ServiceModel();
1213         serviceModel.setCurrentService(service);
1214         String bbName = AssignFlows.VOLUME_GROUP.toString();
1215         String resourceId = "123";
1216         doNothing().when(SPY_bbInputSetup).mapCatalogVolumeGroup(isA(VolumeGroup.class), eq(modelInfo), eq(service),
1217                 eq("vnfModelCustomizationUUID"));
1218         org.onap.aai.domain.yang.GenericVnf aaiGenericVnf = new org.onap.aai.domain.yang.GenericVnf();
1219         aaiGenericVnf.setModelCustomizationId("vnfModelCustomizationUUID");
1220         doReturn(aaiGenericVnf).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
1221
1222         lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, "volumeGroupId");
1223         BBInputSetupParameter parameter = new BBInputSetupParameter.Builder().setRequestId(REQUEST_ID)
1224                 .setModelInfo(modelInfo).setService(service).setBbName(bbName).setServiceInstance(serviceInstance)
1225                 .setLookupKeyMap(lookupKeyMap).setResourceId(resourceId).setRequestDetails(requestDetails)
1226                 .setInstanceName(reqInfo.getInstanceName()).setServiceModel(serviceModel).build();
1227         SPY_bbInputSetup.populateVolumeGroup(parameter);
1228         verify(SPY_bbInputSetup, times(1)).mapCatalogVolumeGroup(eq(vg), isA(ModelInfo.class), eq(service),
1229                 eq("vnfModelCustomizationUUID"));
1230         vnf.getVolumeGroups().clear();
1231         SPY_bbInputSetup.populateVolumeGroup(parameter);
1232         verify(SPY_bbInputSetup, times(1)).mapCatalogVolumeGroup(vnf.getVolumeGroups().get(0), modelInfo, service,
1233                 "vnfModelCustomizationUUID");
1234     }
1235
1236     @Test
1237     public void testMapCatalogVolumeGroup() {
1238         VolumeGroup volumeGroup = new VolumeGroup();
1239         RequestDetails requestDetails = new RequestDetails();
1240         ModelInfo modelInfo = new ModelInfo();
1241         modelInfo.setModelCustomizationUuid("modelCustomizationUUID");
1242         requestDetails.setModelInfo(modelInfo);
1243         Service service = new Service();
1244         VnfResourceCustomization resourceCust = new VnfResourceCustomization();
1245         resourceCust.setModelCustomizationUUID("vnfModelCustomizationUUID");
1246         service.getVnfCustomizations().add(resourceCust);
1247         VfModuleCustomization vfResourceCust = new VfModuleCustomization();
1248         vfResourceCust.setModelCustomizationUUID("modelCustomizationUUID");
1249         ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
1250         resourceCust.getVfModuleCustomizations().add(vfResourceCust);
1251
1252         doReturn(modelInfoVfModule).when(bbInputSetupMapperLayer).mapCatalogVfModuleToVfModule(vfResourceCust);
1253
1254         SPY_bbInputSetup.mapCatalogVolumeGroup(volumeGroup, modelInfo, service, "vnfModelCustomizationUUID");
1255
1256         assertEquals(modelInfoVfModule, volumeGroup.getModelInfoVfModule());
1257     }
1258
1259     @Test
1260     public void testPopulateL3Network() throws JsonParseException, JsonMappingException, IOException {
1261         String instanceName = "networkName";
1262         ModelInfo modelInfo = new ModelInfo();
1263         modelInfo.setModelType(ModelType.network);
1264
1265         ServiceInstance serviceInstance = new ServiceInstance();
1266         L3Network network = new L3Network();
1267         network.setNetworkId("networkId");
1268         network.setNetworkName("networkName");
1269         serviceInstance.getNetworks().add(network);
1270         String resourceId = "123";
1271         // Mock service
1272         Service service = mapper.readValue(
1273                 new File(RESOURCE_PATH + "CatalogDBService_getServiceInstanceNOAAIInput.json"), Service.class);
1274         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
1275         lookupKeyMap.put(ResourceKey.NETWORK_ID, "networkId");
1276         String bbName = AssignFlows.NETWORK_A_LA_CARTE.toString();
1277
1278         doNothing().when(SPY_bbInputSetup).mapCatalogNetwork(network, modelInfo, service);
1279
1280         BBInputSetupParameter parameter = new BBInputSetupParameter.Builder().setRequestId(REQUEST_ID)
1281                 .setInstanceName(instanceName).setModelInfo(modelInfo).setService(service).setBbName(bbName)
1282                 .setServiceInstance(serviceInstance).setLookupKeyMap(lookupKeyMap).setResourceId(resourceId).build();
1283         SPY_bbInputSetup.populateL3Network(parameter);
1284
1285         lookupKeyMap.put(ResourceKey.NETWORK_ID, null);
1286
1287         SPY_bbInputSetup.populateL3Network(parameter);
1288         verify(SPY_bbInputSetup, times(1)).mapCatalogNetwork(network, modelInfo, service);
1289
1290         instanceName = "networkName2";
1291         L3Network network2 = SPY_bbInputSetup.createNetwork(lookupKeyMap, instanceName, resourceId, null, parameter);
1292         SPY_bbInputSetup.populateL3Network(parameter);
1293         verify(SPY_bbInputSetup, times(2)).mapCatalogNetwork(network2, modelInfo, service);
1294     }
1295
1296     @Test
1297     public void testMapCatalogNetwork() {
1298         ModelInfoNetwork modelInfoNetwork = new ModelInfoNetwork();
1299         L3Network network = new L3Network();
1300
1301         RequestDetails requestDetails = new RequestDetails();
1302         ModelInfo modelInfo = new ModelInfo();
1303         modelInfo.setModelCustomizationUuid("modelCustomizationUUID");
1304         requestDetails.setModelInfo(modelInfo);
1305         Service service = new Service();
1306         NetworkResourceCustomization resourceCust = new NetworkResourceCustomization();
1307         resourceCust.setModelCustomizationUUID("modelCustomizationUUID");
1308         service.setNetworkCustomizations(Arrays.asList(new NetworkResourceCustomization[] {resourceCust}));
1309
1310         doReturn(modelInfoNetwork).when(bbInputSetupMapperLayer).mapCatalogNetworkToNetwork(resourceCust);
1311
1312         SPY_bbInputSetup.mapCatalogNetwork(network, modelInfo, service);
1313
1314         assertEquals(modelInfoNetwork, network.getModelInfoNetwork());
1315     }
1316
1317     @Test
1318     public void testPopulateConfiguration() throws JsonParseException, JsonMappingException, IOException {
1319         String instanceName = "configurationName";
1320         ModelInfo modelInfo = new ModelInfo();
1321         modelInfo.setModelCustomizationUuid("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
1322
1323         ServiceInstance serviceInstance = new ServiceInstance();
1324         Configuration configuration = new Configuration();
1325         configuration.setConfigurationId("configurationId");
1326         configuration.setConfigurationName("configurationName");
1327         serviceInstance.getConfigurations().add(configuration);
1328         String resourceId = "configurationId";
1329         String vnfcName = "vnfcName";
1330         // Mock service
1331         Service service = mapper.readValue(
1332                 new File(RESOURCE_PATH + "CatalogDBService_getServiceInstanceNOAAIInput.json"), Service.class);
1333         ConfigurationResourceCustomization configurationCust = new ConfigurationResourceCustomization();
1334         configurationCust.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
1335         service.getConfigurationCustomizations().add(configurationCust);
1336         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
1337         lookupKeyMap.put(ResourceKey.CONFIGURATION_ID, "configurationId");
1338         String bbName = AssignFlows.FABRIC_CONFIGURATION.toString();
1339         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
1340         configResourceKeys.setVnfcName(vnfcName);
1341         Vnfc vnfc = new Vnfc();
1342         vnfc.setVnfcName(vnfcName);
1343         RequestDetails requestDetails = new RequestDetails();
1344         doNothing().when(SPY_bbInputSetup).mapCatalogConfiguration(configuration, modelInfo, service,
1345                 configResourceKeys);
1346         doReturn(vnfc).when(SPY_bbInputSetup).getVnfcToConfiguration(vnfcName);
1347         BBInputSetupParameter parameter = new BBInputSetupParameter.Builder().setRequestId(REQUEST_ID)
1348                 .setModelInfo(modelInfo).setService(service).setBbName(bbName).setServiceInstance(serviceInstance)
1349                 .setLookupKeyMap(lookupKeyMap).setResourceId(resourceId).setInstanceName(instanceName)
1350                 .setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails).build();
1351         SPY_bbInputSetup.populateConfiguration(parameter);
1352         verify(SPY_bbInputSetup, times(1)).mapCatalogConfiguration(configuration, modelInfo, service,
1353                 configResourceKeys);
1354
1355         lookupKeyMap.put(ResourceKey.CONFIGURATION_ID, null);
1356
1357         SPY_bbInputSetup.populateConfiguration(parameter);
1358         verify(SPY_bbInputSetup, times(2)).mapCatalogConfiguration(configuration, modelInfo, service,
1359                 configResourceKeys);
1360
1361         instanceName = "configurationName2";
1362         resourceId = "resourceId2";
1363         lookupKeyMap.put(ResourceKey.CONFIGURATION_ID, "configurationId2");
1364         parameter.setInstanceName(instanceName);
1365         parameter.setResourceId(resourceId);
1366         Configuration configuration2 = SPY_bbInputSetup.createConfiguration(lookupKeyMap, instanceName, resourceId);
1367         doReturn(configuration2).when(SPY_bbInputSetup).createConfiguration(lookupKeyMap, instanceName, resourceId);
1368         doNothing().when(SPY_bbInputSetup).mapCatalogConfiguration(configuration2, modelInfo, service,
1369                 configResourceKeys);
1370         SPY_bbInputSetup.populateConfiguration(parameter);
1371         verify(SPY_bbInputSetup, times(1)).mapCatalogConfiguration(configuration2, modelInfo, service,
1372                 configResourceKeys);
1373     }
1374
1375     @Test
1376     public void testMapCatalogConfiguration() {
1377         ModelInfoNetwork modelInfoNetwork = new ModelInfoNetwork();
1378         L3Network network = new L3Network();
1379
1380         RequestDetails requestDetails = new RequestDetails();
1381         ModelInfo modelInfo = new ModelInfo();
1382         modelInfo.setModelCustomizationUuid("modelCustomizationUUID");
1383         requestDetails.setModelInfo(modelInfo);
1384         Service service = new Service();
1385         NetworkResourceCustomization resourceCust = new NetworkResourceCustomization();
1386         resourceCust.setModelCustomizationUUID("modelCustomizationUUID");
1387         service.setNetworkCustomizations(Arrays.asList(new NetworkResourceCustomization[] {resourceCust}));
1388
1389         doReturn(modelInfoNetwork).when(bbInputSetupMapperLayer).mapCatalogNetworkToNetwork(resourceCust);
1390
1391         SPY_bbInputSetup.mapCatalogNetwork(network, modelInfo, service);
1392
1393         assertEquals(modelInfoNetwork, network.getModelInfoNetwork());
1394     }
1395
1396     @Test
1397     public void testPopulateFabricConfiguration() throws JsonParseException, JsonMappingException, IOException {
1398         String instanceName = "configurationName";
1399         ModelInfo modelInfo = new ModelInfo();
1400         modelInfo.setModelCustomizationUuid("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
1401
1402         ServiceInstance serviceInstance = new ServiceInstance();
1403         Configuration configuration = new Configuration();
1404         configuration.setConfigurationId("configurationId");
1405         configuration.setConfigurationName("configurationName");
1406         configuration.setConfigurationSubType("Fabric Config");
1407         serviceInstance.getConfigurations().add(configuration);
1408         String resourceId = "configurationId";
1409         String vnfcName = "vnfcName";
1410         // Mock service
1411         Service service = mapper.readValue(
1412                 new File(RESOURCE_PATH + "CatalogDBService_getServiceInstanceNOAAIInput.json"), Service.class);
1413         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
1414         lookupKeyMap.put(ResourceKey.CONFIGURATION_ID, "configurationId");
1415         String bbName = AssignFlows.FABRIC_CONFIGURATION.toString();
1416         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
1417         configResourceKeys.setVnfcName(vnfcName);
1418         Vnfc vnfc = new Vnfc();
1419         vnfc.setVnfcName(vnfcName);
1420         RequestDetails requestDetails = new RequestDetails();
1421
1422         CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
1423                 new CvnfcConfigurationCustomization();
1424         ConfigurationResource configurationResource = new ConfigurationResource();
1425         configurationResource.setModelUUID("modelUUID");
1426         configurationResource.setModelInvariantUUID("modelInvariantUUID");
1427         vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
1428
1429         doReturn(null).when(SPY_bbInputSetup).findConfigurationResourceCustomization(modelInfo, service);
1430         doReturn(vnfc).when(SPY_bbInputSetup).getVnfcToConfiguration(vnfcName);
1431         BBInputSetupParameter parameter = new BBInputSetupParameter.Builder().setRequestId(REQUEST_ID)
1432                 .setModelInfo(modelInfo).setService(service).setBbName(bbName).setServiceInstance(serviceInstance)
1433                 .setLookupKeyMap(lookupKeyMap).setResourceId(resourceId).setInstanceName(instanceName)
1434                 .setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails).build();
1435         SPY_bbInputSetup.populateConfiguration(parameter);
1436         verify(SPY_bbInputSetup, times(1)).mapCatalogConfiguration(configuration, modelInfo, service,
1437                 configResourceKeys);
1438     }
1439
1440     @Test
1441     public void testPopulateGenericVnf() throws JsonParseException, JsonMappingException, IOException {
1442         org.onap.so.serviceinstancebeans.Platform platform = new org.onap.so.serviceinstancebeans.Platform();
1443         org.onap.so.serviceinstancebeans.LineOfBusiness lineOfBusiness =
1444                 new org.onap.so.serviceinstancebeans.LineOfBusiness();
1445         String instanceName = "vnfName";
1446         ModelInfo modelInfo = new ModelInfo();
1447         modelInfo.setModelType(ModelType.vnf);
1448         ServiceInstance serviceInstance = new ServiceInstance();
1449         GenericVnf vnf = new GenericVnf();
1450         vnf.setVnfId("genericVnfId");
1451         vnf.setVnfName("vnfName");
1452         serviceInstance.getVnfs().add(vnf);
1453         String vnfType = "vnfType";
1454         String applicationId = "applicationId";
1455         RequestDetails requestDetails =
1456                 mapper.readValue(new File(RESOURCE_PATH + "RequestDetails_CreateVnf.json"), RequestDetails.class);
1457
1458         Service service = mapper.readValue(
1459                 new File(RESOURCE_PATH + "CatalogDBService_getServiceInstanceNOAAIInput.json"), Service.class);
1460         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
1461         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "genericVnfId");
1462         String bbName = AssignFlows.VNF.toString();
1463
1464         Platform expectedPlatform = new Platform();
1465         LineOfBusiness expectedLineOfBusiness = new LineOfBusiness();
1466         String resourceId = "123";
1467         doReturn(expectedPlatform).when(bbInputSetupMapperLayer).mapRequestPlatform(platform);
1468         doReturn(expectedLineOfBusiness).when(bbInputSetupMapperLayer).mapRequestLineOfBusiness(lineOfBusiness);
1469         org.onap.aai.domain.yang.GenericVnf vnfAAI = new org.onap.aai.domain.yang.GenericVnf();
1470         vnfAAI.setModelCustomizationId("modelCustId");
1471         doReturn(vnfAAI).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
1472         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(vnf, modelInfo, service);
1473         org.onap.aai.domain.yang.InstanceGroup instanceGroupAAI = new org.onap.aai.domain.yang.InstanceGroup();
1474         doReturn(instanceGroupAAI).when(SPY_bbInputSetupUtils).getAAIInstanceGroup(any());
1475         org.onap.so.db.catalog.beans.InstanceGroup catalogInstanceGroup =
1476                 new org.onap.so.db.catalog.beans.InstanceGroup();
1477         doReturn(catalogInstanceGroup).when(SPY_bbInputSetupUtils).getCatalogInstanceGroup(any());
1478         BBInputSetupParameter parameter = new BBInputSetupParameter.Builder().setRequestId(REQUEST_ID)
1479                 .setModelInfo(modelInfo).setInstanceName(instanceName).setPlatform(platform)
1480                 .setLineOfBusiness(lineOfBusiness).setService(service).setBbName(bbName)
1481                 .setServiceInstance(serviceInstance).setLookupKeyMap(lookupKeyMap)
1482                 .setRelatedInstanceList(requestDetails.getRelatedInstanceList()).setResourceId(resourceId)
1483                 .setVnfType(vnfType).setProductFamilyId(requestDetails.getRequestInfo().getProductFamilyId()).build();
1484         SPY_bbInputSetup.populateGenericVnf(parameter);
1485
1486         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, null);
1487
1488         SPY_bbInputSetup.populateGenericVnf(parameter);
1489         verify(SPY_bbInputSetup, times(1)).mapCatalogVnf(vnf, modelInfo, service);
1490
1491         instanceName = "vnfName2";
1492         GenericVnf vnf2 = SPY_bbInputSetup.createGenericVnf(lookupKeyMap, instanceName, platform, lineOfBusiness,
1493                 resourceId, vnfType, null, requestDetails.getRequestInfo().getProductFamilyId(), applicationId);
1494
1495         doNothing().when(SPY_bbInputSetup).mapNetworkCollectionInstanceGroup(vnf2, "{instanceGroupId}");
1496         doNothing().when(SPY_bbInputSetup).mapVnfcCollectionInstanceGroup(vnf2, modelInfo, service);
1497
1498         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "genericVnfId2");
1499
1500         SPY_bbInputSetup.populateGenericVnf(parameter);
1501         verify(SPY_bbInputSetup, times(2)).mapCatalogVnf(vnf2, modelInfo, service);
1502         verify(SPY_bbInputSetup, times(2)).mapNetworkCollectionInstanceGroup(vnf2, "{instanceGroupId}");
1503         verify(SPY_bbInputSetup, times(2)).mapVnfcCollectionInstanceGroup(vnf2, modelInfo, service);
1504
1505         assertEquals("modelCustId", modelInfo.getModelCustomizationUuid());
1506
1507     }
1508
1509     @Test
1510     public void testPopulateGenericVnfReplace() throws JsonParseException, JsonMappingException, IOException {
1511         org.onap.so.serviceinstancebeans.Platform platform = new org.onap.so.serviceinstancebeans.Platform();
1512         org.onap.so.serviceinstancebeans.LineOfBusiness lineOfBusiness =
1513                 new org.onap.so.serviceinstancebeans.LineOfBusiness();
1514         String instanceName = "vnfName";
1515         ModelInfo modelInfo = new ModelInfo();
1516         modelInfo.setModelType(ModelType.vnf);
1517         ServiceInstance serviceInstance = new ServiceInstance();
1518         GenericVnf vnf = new GenericVnf();
1519         vnf.setVnfId("genericVnfId");
1520         vnf.setVnfName("vnfName");
1521         serviceInstance.getVnfs().add(vnf);
1522         String vnfType = "vnfType";
1523         String applicationId = "applicationId";
1524         RequestDetails requestDetails =
1525                 mapper.readValue(new File(RESOURCE_PATH + "RequestDetails_CreateVnf.json"), RequestDetails.class);
1526
1527         Service service = mapper.readValue(
1528                 new File(RESOURCE_PATH + "CatalogDBService_getServiceInstanceNOAAIInput.json"), Service.class);
1529         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
1530         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "genericVnfId");
1531         String bbName = AssignFlows.VNF.toString();
1532
1533         String resourceId = "123";
1534         org.onap.aai.domain.yang.GenericVnf vnfAAI = new org.onap.aai.domain.yang.GenericVnf();
1535         vnfAAI.setModelCustomizationId("modelCustId");
1536         doReturn(vnfAAI).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
1537         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(vnf, modelInfo, service);
1538         org.onap.aai.domain.yang.InstanceGroup instanceGroupAAI = new org.onap.aai.domain.yang.InstanceGroup();
1539         doReturn(instanceGroupAAI).when(SPY_bbInputSetupUtils).getAAIInstanceGroup(any());
1540         org.onap.so.db.catalog.beans.InstanceGroup catalogInstanceGroup =
1541                 new org.onap.so.db.catalog.beans.InstanceGroup();
1542         doReturn(catalogInstanceGroup).when(SPY_bbInputSetupUtils).getCatalogInstanceGroup(any());
1543
1544         BBInputSetupParameter parameter = new BBInputSetupParameter.Builder().setModelInfo(modelInfo)
1545                 .setInstanceName(instanceName).setPlatform(platform).setLineOfBusiness(lineOfBusiness)
1546                 .setService(service).setBbName(bbName).setServiceInstance(serviceInstance).setLookupKeyMap(lookupKeyMap)
1547                 .setRelatedInstanceList(requestDetails.getRelatedInstanceList()).setResourceId(resourceId)
1548                 .setVnfType(vnfType).setProductFamilyId(requestDetails.getRequestInfo().getProductFamilyId())
1549                 .setApplicationId(applicationId).setIsReplace(true).build();
1550
1551         SPY_bbInputSetup.populateGenericVnf(parameter);
1552
1553         assertEquals("my-test-uuid", modelInfo.getModelCustomizationUuid());
1554
1555     }
1556
1557     @Test
1558     public void testMapVnfcCollectionInstanceGroup() {
1559         VnfResourceCustomization vnfResourceCust = Mockito.mock(VnfResourceCustomization.class);
1560         GenericVnf genericVnf = new GenericVnf();
1561         ModelInfo modelInfo = Mockito.mock(ModelInfo.class);
1562         Service service = Mockito.mock(Service.class);
1563         org.onap.so.db.catalog.beans.InstanceGroup instanceGroup = new org.onap.so.db.catalog.beans.InstanceGroup();
1564         instanceGroup.setModelUUID("modelUUID");
1565         List<VnfcInstanceGroupCustomization> vnfcInstanceGroups = new ArrayList<>();
1566         VnfcInstanceGroupCustomization vnfcInstanceGroupCust = new VnfcInstanceGroupCustomization();
1567         vnfcInstanceGroupCust.setInstanceGroup(instanceGroup);
1568         vnfcInstanceGroupCust.setFunction("function");
1569         vnfcInstanceGroupCust.setDescription("description");
1570         vnfcInstanceGroups.add(vnfcInstanceGroupCust);
1571
1572         ModelInfoInstanceGroup modelInfoInstanceGroup = new ModelInfoInstanceGroup();
1573         modelInfoInstanceGroup.setModelUUID("modelUUID");
1574         doReturn(vnfResourceCust).when(SPY_bbInputSetup).getVnfResourceCustomizationFromService(modelInfo, service);
1575         doReturn(vnfcInstanceGroups).when(vnfResourceCust).getVnfcInstanceGroupCustomizations();
1576         doReturn(instanceGroup).when(SPY_bbInputSetupUtils).getCatalogInstanceGroup("modelUUID");
1577         doReturn(modelInfoInstanceGroup).when(bbInputSetupMapperLayer).mapCatalogInstanceGroupToInstanceGroup(null,
1578                 instanceGroup);
1579
1580         SPY_bbInputSetup.mapVnfcCollectionInstanceGroup(genericVnf, modelInfo, service);
1581
1582         assertEquals("Instance Group was created", true, genericVnf.getInstanceGroups().size() == 1);
1583     }
1584
1585     @Test
1586     public void testPopulateGenericVnfWhereVnfTypeIsNull()
1587             throws JsonParseException, JsonMappingException, IOException {
1588         org.onap.so.serviceinstancebeans.Platform platform = new org.onap.so.serviceinstancebeans.Platform();
1589         org.onap.so.serviceinstancebeans.LineOfBusiness lineOfBusiness =
1590                 new org.onap.so.serviceinstancebeans.LineOfBusiness();
1591         String instanceName = "vnfName";
1592         ModelInfo modelInfo = new ModelInfo();
1593         modelInfo.setModelType(ModelType.vnf);
1594
1595         ServiceInstance serviceInstance = new ServiceInstance();
1596         GenericVnf vnf = new GenericVnf();
1597         vnf.setVnfId("genericVnfId");
1598         vnf.setVnfName("vnfName");
1599         serviceInstance.getVnfs().add(vnf);
1600         String vnfType = null;
1601         RequestDetails requestDetails =
1602                 mapper.readValue(new File(RESOURCE_PATH + "RequestDetails_CreateVnf.json"), RequestDetails.class);
1603
1604         Service service = mapper.readValue(
1605                 new File(RESOURCE_PATH + "CatalogDBService_getServiceInstanceNOAAIInput.json"), Service.class);
1606         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
1607         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "genericVnfId");
1608         String bbName = AssignFlows.VNF.toString();
1609
1610         Platform expectedPlatform = new Platform();
1611         LineOfBusiness expectedLineOfBusiness = new LineOfBusiness();
1612         String resourceId = "123";
1613         String applicationId = "applicationId";
1614         doReturn(expectedPlatform).when(bbInputSetupMapperLayer).mapRequestPlatform(platform);
1615         doReturn(expectedLineOfBusiness).when(bbInputSetupMapperLayer).mapRequestLineOfBusiness(lineOfBusiness);
1616         org.onap.aai.domain.yang.GenericVnf vnfAAI = new org.onap.aai.domain.yang.GenericVnf();
1617         vnfAAI.setModelCustomizationId("modelCustId");
1618         doReturn(vnfAAI).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
1619         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(vnf, modelInfo, service);
1620         org.onap.aai.domain.yang.InstanceGroup instanceGroupAAI = new org.onap.aai.domain.yang.InstanceGroup();
1621         doReturn(instanceGroupAAI).when(SPY_bbInputSetupUtils).getAAIInstanceGroup(any());
1622         org.onap.so.db.catalog.beans.InstanceGroup catalogInstanceGroup =
1623                 new org.onap.so.db.catalog.beans.InstanceGroup();
1624         doReturn(catalogInstanceGroup).when(SPY_bbInputSetupUtils).getCatalogInstanceGroup(any());
1625         BBInputSetupParameter parameter = new BBInputSetupParameter.Builder().setRequestId(REQUEST_ID)
1626                 .setModelInfo(modelInfo).setInstanceName(instanceName).setPlatform(platform)
1627                 .setLineOfBusiness(lineOfBusiness).setService(service).setBbName(bbName)
1628                 .setServiceInstance(serviceInstance).setLookupKeyMap(lookupKeyMap)
1629                 .setRelatedInstanceList(requestDetails.getRelatedInstanceList()).setResourceId(resourceId)
1630                 .setVnfType(vnfType).setProductFamilyId(requestDetails.getRequestInfo().getProductFamilyId()).build();
1631         SPY_bbInputSetup.populateGenericVnf(parameter);
1632
1633         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, null);
1634
1635         SPY_bbInputSetup.populateGenericVnf(parameter);
1636         verify(SPY_bbInputSetup, times(1)).mapCatalogVnf(vnf, modelInfo, service);
1637
1638         instanceName = "vnfName2";
1639         GenericVnf vnf2 = SPY_bbInputSetup.createGenericVnf(lookupKeyMap, instanceName, platform, lineOfBusiness,
1640                 resourceId, vnfType, null, requestDetails.getRequestInfo().getProductFamilyId(), applicationId);
1641
1642         org.onap.aai.domain.yang.GenericVnf vnf2AAI = new org.onap.aai.domain.yang.GenericVnf();
1643         vnfAAI.setModelCustomizationId("modelCustId2");
1644         doReturn(vnf2AAI).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf2.getVnfId());
1645         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(vnf2, modelInfo, service);
1646         doNothing().when(SPY_bbInputSetup).mapNetworkCollectionInstanceGroup(vnf2, "{instanceGroupId}");
1647         SPY_bbInputSetup.populateGenericVnf(parameter);
1648         verify(SPY_bbInputSetup, times(2)).mapCatalogVnf(vnf2, modelInfo, service);
1649         verify(SPY_bbInputSetup, times(2)).mapNetworkCollectionInstanceGroup(vnf2, "{instanceGroupId}");
1650         verify(SPY_bbInputSetup, times(1)).mapVnfcCollectionInstanceGroup(vnf2, modelInfo, service);
1651     }
1652
1653     @Test
1654     public void testMapCatalogVnf() {
1655         ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
1656         GenericVnf genericVnf = new GenericVnf();
1657         RequestDetails requestDetails = new RequestDetails();
1658         ModelInfo modelInfo = new ModelInfo();
1659         modelInfo.setModelCustomizationUuid("modelCustomizationUUID");
1660         requestDetails.setModelInfo(modelInfo);
1661         Service service = new Service();
1662         VnfResourceCustomization resourceCust = new VnfResourceCustomization();
1663         resourceCust.setModelCustomizationUUID("vnfModelCustomizationUUID");
1664         service.getVnfCustomizations().add(resourceCust);
1665         resourceCust.setModelCustomizationUUID("modelCustomizationUUID");
1666
1667         doReturn(modelInfoGenericVnf).when(bbInputSetupMapperLayer).mapCatalogVnfToVnf(resourceCust);
1668
1669         SPY_bbInputSetup.mapCatalogVnf(genericVnf, modelInfo, service);
1670
1671         assertEquals(modelInfoGenericVnf, genericVnf.getModelInfoGenericVnf());
1672     }
1673
1674     @Test
1675     public void testMapCatalogCollectionAndInstanceGroup() {
1676         ModelInfoCollection modelInfoCollection = new ModelInfoCollection();
1677         modelInfoCollection.setCollectionFunction("collectionFunction");
1678         modelInfoCollection.setCollectionRole("collectionRole");
1679         modelInfoCollection.setCollectionType("collectionType");
1680         modelInfoCollection.setDescription("description");
1681         modelInfoCollection.setModelInvariantUUID("modelInvariantUUID");
1682         modelInfoCollection.setQuantity(0);
1683
1684         ModelInfoInstanceGroup modelInfoInstanceGroup = new ModelInfoInstanceGroup();
1685         modelInfoInstanceGroup.setFunction("function");
1686         modelInfoInstanceGroup.setInstanceGroupRole("instanceGroupRole");
1687         modelInfoInstanceGroup.setModelInvariantUUID("modelInvariantUUID");
1688         modelInfoInstanceGroup.setModelUUID("modelUUID");
1689         modelInfoInstanceGroup.setType("VNFC");
1690         modelInfoInstanceGroup.setDescription("description");
1691
1692         InstanceGroup instanceGroup = new InstanceGroup();
1693         Collection collection = new Collection();
1694         collection.setInstanceGroup(instanceGroup);
1695
1696         CollectionResource collectionResource = new CollectionResource();
1697         org.onap.so.db.catalog.beans.InstanceGroup catalogInstanceGroup =
1698                 new org.onap.so.db.catalog.beans.InstanceGroup();
1699         collectionResource.setToscaNodeType("NetworkCollection");
1700         collectionResource.setInstanceGroup(catalogInstanceGroup);
1701
1702         CollectionResourceCustomization collectionCust = new NetworkCollectionResourceCustomization();
1703         collectionCust.setModelCustomizationUUID("modelCustomizationUUID");
1704         collectionCust.setCollectionResource(collectionResource);
1705
1706         Service service = new Service();
1707         service.getCollectionResourceCustomizations().add(collectionCust);
1708         ServiceInstance serviceInstance = new ServiceInstance();
1709         serviceInstance.setCollection(collection);
1710
1711         List<CollectionResourceInstanceGroupCustomization> instanceGroupCustList = new ArrayList<>();
1712         CollectionResourceInstanceGroupCustomization instanceGroupCust =
1713                 new CollectionResourceInstanceGroupCustomization();
1714         instanceGroupCust.setFunction("function");
1715         instanceGroupCust.setDescription("description");
1716
1717         doReturn(modelInfoCollection).when(bbInputSetupMapperLayer).mapCatalogCollectionToCollection(collectionCust,
1718                 collectionResource);
1719
1720         doReturn(modelInfoInstanceGroup).when(bbInputSetupMapperLayer)
1721                 .mapCatalogInstanceGroupToInstanceGroup(collectionCust, catalogInstanceGroup);
1722
1723         SPY_bbInputSetup.mapCatalogCollection(service, serviceInstance.getCollection(), "modelCustomizationUUID");
1724         SPY_bbInputSetup.mapCatalogNetworkCollectionInstanceGroup(service,
1725                 serviceInstance.getCollection().getInstanceGroup(), collectionCust.getModelCustomizationUUID());
1726
1727         assertThat(collection.getModelInfoCollection(), sameBeanAs(modelInfoCollection));
1728         assertThat(instanceGroup.getModelInfoInstanceGroup(), sameBeanAs(modelInfoInstanceGroup));
1729     }
1730
1731     @Test
1732     public void testAddRelationshipsToSI() throws Exception {
1733         ServiceInstance serviceInstance = new ServiceInstance();
1734         org.onap.aai.domain.yang.ServiceInstance serviceInstanceAAI = new org.onap.aai.domain.yang.ServiceInstance();
1735         serviceInstanceAAI.setServiceInstanceId("serviceInstanceId");
1736
1737         org.onap.aai.domain.yang.RelationshipList relationshipList = new org.onap.aai.domain.yang.RelationshipList();
1738         org.onap.aai.domain.yang.Relationship relationship = new org.onap.aai.domain.yang.Relationship();
1739         relationshipList.getRelationship().add(relationship);
1740         serviceInstanceAAI.setRelationshipList(relationshipList);
1741
1742         Map<String, String> uriKeys = new HashMap<>();
1743         uriKeys.put("global-customer-id", "globalCustomerId");
1744         uriKeys.put("service-type", "serviceType");
1745
1746
1747         doNothing().when(SPY_bbInputSetup).mapProject(any(), eq(serviceInstance));
1748         doNothing().when(SPY_bbInputSetup).mapOwningEntity(any(), eq(serviceInstance));
1749         doNothing().when(SPY_bbInputSetup).mapL3Networks(any(), eq(serviceInstance.getNetworks()));
1750         doNothing().when(SPY_bbInputSetup).mapGenericVnfs(any(), eq(serviceInstance.getVnfs()));
1751         doNothing().when(SPY_bbInputSetup).mapCollection(any(), eq(serviceInstance));
1752
1753         SPY_bbInputSetup.addRelationshipsToSI(serviceInstanceAAI, serviceInstance);
1754
1755         verify(SPY_bbInputSetup, times(1)).mapProject(any(), eq(serviceInstance));
1756         verify(SPY_bbInputSetup, times(1)).mapOwningEntity(any(), eq(serviceInstance));
1757         verify(SPY_bbInputSetup, times(1)).mapL3Networks(any(), eq(serviceInstance.getNetworks()));
1758         verify(SPY_bbInputSetup, times(1)).mapGenericVnfs(any(), eq(serviceInstance.getVnfs()));
1759         verify(SPY_bbInputSetup, times(1)).mapCollection(any(), eq(serviceInstance));
1760         verify(SPY_bbInputSetup, times(1)).mapConfigurations(any(), eq(serviceInstance.getConfigurations()));
1761     }
1762
1763     @Test
1764     public void testMapConfigurations() throws JsonProcessingException {
1765         org.onap.aai.domain.yang.Configuration expectedAAI = new org.onap.aai.domain.yang.Configuration();
1766         org.onap.aai.domain.yang.RelationshipList relationshipList = new org.onap.aai.domain.yang.RelationshipList();
1767         org.onap.aai.domain.yang.Relationship relationship = new org.onap.aai.domain.yang.Relationship();
1768         relationshipList.getRelationship().add(relationship);
1769         expectedAAI.setRelationshipList(relationshipList);
1770
1771         Configuration expected = new Configuration();
1772         AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, "configurationId");
1773         AAIResultWrapper configurationWrapper =
1774                 new AAIResultWrapper(new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
1775
1776         doReturn(configurationWrapper).when(SPY_bbInputSetupUtils).getAAIResourceDepthOne(aaiResourceUri);
1777         doReturn(expected).when(bbInputSetupMapperLayer)
1778                 .mapAAIConfiguration(isA(org.onap.aai.domain.yang.Configuration.class));
1779
1780         List<Configuration> configurations = new ArrayList<>();
1781
1782         SPY_bbInputSetup.mapConfigurations(Arrays.asList(new AAIResourceUri[] {aaiResourceUri}), configurations);
1783
1784         assertEquals(expected, configurations.get(0));
1785     }
1786
1787     @Test
1788     public void testMapGenericVnfs() throws JsonProcessingException {
1789         org.onap.aai.domain.yang.GenericVnf expectedAAI = new org.onap.aai.domain.yang.GenericVnf();
1790         org.onap.aai.domain.yang.RelationshipList relationshipList = new org.onap.aai.domain.yang.RelationshipList();
1791         org.onap.aai.domain.yang.Relationship relationship = new org.onap.aai.domain.yang.Relationship();
1792         relationshipList.getRelationship().add(relationship);
1793         expectedAAI.setRelationshipList(relationshipList);
1794
1795         GenericVnf expected = new GenericVnf();
1796         AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, "vnfId");
1797         AAIResultWrapper vnfWrapper =
1798                 new AAIResultWrapper(new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
1799
1800         doReturn(vnfWrapper).when(SPY_bbInputSetupUtils).getAAIResourceDepthOne(aaiResourceUri);
1801         doReturn(expected).when(bbInputSetupMapperLayer)
1802                 .mapAAIGenericVnfIntoGenericVnf(isA(org.onap.aai.domain.yang.GenericVnf.class));
1803         doNothing().when(SPY_bbInputSetup).mapPlatform(any(), eq(expected));
1804         doNothing().when(SPY_bbInputSetup).mapLineOfBusiness(any(), eq(expected));
1805         doReturn(new ArrayList<>()).when(SPY_bbInputSetup).mapVolumeGroups(any());
1806
1807         List<GenericVnf> genericVnfs = new ArrayList<>();
1808
1809         SPY_bbInputSetup.mapGenericVnfs(Arrays.asList(new AAIResourceUri[] {aaiResourceUri}), genericVnfs);
1810
1811         assertEquals(expected, genericVnfs.get(0));
1812         verify(SPY_bbInputSetup, times(1)).mapPlatform(any(), eq(expected));
1813         verify(SPY_bbInputSetup, times(1)).mapLineOfBusiness(any(), eq(expected));
1814         verify(SPY_bbInputSetup, times(1)).mapVolumeGroups(any());
1815     }
1816
1817     @Test
1818     public void testMapVolumeGroups() throws JsonProcessingException {
1819         org.onap.aai.domain.yang.VolumeGroup expectedAAI = new org.onap.aai.domain.yang.VolumeGroup();
1820
1821         VolumeGroup expected = new VolumeGroup();
1822         AAIResultWrapper vnfWrapper =
1823                 new AAIResultWrapper(new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
1824
1825         doReturn(expected).when(bbInputSetupMapperLayer)
1826                 .mapAAIVolumeGroup(isA(org.onap.aai.domain.yang.VolumeGroup.class));
1827
1828         List<VolumeGroup> volumeGroupsList =
1829                 SPY_bbInputSetup.mapVolumeGroups(Arrays.asList(new AAIResultWrapper[] {vnfWrapper}));
1830
1831         assertEquals(expected, volumeGroupsList.get(0));
1832     }
1833
1834     @Test
1835     public void testMapLineOfBusiness() throws JsonProcessingException {
1836         org.onap.aai.domain.yang.LineOfBusiness expectedAAI = new org.onap.aai.domain.yang.LineOfBusiness();
1837
1838         LineOfBusiness expected = new LineOfBusiness();
1839         AAIResultWrapper vnfWrapper =
1840                 new AAIResultWrapper(new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
1841
1842         doReturn(expected).when(bbInputSetupMapperLayer)
1843                 .mapAAILineOfBusiness(isA(org.onap.aai.domain.yang.LineOfBusiness.class));
1844
1845         GenericVnf vnf = new GenericVnf();
1846
1847         SPY_bbInputSetup.mapLineOfBusiness(Arrays.asList(new AAIResultWrapper[] {vnfWrapper}), vnf);
1848
1849         assertEquals(expected, vnf.getLineOfBusiness());
1850     }
1851
1852     @Test
1853     public void testMapPlatform() throws JsonProcessingException {
1854         org.onap.aai.domain.yang.Platform expectedAAI = new org.onap.aai.domain.yang.Platform();
1855
1856         Platform expected = new Platform();
1857         AAIResultWrapper vnfWrapper =
1858                 new AAIResultWrapper(new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
1859
1860         doReturn(expected).when(bbInputSetupMapperLayer).mapAAIPlatform(isA(org.onap.aai.domain.yang.Platform.class));
1861
1862         GenericVnf vnf = new GenericVnf();
1863
1864         SPY_bbInputSetup.mapPlatform(Arrays.asList(new AAIResultWrapper[] {vnfWrapper}), vnf);
1865
1866         assertEquals(expected, vnf.getPlatform());
1867     }
1868
1869     @Test
1870     public void testMapCollection() throws JsonProcessingException {
1871         List<AAIResultWrapper> collections = new ArrayList<>();
1872         ServiceInstance serviceInstance = new ServiceInstance();
1873
1874         org.onap.aai.domain.yang.Collection aaiCollection = new org.onap.aai.domain.yang.Collection();
1875         org.onap.aai.domain.yang.RelationshipList collectionRelationshipList =
1876                 new org.onap.aai.domain.yang.RelationshipList();
1877         org.onap.aai.domain.yang.Relationship collectionInstanceGroupRelationship =
1878                 new org.onap.aai.domain.yang.Relationship();
1879         collectionRelationshipList.getRelationship().add(collectionInstanceGroupRelationship);
1880         aaiCollection.setRelationshipList(collectionRelationshipList);
1881
1882         collections.add(new AAIResultWrapper(
1883                 new AAICommonObjectMapperProvider().getMapper().writeValueAsString(aaiCollection)));
1884
1885         Collection collection = new Collection();
1886         ModelInfoCollection modelInfoCollection = new ModelInfoCollection();
1887         List<InstanceGroup> instanceGroupsList = new ArrayList<>();
1888         InstanceGroup instanceGroup = new InstanceGroup();
1889         instanceGroupsList.add(instanceGroup);
1890         NetworkCollectionResourceCustomization networkCollectionCust =
1891                 Mockito.mock(NetworkCollectionResourceCustomization.class);
1892         CollectionResource collectionResource = new CollectionResource();
1893         doReturn(collection).when(bbInputSetupMapperLayer)
1894                 .mapAAICollectionIntoCollection(isA(org.onap.aai.domain.yang.Collection.class));
1895         doReturn(instanceGroupsList).when(SPY_bbInputSetup).mapInstanceGroups(any());
1896         doReturn(networkCollectionCust).when(SPY_bbInputSetupUtils)
1897                 .getCatalogNetworkCollectionResourceCustByID(aaiCollection.getCollectionCustomizationId());
1898         doReturn(collectionResource).when(networkCollectionCust).getCollectionResource();
1899         doReturn(modelInfoCollection).when(bbInputSetupMapperLayer)
1900                 .mapCatalogCollectionToCollection(networkCollectionCust, collectionResource);
1901
1902         SPY_bbInputSetup.mapCollection(collections, serviceInstance);
1903
1904         assertEquals(collection, serviceInstance.getCollection());
1905         assertEquals(instanceGroup, collection.getInstanceGroup());
1906
1907         instanceGroupsList.clear();
1908         collection = new Collection();
1909
1910         SPY_bbInputSetup.mapCollection(collections, serviceInstance);
1911         assertEquals(collection, serviceInstance.getCollection());
1912         assertNull(collection.getInstanceGroup());
1913     }
1914
1915     @Test
1916     public void testMapL3Networks() throws JsonProcessingException {
1917         org.onap.aai.domain.yang.L3Network expectedAAI = new org.onap.aai.domain.yang.L3Network();
1918         org.onap.aai.domain.yang.RelationshipList relationshipList = new org.onap.aai.domain.yang.RelationshipList();
1919         org.onap.aai.domain.yang.Relationship relationship = new org.onap.aai.domain.yang.Relationship();
1920         relationshipList.getRelationship().add(relationship);
1921         expectedAAI.setRelationshipList(relationshipList);
1922
1923         L3Network expected = new L3Network();
1924         List<L3Network> l3Networks = new ArrayList<>();
1925         AAIResultWrapper l3NetworksWrapper =
1926                 new AAIResultWrapper(new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
1927         AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, "networkId");
1928
1929         doReturn(l3NetworksWrapper).when(SPY_bbInputSetupUtils).getAAIResourceDepthTwo(aaiResourceUri);
1930         doReturn(expected).when(bbInputSetupMapperLayer).mapAAIL3Network(isA(org.onap.aai.domain.yang.L3Network.class));
1931         doNothing().when(SPY_bbInputSetup).mapNetworkPolicies(any(), eq(expected.getNetworkPolicies()));
1932         doNothing().when(SPY_bbInputSetup).mapRouteTableReferences(any(),
1933                 eq(expected.getContrailNetworkRouteTableReferences()));
1934
1935         SPY_bbInputSetup.mapL3Networks(Arrays.asList(new AAIResourceUri[] {aaiResourceUri}), l3Networks);
1936
1937         assertEquals(expected, l3Networks.get(0));
1938         verify(SPY_bbInputSetup, times(1)).mapNetworkPolicies(any(), eq(expected.getNetworkPolicies()));
1939         verify(SPY_bbInputSetup, times(1)).mapRouteTableReferences(any(),
1940                 eq(expected.getContrailNetworkRouteTableReferences()));
1941     }
1942
1943     @Test
1944     public void testMapRouteTableReferences() throws JsonProcessingException {
1945         org.onap.aai.domain.yang.RouteTableReference expectedAAI = new org.onap.aai.domain.yang.RouteTableReference();
1946
1947         RouteTableReference expected = new RouteTableReference();
1948         List<RouteTableReference> contrailNetworkRouteTableReferences = new ArrayList<>();
1949         AAIResultWrapper vnfWrapper =
1950                 new AAIResultWrapper(new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
1951
1952         doReturn(expected).when(bbInputSetupMapperLayer).mapAAIRouteTableReferenceIntoRouteTableReference(
1953                 isA(org.onap.aai.domain.yang.RouteTableReference.class));
1954
1955         SPY_bbInputSetup.mapRouteTableReferences(Arrays.asList(new AAIResultWrapper[] {vnfWrapper}),
1956                 contrailNetworkRouteTableReferences);
1957
1958         assertEquals(expected, contrailNetworkRouteTableReferences.get(0));
1959     }
1960
1961     @Test
1962     public void testMapOwningEntity() throws JsonProcessingException {
1963         org.onap.aai.domain.yang.OwningEntity expectedAAI = new org.onap.aai.domain.yang.OwningEntity();
1964
1965         OwningEntity expected = new OwningEntity();
1966         AAIResultWrapper vnfWrapper =
1967                 new AAIResultWrapper(new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
1968
1969         doReturn(expected).when(bbInputSetupMapperLayer)
1970                 .mapAAIOwningEntity(isA(org.onap.aai.domain.yang.OwningEntity.class));
1971
1972         ServiceInstance serviceInstance = new ServiceInstance();
1973
1974         SPY_bbInputSetup.mapOwningEntity(Arrays.asList(new AAIResultWrapper[] {vnfWrapper}), serviceInstance);
1975
1976         assertEquals(expected, serviceInstance.getOwningEntity());
1977     }
1978
1979     @Test
1980     public void testMapProject() throws JsonProcessingException {
1981         org.onap.aai.domain.yang.Project expectedAAI = new org.onap.aai.domain.yang.Project();
1982
1983         Project expected = new Project();
1984         AAIResultWrapper vnfWrapper =
1985                 new AAIResultWrapper(new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
1986
1987         doReturn(expected).when(bbInputSetupMapperLayer).mapAAIProject(isA(org.onap.aai.domain.yang.Project.class));
1988
1989         ServiceInstance serviceInstance = new ServiceInstance();
1990
1991         SPY_bbInputSetup.mapProject(Arrays.asList(new AAIResultWrapper[] {vnfWrapper}), serviceInstance);
1992
1993         assertEquals(expected, serviceInstance.getProject());
1994     }
1995
1996     @Test
1997     public void testMapCustomer() throws Exception {
1998         org.onap.aai.domain.yang.Customer customerAAI = new org.onap.aai.domain.yang.Customer();
1999         org.onap.aai.domain.yang.ServiceSubscription serviceSubscriptionAAI =
2000                 new org.onap.aai.domain.yang.ServiceSubscription();
2001
2002         Customer expected = new Customer();
2003         ServiceSubscription serviceSubscription = new ServiceSubscription();
2004
2005         String globalCustomerId = "globalCustomerId";
2006         String subscriptionServiceType = "subscriptionServiceType";
2007
2008         doReturn(customerAAI).when(SPY_bbInputSetupUtils).getAAICustomer(globalCustomerId);
2009         doReturn(serviceSubscriptionAAI).when(SPY_bbInputSetupUtils).getAAIServiceSubscription(globalCustomerId,
2010                 subscriptionServiceType);
2011         doReturn(expected).when(bbInputSetupMapperLayer).mapAAICustomer(isA(org.onap.aai.domain.yang.Customer.class));
2012         doReturn(serviceSubscription).when(bbInputSetupMapperLayer)
2013                 .mapAAIServiceSubscription(isA(org.onap.aai.domain.yang.ServiceSubscription.class));
2014
2015         Customer actual = SPY_bbInputSetup.mapCustomer(globalCustomerId, subscriptionServiceType);
2016
2017         assertEquals(expected, actual);
2018         assertEquals(serviceSubscription, expected.getServiceSubscription());
2019     }
2020
2021     @Test
2022     public void testPopulateLookupKeyMapWithIds() {
2023         Map<ResourceKey, String> expected = new HashMap<>();
2024         Map<ResourceKey, String> actual = new HashMap<>();
2025         String serviceInstanceId = "serviceInstanceId";
2026         String networkId = "networkId";
2027         String vnfId = "vnfId";
2028         String pnfId = "pnfId";
2029         String vfModuleId = "vfModuleId";
2030         String volumeGroupId = "volumeGroupId";
2031         String configurationId = "configurationId";
2032         String instanceGroupId = "instancegroupId";
2033
2034         expected.put(ResourceKey.SERVICE_INSTANCE_ID, serviceInstanceId);
2035         expected.put(ResourceKey.NETWORK_ID, networkId);
2036         expected.put(ResourceKey.GENERIC_VNF_ID, vnfId);
2037         expected.put(ResourceKey.PNF, pnfId);
2038         expected.put(ResourceKey.VF_MODULE_ID, vfModuleId);
2039         expected.put(ResourceKey.VOLUME_GROUP_ID, volumeGroupId);
2040         expected.put(ResourceKey.CONFIGURATION_ID, configurationId);
2041         expected.put(ResourceKey.INSTANCE_GROUP_ID, instanceGroupId);
2042
2043         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2044         workflowResourceIds.setServiceInstanceId(serviceInstanceId);
2045         workflowResourceIds.setNetworkId(networkId);
2046         workflowResourceIds.setVnfId(vnfId);
2047         workflowResourceIds.setPnfId(pnfId);
2048         workflowResourceIds.setVfModuleId(vfModuleId);
2049         workflowResourceIds.setVolumeGroupId(volumeGroupId);
2050         workflowResourceIds.setConfigurationId(configurationId);
2051         workflowResourceIds.setInstanceGroupId(instanceGroupId);
2052
2053         SPY_bbInputSetup.populateLookupKeyMapWithIds(workflowResourceIds, actual);
2054
2055         assertThat(actual, sameBeanAs(expected));
2056     }
2057
2058     @Test
2059     public void testGBBMacroNoUserParamsVrfConfiguration() throws Exception {
2060         String resourceId = "123";
2061         String vnfType = "vnfType";
2062         String requestAction = "createInstance";
2063         Service service = Mockito.mock(Service.class);
2064         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2065                 GeneralBuildingBlock.class);
2066         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2067                 ExecuteBuildingBlock.class);
2068         RequestDetails requestDetails = mapper
2069                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacroVrf.json"), RequestDetails.class);
2070         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2071
2072         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2073         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2074         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2075         buildingBlock.setBpmnFlowName("AssignVrfConfigurationBB");
2076         buildingBlock.setKey("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
2077
2078         doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2079                 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2080         doReturn(service).when(SPY_bbInputSetupUtils)
2081                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2082
2083         RelatedInstance relatedVpnBinding = new RelatedInstance();
2084         relatedVpnBinding.setInstanceId("vpnBindingInstanceId");
2085         RelatedInstance relatedLocalNetwork = new RelatedInstance();
2086         relatedLocalNetwork.setInstanceId("localNetworkInstanceId");
2087         org.onap.aai.domain.yang.VpnBinding aaiVpnBinding = new org.onap.aai.domain.yang.VpnBinding();
2088         aaiVpnBinding.setVpnId("vpnBindingId");
2089         org.onap.aai.domain.yang.L3Network aaiLocalNetwork = new org.onap.aai.domain.yang.L3Network();
2090         aaiLocalNetwork.setNetworkId("localNetworkId");
2091         Optional<org.onap.aai.domain.yang.VpnBinding> aaiAICVpnBindingOp =
2092                 Optional.of(new org.onap.aai.domain.yang.VpnBinding());
2093         aaiAICVpnBindingOp.get().setVpnId("AICVpnBindingId");
2094         ServiceProxy proxy = new ServiceProxy();
2095         proxy.setType("transport");
2096         proxy.setServiceInstance(new ServiceInstance());
2097         proxy.getServiceInstance().setModelInfoServiceInstance(new ModelInfoServiceInstance());
2098         proxy.getServiceInstance().getModelInfoServiceInstance().setModelUuid("sourceServiceModelUUID");
2099         doReturn(relatedVpnBinding).when(SPY_bbInputSetupUtils).getRelatedInstanceByType(requestDetails,
2100                 ModelType.vpnBinding);
2101         doReturn(relatedLocalNetwork).when(SPY_bbInputSetupUtils).getRelatedInstanceByType(requestDetails,
2102                 ModelType.network);
2103         doReturn(aaiVpnBinding).when(SPY_bbInputSetupUtils).getAAIVpnBinding(relatedVpnBinding.getInstanceId());
2104         doReturn(aaiLocalNetwork).when(SPY_bbInputSetupUtils).getAAIL3Network(relatedLocalNetwork.getInstanceId());
2105         doReturn(aaiAICVpnBindingOp).when(SPY_bbInputSetupUtils).getAICVpnBindingFromNetwork(aaiLocalNetwork);
2106         doReturn(proxy).when(SPY_bbInputSetup).getServiceProxy(service);
2107
2108         Configuration configuration = new Configuration();
2109         configuration.setConfigurationId("configurationId");
2110         gBB.getServiceInstance().getConfigurations().add(configuration);
2111         List<ConfigurationResourceCustomization> configurationCustList = new ArrayList<>();
2112         ConfigurationResourceCustomization configurationCust = new ConfigurationResourceCustomization();
2113         configurationCust.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
2114         configurationCustList.add(configurationCust);
2115         doNothing().when(SPY_bbInputSetup).populateConfiguration(any(BBInputSetupParameter.class));
2116
2117         gBB = SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2118         verify(SPY_bbInputSetup, times(1)).populateConfiguration(any(BBInputSetupParameter.class));
2119         assertEquals(gBB.getCustomer().getVpnBindings().get(0).getVpnId(), "vpnBindingId");
2120         assertEquals(gBB.getServiceInstance().getNetworks().get(0).getNetworkId(), "localNetworkId");
2121         assertEquals(gBB.getServiceInstance().getNetworks().get(0).getVpnBindings().get(0).getVpnId(),
2122                 "AICVpnBindingId");
2123         assertEquals(gBB.getServiceInstance().getServiceProxies().get(0).getType(), "transport");
2124     }
2125
2126     @Test
2127     public void testGetServiceProxy() {
2128         ServiceProxy expected = new ServiceProxy();
2129         expected.setType("TRANSPORT");
2130         expected.setModelInfoServiceProxy(new ModelInfoServiceProxy());
2131         expected.getModelInfoServiceProxy().setModelUuid("modelUUID");
2132         expected.getModelInfoServiceProxy().setModelInstanceName("modelInstanceName");
2133         expected.setServiceInstance(new ServiceInstance());
2134         expected.getServiceInstance().setModelInfoServiceInstance(new ModelInfoServiceInstance());
2135         expected.getServiceInstance().getModelInfoServiceInstance().setModelUuid("modelUUID");
2136         expected.getServiceInstance().getModelInfoServiceInstance().setServiceType("TRANSPORT");
2137         Service service = new Service();
2138         ServiceProxyResourceCustomization serviceProxyCatalog = new ServiceProxyResourceCustomization();
2139         serviceProxyCatalog.setModelCustomizationUUID("modelCustomizationUUID");
2140         serviceProxyCatalog.setModelInstanceName("modelInstanceName");
2141         Service sourceService = new Service();
2142         sourceService.setModelUUID("modelUUID");
2143         sourceService.setServiceType("TRANSPORT");
2144         serviceProxyCatalog.setSourceService(sourceService);
2145         service.setServiceProxyCustomizations(new ArrayList<ServiceProxyResourceCustomization>());
2146         service.getServiceProxyCustomizations().add(serviceProxyCatalog);
2147         ServiceProxy actual = SPY_bbInputSetup.getServiceProxy(service);
2148         assertThat(actual, sameBeanAs(expected));
2149     }
2150
2151     @Test
2152     public void testgetGBBMacroCloudConfiguration() throws Exception {
2153         org.onap.so.serviceinstancebeans.Service serviceMacro = mapper.readValue(
2154                 new File(RESOURCE_PATH + "ServiceMacroVfModules.json"), org.onap.so.serviceinstancebeans.Service.class);
2155         CloudConfiguration cloudConfig = null;
2156         org.onap.aai.domain.yang.CloudRegion aaiCloudRegion = new org.onap.aai.domain.yang.CloudRegion();
2157         aaiCloudRegion.setCloudOwner("test-owner-name");
2158         Resources resources = serviceMacro.getResources();
2159         doReturn(aaiCloudRegion).when(SPY_bbInputSetupUtils).getCloudRegion(any(CloudConfiguration.class));
2160         CloudRegion expected = new CloudRegion();
2161         expected.setLcpCloudRegionId("mdt1");
2162         expected.setCloudOwner("test-owner-name");
2163         expected.setTenantId("88a6ca3ee0394ade9403f075db23167e");
2164
2165         CloudRegion actual = SPY_bbInputSetup.getCloudRegionFromMacroRequest(cloudConfig, resources);
2166         assertThat(actual, sameBeanAs(expected));
2167
2168         serviceMacro = mapper.readValue(new File(RESOURCE_PATH + "ServiceMacroVnfs.json"),
2169                 org.onap.so.serviceinstancebeans.Service.class);
2170         resources = serviceMacro.getResources();
2171
2172         actual = SPY_bbInputSetup.getCloudRegionFromMacroRequest(cloudConfig, resources);
2173         assertThat(actual, sameBeanAs(expected));
2174
2175         serviceMacro = mapper.readValue(new File(RESOURCE_PATH + "ServiceMacroNetworks.json"),
2176                 org.onap.so.serviceinstancebeans.Service.class);
2177         resources = serviceMacro.getResources();
2178
2179         actual = SPY_bbInputSetup.getCloudRegionFromMacroRequest(cloudConfig, resources);
2180         assertThat(actual, sameBeanAs(expected));
2181
2182         serviceMacro = mapper.readValue(new File(RESOURCE_PATH + "ServiceMacroNoCloudConfig.json"),
2183                 org.onap.so.serviceinstancebeans.Service.class);
2184         resources = serviceMacro.getResources();
2185
2186         actual = SPY_bbInputSetup.getCloudRegionFromMacroRequest(cloudConfig, resources);
2187         assertNull(actual);
2188     }
2189
2190     @Test
2191     public void testgetGBBMacroWithEmptyUserParams() throws Exception {
2192         String resourceId = "123";
2193         String vnfType = "vnfType";
2194         String requestAction = "createInstance";
2195         Service service = Mockito.mock(Service.class);
2196         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2197                 GeneralBuildingBlock.class);
2198         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2199                 ExecuteBuildingBlock.class);
2200         RequestDetails requestDetails = mapper
2201                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2202         requestDetails.getRequestParameters().getUserParams().clear();
2203         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2204         aaiVnf.setModelCustomizationId("modelCustId");
2205         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2206         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2207         buildingBlock.setBpmnFlowName(AssignFlows.NETWORK_MACRO.toString())
2208                 .setKey("ab153b6e-c364-44c0-bef6-1f2982117f04").setIsVirtualLink(false);
2209
2210         doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2211                 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2212         doReturn(service).when(SPY_bbInputSetupUtils)
2213                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2214
2215         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2216         verify(SPY_bbInputSetup, times(1)).getGBBMacroNoUserParamsCreate(any(ExecuteBuildingBlock.class), any(),
2217                 any(String.class), any(String.class), any(GeneralBuildingBlock.class), any(Service.class));
2218     }
2219
2220     @Test(expected = Exception.class)
2221     public void testgetGBBMacroException() throws Exception {
2222         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2223                 ExecuteBuildingBlock.class);
2224         RequestDetails requestDetails = mapper
2225                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2226         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2227         String resourceId = "123";
2228         String vnfType = "vnfType";
2229         String requestAction = "createInstance";
2230
2231         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2232         buildingBlock.setBpmnFlowName("Network").setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
2233
2234         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2235     }
2236
2237     @Test
2238     public void test_getGBBMacroForVnfTypeNull_populateL3Network_shouldBeCalled() throws Exception {
2239         // given
2240         String resourceId = "123";
2241         String vnfType = "null";
2242         String requestAction = "createInstance";
2243         Service service = Mockito.mock(Service.class);
2244         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2245                 GeneralBuildingBlock.class);
2246         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2247
2248         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2249         RequestDetails requestDetails = mapper
2250                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2251         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2252                 ExecuteBuildingBlock.class);
2253         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2254         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2255         buildingBlock.setBpmnFlowName(AssignFlows.NETWORK_MACRO.toString())
2256                 .setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
2257
2258         doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2259                 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2260         doReturn(service).when(SPY_bbInputSetupUtils)
2261                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2262         // when
2263         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2264         // then
2265         verify(SPY_bbInputSetup, times(1)).populateL3Network(any(BBInputSetupParameter.class));
2266     }
2267
2268     @Test
2269     public void testgetGBBMacroNoUserParamsDeactivateInstnace() throws Exception {
2270         String resourceId = "123";
2271         String vnfType = "vnfType";
2272         String requestAction = "deactivateInstance";
2273         Service service = Mockito.mock(Service.class);
2274         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2275                 GeneralBuildingBlock.class);
2276         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2277                 ExecuteBuildingBlock.class);
2278         RequestDetails requestDetails = mapper
2279                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2280         requestDetails.getRequestParameters().setUserParams(null);
2281         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2282         aaiVnf.setModelCustomizationId("modelCustId");
2283         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2284         lookupKeyMap.put(ResourceKey.NETWORK_ID, "networkId");
2285         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "vnfId");
2286         lookupKeyMap.put(ResourceKey.VF_MODULE_ID, "vfModuleId");
2287         lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, "volumeGroupId");
2288         lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "serviceInstanceId");
2289         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2290         buildingBlock.setBpmnFlowName("DeactivateServiceInstanceBB").setKey("3c40d244-808e-42ca-b09a-256d83d19d0a");
2291
2292         doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2293                 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2294         doReturn(service).when(SPY_bbInputSetupUtils)
2295                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2296
2297         GeneralBuildingBlock actual = SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap,
2298                 requestAction, resourceId, vnfType);
2299         assertThat(actual, sameBeanAs(gBB));
2300     }
2301
2302     @Test
2303     public void test_getGBBMacroNoUserParamsCreate_shouldBeCalled() throws Exception {
2304         // given
2305         String resourceId = "123";
2306         String vnfType = "vnfType";
2307         String requestAction = "createInstance";
2308         Service service = Mockito.mock(Service.class);
2309         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2310                 GeneralBuildingBlock.class);
2311         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2312         List<NetworkResourceCustomization> networkCustList = new ArrayList<>();
2313         NetworkResourceCustomization networkCust = Mockito.mock(NetworkResourceCustomization.class);
2314         networkCustList.add(networkCust);
2315
2316         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2317         RequestDetails requestDetails = mapper
2318                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2319         requestDetails.getRequestParameters().setUserParams(null);
2320         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2321                 ExecuteBuildingBlock.class);
2322         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2323         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2324         buildingBlock.setBpmnFlowName(AssignFlows.NETWORK_MACRO.toString())
2325                 .setKey("ab153b6e-c364-44c0-bef6-1f2982117f04").setIsVirtualLink(false);
2326
2327         doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2328                 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2329         doReturn(service).when(SPY_bbInputSetupUtils)
2330                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2331         doReturn(networkCustList).when(service).getNetworkCustomizations();
2332         doReturn("ab153b6e-c364-44c0-bef6-1f2982117f04").when(networkCust).getModelCustomizationUUID();
2333         doNothing().when(SPY_bbInputSetup).populateL3Network(any(BBInputSetupParameter.class));
2334         // when
2335         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2336         // then
2337         verify(SPY_bbInputSetup, times(1)).getGBBMacroNoUserParamsCreate(executeBB, lookupKeyMap,
2338                 executeBB.getBuildingBlock().getBpmnFlowName(), "ab153b6e-c364-44c0-bef6-1f2982117f04", gBB, service);
2339     }
2340
2341     @Test
2342     public void test_getGBBMacroNoUserParamsCreate_shouldBeCalled_whenBBhasVirtualLink() throws Exception {
2343         // given
2344         String resourceId = "123";
2345         String vnfType = "vnfType";
2346         String requestAction = "createInstance";
2347         Service service = Mockito.mock(Service.class);
2348         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2349                 GeneralBuildingBlock.class);
2350         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2351         List<NetworkResourceCustomization> networkCustList = new ArrayList<>();
2352         NetworkResourceCustomization networkCust = Mockito.mock(NetworkResourceCustomization.class);
2353         networkCustList.add(networkCust);
2354         CollectionNetworkResourceCustomization collectionNetworkResourceCust =
2355                 Mockito.mock(CollectionNetworkResourceCustomization.class);
2356         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2357         aaiVnf.setModelCustomizationId("modelCustId");
2358         ModelInfoNetwork modelInfoNetwork = Mockito.mock(ModelInfoNetwork.class);
2359         NetworkResourceCustomization networkResourceCustomization = Mockito.mock(NetworkResourceCustomization.class);
2360
2361         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2362         RequestDetails requestDetails = mapper
2363                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2364         requestDetails.getRequestParameters().setUserParams(null);
2365         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2366                 ExecuteBuildingBlock.class);
2367         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2368         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2369         buildingBlock.setBpmnFlowName(AssignFlows.NETWORK_MACRO.toString())
2370                 .setKey("ab153b6e-c364-44c0-bef6-1f2982117f04").setIsVirtualLink(true);
2371
2372         doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2373                 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2374         doReturn(service).when(SPY_bbInputSetupUtils)
2375                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2376         doReturn(collectionNetworkResourceCust).when(SPY_bbInputSetupUtils)
2377                 .getCatalogCollectionNetworkResourceCustByID(any(String.class));
2378         doReturn(networkResourceCustomization).when(bbInputSetupMapperLayer)
2379                 .mapCollectionNetworkResourceCustToNetworkResourceCust(collectionNetworkResourceCust);
2380         doReturn(modelInfoNetwork).when(bbInputSetupMapperLayer)
2381                 .mapCatalogNetworkToNetwork(networkResourceCustomization);
2382         // when
2383         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2384         // then
2385         verify(SPY_bbInputSetup, times(1)).getGBBMacroNoUserParamsCreate(executeBB, lookupKeyMap,
2386                 executeBB.getBuildingBlock().getBpmnFlowName(), "ab153b6e-c364-44c0-bef6-1f2982117f04", gBB, service);
2387     }
2388
2389     @Test
2390     public void test_getGBBMacroNoUserParamsCreate_shouldBeCalled_whenBBhasVirtualLinkAndOtherFlowName()
2391             throws Exception {
2392         // given
2393         String otherFlowName = "CreateNetworkBB";
2394         String resourceId = "123";
2395         String vnfType = "vnfType";
2396         String requestAction = "createInstance";
2397         Service service = Mockito.mock(Service.class);
2398         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2399                 GeneralBuildingBlock.class);
2400         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2401         List<NetworkResourceCustomization> networkCustList = new ArrayList<>();
2402         NetworkResourceCustomization networkCust = Mockito.mock(NetworkResourceCustomization.class);
2403         networkCustList.add(networkCust);
2404         CollectionNetworkResourceCustomization collectionNetworkResourceCust =
2405                 Mockito.mock(CollectionNetworkResourceCustomization.class);
2406
2407         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2408         RequestDetails requestDetails = mapper
2409                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2410         requestDetails.getRequestParameters().setUserParams(null);
2411         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2412                 ExecuteBuildingBlock.class);
2413         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2414         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2415         buildingBlock.setBpmnFlowName(otherFlowName).setKey("ab153b6e-c364-44c0-bef6-1f2982117f04")
2416                 .setIsVirtualLink(true);
2417
2418         doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2419                 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2420         doReturn(service).when(SPY_bbInputSetupUtils)
2421                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2422         doReturn(collectionNetworkResourceCust).when(SPY_bbInputSetupUtils)
2423                 .getCatalogCollectionNetworkResourceCustByID(any(String.class));
2424         // when
2425         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2426         // then
2427         verify(SPY_bbInputSetup, times(1)).getGBBMacroNoUserParamsCreate(executeBB, lookupKeyMap,
2428                 executeBB.getBuildingBlock().getBpmnFlowName(), "ab153b6e-c364-44c0-bef6-1f2982117f04", gBB, service);
2429     }
2430
2431     @Test(expected = IllegalArgumentException.class)
2432     public void testgetGBBMacroNoUserParamsOtherException() throws Exception {
2433         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2434                 GeneralBuildingBlock.class);
2435         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2436                 ExecuteBuildingBlock.class);
2437         RequestDetails requestDetails = mapper
2438                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2439         requestDetails.getRequestParameters().setUserParams(null);
2440         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2441         aaiVnf.setModelCustomizationId("modelCustId");
2442         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2443         lookupKeyMap.put(ResourceKey.NETWORK_ID, "networkId");
2444         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "vnfId");
2445         lookupKeyMap.put(ResourceKey.VF_MODULE_ID, "vfModuleId");
2446         lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, "volumeGroupId");
2447         lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "serviceInstanceId");
2448         String resourceId = "123";
2449         String vnfType = "vnfType";
2450         Service service = Mockito.mock(Service.class);
2451         String requestAction = "assignInstance";
2452         doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2453                 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2454         doReturn(service).when(SPY_bbInputSetupUtils)
2455                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2456         String generatedId = "12131";
2457
2458         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2459     }
2460
2461     @Test
2462     public void test_getGBBMacroNoUserParamsExistingService_forCatalogNetwork() throws Exception {
2463         // given
2464         String requestAction = "unassignInstance";
2465         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2466                 GeneralBuildingBlock.class);
2467         L3Network network = new L3Network();
2468         network.setNetworkId("networkId");
2469         gBB.getServiceInstance().getNetworks().add(network);
2470         ServiceInstance serviceInstance = gBB.getServiceInstance();
2471         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2472                 ExecuteBuildingBlock.class);
2473         RequestDetails requestDetails = mapper
2474                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2475         requestDetails.getRequestParameters().setUserParams(null);
2476         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2477         Service service = Mockito.mock(Service.class);
2478         CloudConfiguration cloudConfiguration = new CloudConfiguration();
2479         cloudConfiguration.setLcpCloudRegionId("cloudRegionId");
2480         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
2481         org.onap.aai.domain.yang.L3Network aaiNetwork = new org.onap.aai.domain.yang.L3Network();
2482         aaiNetwork.setModelCustomizationId("modelCustId");
2483
2484         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2485         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2486         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2487         buildingBlock.setBpmnFlowName("DeleteNetworkBB").setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
2488
2489         aaiServiceInstance.setModelVersionId("modelVersionId");
2490         doReturn(service).when(SPY_bbInputSetupUtils)
2491                 .getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
2492         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils)
2493                 .getAAIServiceInstanceById(lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2494         doReturn(serviceInstance).when(SPY_bbInputSetup).getExistingServiceInstance(aaiServiceInstance);
2495         doReturn(gBB).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
2496         doReturn(aaiNetwork).when(SPY_bbInputSetupUtils).getAAIL3Network(network.getNetworkId());
2497         doNothing().when(SPY_bbInputSetup).mapCatalogNetwork(any(L3Network.class), any(ModelInfo.class),
2498                 any(Service.class));
2499         // when
2500         SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2501                 executeBB.getBuildingBlock().getBpmnFlowName(), requestAction, null);
2502         // then
2503         verify(SPY_bbInputSetup, times(1)).mapCatalogNetwork(any(L3Network.class), any(ModelInfo.class),
2504                 any(Service.class));
2505     }
2506
2507     @Test
2508     public void test_getGBBMacroNoUserParamsExistingService_forControllerExecutionBB() throws Exception {
2509         // given
2510         String requestAction = "unassignInstance";
2511         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2512                 GeneralBuildingBlock.class);
2513         L3Network network = new L3Network();
2514         network.setNetworkId("networkId");
2515         gBB.getServiceInstance().getNetworks().add(network);
2516         ServiceInstance serviceInstance = gBB.getServiceInstance();
2517         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2518                 ExecuteBuildingBlock.class);
2519         RequestDetails requestDetails = mapper
2520                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2521         requestDetails.getRequestParameters().setUserParams(null);
2522         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2523         Service service = Mockito.mock(Service.class);
2524         CloudConfiguration cloudConfiguration = new CloudConfiguration();
2525         cloudConfiguration.setLcpCloudRegionId("cloudRegionId");
2526         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
2527         org.onap.aai.domain.yang.L3Network aaiNetwork = new org.onap.aai.domain.yang.L3Network();
2528         aaiNetwork.setModelCustomizationId("modelCustId");
2529         GenericVnf vnf = new GenericVnf();
2530         vnf.setVnfId("vnfId");
2531         gBB.getServiceInstance().getVnfs().add(vnf);
2532         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2533         aaiVnf.setModelCustomizationId("modelCustId");
2534
2535         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2536         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2537         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2538         buildingBlock.setBpmnFlowName("ControllerExecutionBB").setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
2539         buildingBlock.setBpmnScope("VNF");
2540
2541         aaiServiceInstance.setModelVersionId("modelVersionId");
2542         doReturn(service).when(SPY_bbInputSetupUtils)
2543                 .getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
2544         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils)
2545                 .getAAIServiceInstanceById(lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2546         doReturn(serviceInstance).when(SPY_bbInputSetup).getExistingServiceInstance(aaiServiceInstance);
2547         doReturn(gBB).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
2548         doReturn(aaiVnf).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
2549         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2550                 any(Service.class));
2551         // when
2552         SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2553                 executeBB.getBuildingBlock().getBpmnFlowName(), requestAction, cloudConfiguration);
2554         // then
2555         verify(SPY_bbInputSetup, times(1)).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2556                 any(Service.class));
2557     }
2558
2559     @Test
2560     public void test_getGBBMacroNoUserParamsExistingService_forActivateVnfBB() throws Exception {
2561         // given
2562         String requestAction = "unassignInstance";
2563         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2564                 GeneralBuildingBlock.class);
2565         L3Network network = new L3Network();
2566         network.setNetworkId("networkId");
2567         gBB.getServiceInstance().getNetworks().add(network);
2568         ServiceInstance serviceInstance = gBB.getServiceInstance();
2569         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2570                 ExecuteBuildingBlock.class);
2571         RequestDetails requestDetails = mapper
2572                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2573         requestDetails.getRequestParameters().setUserParams(null);
2574         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2575         Service service = Mockito.mock(Service.class);
2576         CloudConfiguration cloudConfiguration = new CloudConfiguration();
2577         cloudConfiguration.setLcpCloudRegionId("cloudRegionId");
2578         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
2579         org.onap.aai.domain.yang.L3Network aaiNetwork = new org.onap.aai.domain.yang.L3Network();
2580         aaiNetwork.setModelCustomizationId("modelCustId");
2581         GenericVnf vnf = new GenericVnf();
2582         vnf.setVnfId("vnfId");
2583         gBB.getServiceInstance().getVnfs().add(vnf);
2584         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2585         aaiVnf.setModelCustomizationId("modelCustId");
2586
2587         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2588         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2589         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2590         buildingBlock.setBpmnFlowName("ActivateVnfBB").setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
2591
2592         aaiServiceInstance.setModelVersionId("modelVersionId");
2593         doReturn(service).when(SPY_bbInputSetupUtils)
2594                 .getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
2595         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils)
2596                 .getAAIServiceInstanceById(lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2597         doReturn(serviceInstance).when(SPY_bbInputSetup).getExistingServiceInstance(aaiServiceInstance);
2598         doReturn(gBB).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
2599         doReturn(aaiVnf).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
2600         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2601                 any(Service.class));
2602         // when
2603         SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2604                 executeBB.getBuildingBlock().getBpmnFlowName(), requestAction, cloudConfiguration);
2605         // then
2606         verify(SPY_bbInputSetup, times(1)).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2607                 any(Service.class));
2608     }
2609
2610     @Test
2611     public void test_getGBBMacroNoUserParamsExistingService_forControllerExecutionBB_VFModule() throws Exception {
2612         // given
2613         String requestAction = "unassignInstance";
2614         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2615                 GeneralBuildingBlock.class);
2616         L3Network network = new L3Network();
2617         network.setNetworkId("networkId");
2618         gBB.getServiceInstance().getNetworks().add(network);
2619         ServiceInstance serviceInstance = gBB.getServiceInstance();
2620         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2621                 ExecuteBuildingBlock.class);
2622         RequestDetails requestDetails = mapper
2623                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2624         requestDetails.getRequestParameters().setUserParams(null);
2625         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2626         Service service = Mockito.mock(Service.class);
2627         CloudConfiguration cloudConfiguration = new CloudConfiguration();
2628         cloudConfiguration.setLcpCloudRegionId("cloudRegionId");
2629         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
2630         org.onap.aai.domain.yang.L3Network aaiNetwork = new org.onap.aai.domain.yang.L3Network();
2631         aaiNetwork.setModelCustomizationId("modelCustId");
2632         GenericVnf vnf = new GenericVnf();
2633         vnf.setVnfId("vnfId");
2634         gBB.getServiceInstance().getVnfs().add(vnf);
2635         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2636         aaiVnf.setModelCustomizationId("modelCustId");
2637         VfModule vfModule = new VfModule();
2638         vfModule.setVfModuleId("vfModuleId");
2639         gBB.getServiceInstance().getVnfs().get(0).getVfModules().add(vfModule);
2640         org.onap.aai.domain.yang.VfModule aaiVfModule = new org.onap.aai.domain.yang.VfModule();
2641         aaiVfModule.setModelCustomizationId("modelCustId");
2642
2643         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2644         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2645         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2646         buildingBlock.setBpmnFlowName("ControllerExecutionBB").setKey("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
2647         buildingBlock.setBpmnScope("VfModule");
2648
2649         aaiServiceInstance.setModelVersionId("modelVersionId");
2650         doReturn(service).when(SPY_bbInputSetupUtils)
2651                 .getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
2652         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils)
2653                 .getAAIServiceInstanceById(lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2654         doReturn(serviceInstance).when(SPY_bbInputSetup).getExistingServiceInstance(aaiServiceInstance);
2655         doReturn(gBB).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
2656         doReturn(aaiVnf).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
2657         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2658                 any(Service.class));
2659         doReturn(aaiVfModule).when(SPY_bbInputSetupUtils).getAAIVfModule(vnf.getVnfId(), vfModule.getVfModuleId());
2660         // when
2661         SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2662                 executeBB.getBuildingBlock().getBpmnFlowName(), requestAction, cloudConfiguration);
2663         // then
2664         verify(SPY_bbInputSetup, times(1)).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2665                 any(Service.class));
2666         verify(SPY_bbInputSetup, times(1)).mapCatalogVfModule(any(VfModule.class), any(ModelInfo.class),
2667                 any(Service.class), any(String.class));
2668     }
2669
2670     @Test
2671     public void test_getGBBMacroNoUserParamsExistingService_forUnassignVfModuleBB() throws Exception {
2672         // given
2673         String requestAction = "unassignInstance";
2674         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2675                 GeneralBuildingBlock.class);
2676         L3Network network = new L3Network();
2677         network.setNetworkId("networkId");
2678         gBB.getServiceInstance().getNetworks().add(network);
2679         ServiceInstance serviceInstance = gBB.getServiceInstance();
2680         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2681                 ExecuteBuildingBlock.class);
2682         RequestDetails requestDetails = mapper
2683                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2684         requestDetails.getRequestParameters().setUserParams(null);
2685         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2686         Service service = Mockito.mock(Service.class);
2687         CloudConfiguration cloudConfiguration = new CloudConfiguration();
2688         cloudConfiguration.setLcpCloudRegionId("cloudRegionId");
2689         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
2690         org.onap.aai.domain.yang.L3Network aaiNetwork = new org.onap.aai.domain.yang.L3Network();
2691         aaiNetwork.setModelCustomizationId("modelCustId");
2692         GenericVnf vnf = new GenericVnf();
2693         vnf.setVnfId("vnfId");
2694         gBB.getServiceInstance().getVnfs().add(vnf);
2695         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2696         aaiVnf.setModelCustomizationId("modelCustId");
2697         VfModule vfModule = new VfModule();
2698         vfModule.setVfModuleId("vfModuleId");
2699         gBB.getServiceInstance().getVnfs().get(0).getVfModules().add(vfModule);
2700         org.onap.aai.domain.yang.VfModule aaiVfModule = new org.onap.aai.domain.yang.VfModule();
2701         aaiVfModule.setModelCustomizationId("modelCustId");
2702
2703         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2704         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2705         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2706         buildingBlock.setBpmnFlowName("UnassignVfModuleBB").setKey("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
2707
2708         aaiServiceInstance.setModelVersionId("modelVersionId");
2709         doReturn(service).when(SPY_bbInputSetupUtils)
2710                 .getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
2711         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils)
2712                 .getAAIServiceInstanceById(lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2713         doReturn(serviceInstance).when(SPY_bbInputSetup).getExistingServiceInstance(aaiServiceInstance);
2714         doReturn(gBB).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
2715         doReturn(aaiVnf).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
2716         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2717                 any(Service.class));
2718         doReturn(aaiVfModule).when(SPY_bbInputSetupUtils).getAAIVfModule(vnf.getVnfId(), vfModule.getVfModuleId());
2719         // when
2720         SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2721                 executeBB.getBuildingBlock().getBpmnFlowName(), requestAction, cloudConfiguration);
2722         // then
2723         verify(SPY_bbInputSetup, times(1)).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2724                 any(Service.class));
2725         verify(SPY_bbInputSetup, times(1)).mapCatalogVfModule(any(VfModule.class), any(ModelInfo.class),
2726                 any(Service.class), any(String.class));
2727     }
2728
2729     @Test
2730     public void test_getGBBMacroNoUserParamsExistingService_forUnassignVolumeGroupBB() throws Exception {
2731         // given
2732         String requestAction = "unassignInstance";
2733         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2734                 GeneralBuildingBlock.class);
2735         L3Network network = new L3Network();
2736         network.setNetworkId("networkId");
2737         gBB.getServiceInstance().getNetworks().add(network);
2738         ServiceInstance serviceInstance = gBB.getServiceInstance();
2739         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2740                 ExecuteBuildingBlock.class);
2741         RequestDetails requestDetails = mapper
2742                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2743         requestDetails.getRequestParameters().setUserParams(null);
2744         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2745         Service service = Mockito.mock(Service.class);
2746         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
2747         GenericVnf vnf = new GenericVnf();
2748         vnf.setVnfId("vnfId");
2749         gBB.getServiceInstance().getVnfs().add(vnf);
2750         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2751         aaiVnf.setModelCustomizationId("modelCustId");
2752         VfModule vfModule = new VfModule();
2753         vfModule.setVfModuleId("vfModuleId");
2754         gBB.getServiceInstance().getVnfs().get(0).getVfModules().add(vfModule);
2755         CloudRegion cloudRegion = new CloudRegion();
2756         cloudRegion.setLcpCloudRegionId("cloudRegionId");
2757         cloudRegion.setCloudOwner("CloudOwner");
2758         VolumeGroup volumeGroup = new VolumeGroup();
2759         volumeGroup.setVolumeGroupId("volumeGroupId");
2760         gBB.getServiceInstance().getVnfs().get(0).getVolumeGroups().add(volumeGroup);
2761         org.onap.aai.domain.yang.VolumeGroup aaiVolumeGroup = new org.onap.aai.domain.yang.VolumeGroup();
2762         aaiVolumeGroup.setModelCustomizationId("modelCustId");
2763
2764         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2765         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2766         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2767         buildingBlock.setBpmnFlowName("UnassignVolumeGroupBB").setKey("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
2768
2769         aaiServiceInstance.setModelVersionId("modelVersionId");
2770         doReturn(service).when(SPY_bbInputSetupUtils)
2771                 .getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
2772         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils)
2773                 .getAAIServiceInstanceById(lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2774         doReturn(serviceInstance).when(SPY_bbInputSetup).getExistingServiceInstance(aaiServiceInstance);
2775         doReturn(gBB).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
2776         doReturn(aaiVnf).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
2777         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2778                 any(Service.class));
2779         doReturn(aaiVolumeGroup).when(SPY_bbInputSetupUtils).getAAIVolumeGroup(cloudRegion.getCloudOwner(),
2780                 cloudRegion.getLcpCloudRegionId(), volumeGroup.getVolumeGroupId());
2781         doReturn(Optional.of(cloudRegion)).when(SPY_cloudInfoFromAAI).getCloudInfoFromAAI(gBB.getServiceInstance());
2782
2783         // when
2784         SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2785                 executeBB.getBuildingBlock().getBpmnFlowName(), requestAction, null);
2786         // then
2787         verify(SPY_bbInputSetup, times(1)).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2788                 any(Service.class));
2789         verify(SPY_bbInputSetup, times(1)).mapCatalogVolumeGroup(isA(VolumeGroup.class), isA(ModelInfo.class),
2790                 isA(Service.class), isA(String.class));
2791     }
2792
2793     @Test
2794     public void test_getGBBMacroNoUserParamsExistingService_forActivateFabricConfigurationBB() throws Exception {
2795         // given
2796         String requestAction = "unassignInstance";
2797         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2798                 GeneralBuildingBlock.class);
2799         L3Network network = new L3Network();
2800         network.setNetworkId("networkId");
2801         gBB.getServiceInstance().getNetworks().add(network);
2802         ServiceInstance serviceInstance = gBB.getServiceInstance();
2803         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2804                 ExecuteBuildingBlock.class);
2805         RequestDetails requestDetails = mapper
2806                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2807         requestDetails.getRequestParameters().setUserParams(null);
2808         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2809         Service service = Mockito.mock(Service.class);
2810         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
2811         GenericVnf vnf = new GenericVnf();
2812         vnf.setVnfId("vnfId");
2813         gBB.getServiceInstance().getVnfs().add(vnf);
2814         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2815         aaiVnf.setModelCustomizationId("modelCustId");
2816         VfModule vfModule = new VfModule();
2817         vfModule.setVfModuleId("vfModuleId");
2818         gBB.getServiceInstance().getVnfs().get(0).getVfModules().add(vfModule);
2819         VolumeGroup volumeGroup = new VolumeGroup();
2820         volumeGroup.setVolumeGroupId("volumeGroupId");
2821         gBB.getServiceInstance().getVnfs().get(0).getVolumeGroups().add(volumeGroup);
2822         CloudConfiguration cloudConfiguration = new CloudConfiguration();
2823         cloudConfiguration.setLcpCloudRegionId("cloudRegionId");
2824         Configuration configuration = new Configuration();
2825         configuration.setConfigurationId("configurationId");
2826         gBB.getServiceInstance().getConfigurations().add(configuration);
2827         org.onap.aai.domain.yang.Configuration aaiConfiguration = new org.onap.aai.domain.yang.Configuration();
2828         aaiConfiguration.setModelCustomizationId("modelCustId");
2829
2830         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2831         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2832         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2833         buildingBlock.setBpmnFlowName("ActivateFabricConfigurationBB").setKey("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
2834
2835         aaiServiceInstance.setModelVersionId("modelVersionId");
2836         doReturn(service).when(SPY_bbInputSetupUtils)
2837                 .getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
2838         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils)
2839                 .getAAIServiceInstanceById(lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2840         doReturn(serviceInstance).when(SPY_bbInputSetup).getExistingServiceInstance(aaiServiceInstance);
2841         doReturn(gBB).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
2842         doReturn(aaiConfiguration).when(SPY_bbInputSetupUtils).getAAIConfiguration(configuration.getConfigurationId());
2843         doNothing().when(SPY_bbInputSetup).mapCatalogConfiguration(isA(Configuration.class), isA(ModelInfo.class),
2844                 isA(Service.class), isA(ConfigurationResourceKeys.class));
2845
2846         // when
2847         SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2848                 executeBB.getBuildingBlock().getBpmnFlowName(), requestAction, cloudConfiguration);
2849         // then
2850         verify(SPY_bbInputSetup, times(1)).mapCatalogConfiguration(any(Configuration.class), any(ModelInfo.class),
2851                 any(Service.class), isA(ConfigurationResourceKeys.class));
2852     }
2853
2854     @Test
2855     public void testGetGBBMacroExistingServiceServiceinstancenotFoundInAai() throws Exception {
2856         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2857                 ExecuteBuildingBlock.class);
2858         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2859         lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "si123");
2860
2861         CloudConfiguration cloudConfiguration = new CloudConfiguration();
2862         cloudConfiguration.setLcpCloudRegionId("cloudRegionId");
2863
2864         doReturn(null).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById("si123");
2865
2866         expectedException.expect(NoServiceInstanceFoundException.class);
2867         expectedException.expectMessage("Related service instance from AAI not found: service-instance-id=si123");
2868
2869         SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap, "AssignVnfBB", "assign",
2870                 cloudConfiguration);
2871     }
2872
2873     @Test
2874     public void testGetGBBMacroExistingServiceServiceModelNotFound() throws Exception {
2875         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2876                 ExecuteBuildingBlock.class);
2877         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2878         lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "si123");
2879         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
2880         aaiServiceInstance.setModelVersionId("modelVersionId");
2881
2882         CloudConfiguration cloudConfiguration = new CloudConfiguration();
2883         cloudConfiguration.setLcpCloudRegionId("cloudRegionId");
2884
2885         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById("si123");
2886         doReturn(null).when(SPY_bbInputSetupUtils).getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
2887
2888         expectedException.expect(ServiceModelNotFoundException.class);
2889         expectedException.expectMessage(
2890                 "Related service instance model not found in MSO CatalogDB: model-version-id=modelVersionId");
2891
2892         SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap, "AssignVnfBB", "assign",
2893                 cloudConfiguration);
2894     }
2895
2896     @Test
2897     public void testGetVnfId() {
2898         String expected = "vnfId";
2899         ExecuteBuildingBlock executeBB = new ExecuteBuildingBlock().setRequestId("requestId");
2900         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2901         InfraActiveRequests request = new InfraActiveRequests();
2902         request.setVnfId(expected);
2903         doReturn(request).when(SPY_bbInputSetupUtils).getInfraActiveRequest(executeBB.getRequestId());
2904
2905         String actual = SPY_bbInputSetup.getVnfId(executeBB, lookupKeyMap);
2906
2907         assertEquals("VnfId is set correctly", expected, actual);
2908     }
2909
2910     @Test
2911     public void testCreateVfModule() {
2912         String vfModuleId = "vfModuleId";
2913         String instanceName = "vfModuleName";
2914         Map<String, String> cloudParams = new HashMap<>();
2915         cloudParams.put("param1", "param1Value");
2916         VfModule expected = new VfModule();
2917         expected.setVfModuleId(vfModuleId);
2918         expected.setVfModuleName(instanceName);
2919         expected.setCloudParams(cloudParams);
2920         expected.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
2921         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2922         List<Map<String, String>> instanceParams = new ArrayList<>();
2923         instanceParams.add(cloudParams);
2924
2925         VfModule actual = SPY_bbInputSetup.createVfModule(lookupKeyMap, vfModuleId, instanceName, instanceParams);
2926
2927         assertThat(actual, sameBeanAs(expected));
2928         assertEquals("LookupKeyMap is populated", vfModuleId, lookupKeyMap.get(ResourceKey.VF_MODULE_ID));
2929
2930         expected.getCloudParams().clear();
2931         actual = SPY_bbInputSetup.createVfModule(lookupKeyMap, vfModuleId, instanceName, null);
2932         assertThat(actual, sameBeanAs(expected));
2933     }
2934
2935     @Test
2936     public void testCreateVolumeGroup() {
2937         String volumeGroupId = "volumeGroupId";
2938         String instanceName = "vfModuleName";
2939         String vnfType = "vnfType";
2940         Map<String, String> cloudParams = new HashMap<>();
2941         cloudParams.put("param1", "param1Value");
2942         VolumeGroup expected = new VolumeGroup();
2943         expected.setVolumeGroupId(volumeGroupId);
2944         expected.setVolumeGroupName(instanceName);
2945         expected.setCloudParams(cloudParams);
2946         expected.setVnfType(vnfType);
2947         expected.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
2948         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2949         List<Map<String, String>> instanceParams = new ArrayList<>();
2950         instanceParams.add(cloudParams);
2951
2952         VolumeGroup actual =
2953                 SPY_bbInputSetup.createVolumeGroup(lookupKeyMap, volumeGroupId, instanceName, vnfType, instanceParams);
2954
2955         assertThat(actual, sameBeanAs(expected));
2956         assertEquals("LookupKeyMap is populated", volumeGroupId, lookupKeyMap.get(ResourceKey.VOLUME_GROUP_ID));
2957
2958         expected.getCloudParams().clear();
2959         actual = SPY_bbInputSetup.createVolumeGroup(lookupKeyMap, volumeGroupId, instanceName, vnfType, null);
2960         assertThat(actual, sameBeanAs(expected));
2961     }
2962
2963     @Test
2964     public void testCreateNetwork() {
2965         String networkId = "networkId";
2966         String instanceName = "networkName";
2967         Map<String, String> cloudParams = new HashMap<>();
2968         cloudParams.put("param1", "param1Value");
2969         L3Network expected = new L3Network();
2970         expected.setNetworkId(networkId);
2971         expected.setNetworkName(instanceName);
2972         expected.setCloudParams(cloudParams);
2973         Platform platform = new Platform();
2974         platform.setPlatformName("platformName");
2975         expected.setPlatform(platform);
2976         LineOfBusiness lineOfBusiness = new LineOfBusiness();
2977         lineOfBusiness.setLineOfBusinessName("lineOfBusiness");
2978         expected.setLineOfBusiness(lineOfBusiness);
2979         expected.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
2980         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2981         List<Map<String, String>> instanceParams = new ArrayList<>();
2982         instanceParams.add(cloudParams);
2983         org.onap.so.serviceinstancebeans.Platform platformRequest = new org.onap.so.serviceinstancebeans.Platform();
2984         org.onap.so.serviceinstancebeans.LineOfBusiness lineOfBusinessRequest =
2985                 new org.onap.so.serviceinstancebeans.LineOfBusiness();
2986         lineOfBusinessRequest.setLineOfBusinessName("lineOfBusiness");
2987         platformRequest.setPlatformName("platformName");
2988         BBInputSetupParameter parameter = new BBInputSetupParameter.Builder().setRequestId(REQUEST_ID)
2989                 .setPlatform(platformRequest).setLineOfBusiness(lineOfBusinessRequest).build();
2990         L3Network actual =
2991                 SPY_bbInputSetup.createNetwork(lookupKeyMap, instanceName, networkId, instanceParams, parameter);
2992
2993         assertThat(actual, sameBeanAs(expected));
2994         assertEquals("LookupKeyMap is populated", networkId, lookupKeyMap.get(ResourceKey.NETWORK_ID));
2995
2996         expected.getCloudParams().clear();
2997
2998         actual = SPY_bbInputSetup.createNetwork(lookupKeyMap, instanceName, networkId, null, parameter);
2999         assertThat(actual, sameBeanAs(expected));
3000     }
3001
3002     @Test
3003     public void testCreateGenericVnf() {
3004         String vnfId = "vnfId";
3005         String instanceName = "vnfName";
3006         String vnfType = "vnfType";
3007         String platformName = "platformName";
3008         String lineOfBusinessName = "lineOfBusinessName";
3009         String productFamilyId = "productFamilyId";
3010         String applicationId = "applicationId";
3011         Platform platform = new Platform();
3012         platform.setPlatformName(platformName);
3013         LineOfBusiness lineOfBusiness = new LineOfBusiness();
3014         lineOfBusiness.setLineOfBusinessName(lineOfBusinessName);
3015         Map<String, String> cloudParams = new HashMap<>();
3016         cloudParams.put("param1", "param1Value");
3017         GenericVnf expected = new GenericVnf();
3018         expected.setVnfId(vnfId);
3019         expected.setVnfName(instanceName);
3020         expected.setVnfType(vnfType);
3021         expected.setCloudParams(cloudParams);
3022         expected.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
3023         expected.setPlatform(platform);
3024         expected.setLineOfBusiness(lineOfBusiness);
3025         expected.setProvStatus("PREPROV");
3026         expected.setServiceId(productFamilyId);
3027         expected.setApplicationId(applicationId);
3028         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
3029         List<Map<String, String>> instanceParams = new ArrayList<>();
3030         instanceParams.add(cloudParams);
3031         org.onap.so.serviceinstancebeans.Platform requestPlatform = new org.onap.so.serviceinstancebeans.Platform();
3032         platform.setPlatformName(platformName);
3033         org.onap.so.serviceinstancebeans.LineOfBusiness requestLineOfBusiness =
3034                 new org.onap.so.serviceinstancebeans.LineOfBusiness();
3035         lineOfBusiness.setLineOfBusinessName(lineOfBusinessName);
3036
3037         doReturn(platform).when(bbInputSetupMapperLayer).mapRequestPlatform(requestPlatform);
3038         doReturn(lineOfBusiness).when(bbInputSetupMapperLayer).mapRequestLineOfBusiness(requestLineOfBusiness);
3039
3040         GenericVnf actual = SPY_bbInputSetup.createGenericVnf(lookupKeyMap, instanceName, requestPlatform,
3041                 requestLineOfBusiness, vnfId, vnfType, instanceParams, productFamilyId, applicationId);
3042
3043         assertThat(actual, sameBeanAs(expected));
3044         assertEquals("LookupKeyMap is populated", vnfId, lookupKeyMap.get(ResourceKey.GENERIC_VNF_ID));
3045
3046         expected.getCloudParams().clear();
3047         actual = SPY_bbInputSetup.createGenericVnf(lookupKeyMap, instanceName, requestPlatform, requestLineOfBusiness,
3048                 vnfId, vnfType, null, productFamilyId, applicationId);
3049         assertThat(actual, sameBeanAs(expected));
3050     }
3051
3052     @Test
3053     public void testMapCatalogVfModule() {
3054         String vnfModelCustomizationUUID = "vnfResourceCustUUID";
3055         String vfModuleCustomizationUUID = "vfModelCustomizationUUID";
3056         VfModule vfModule = new VfModule();
3057         ModelInfo modelInfo = new ModelInfo();
3058         modelInfo.setModelCustomizationUuid(vfModuleCustomizationUUID);
3059         Service service = new Service();
3060         VnfResourceCustomization vnfResourceCust = new VnfResourceCustomization();
3061         vnfResourceCust.setModelCustomizationUUID(vnfModelCustomizationUUID);
3062         VfModuleCustomization vfModuleCust = new VfModuleCustomization();
3063         vfModuleCust.setModelCustomizationUUID(vfModuleCustomizationUUID);
3064         vnfResourceCust.getVfModuleCustomizations().add(vfModuleCust);
3065         service.getVnfCustomizations().add(vnfResourceCust);
3066         ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
3067
3068         doReturn(modelInfoVfModule).when(bbInputSetupMapperLayer).mapCatalogVfModuleToVfModule(vfModuleCust);
3069
3070         SPY_bbInputSetup.mapCatalogVfModule(vfModule, modelInfo, service, vnfModelCustomizationUUID);
3071
3072         assertThat(vfModule.getModelInfoVfModule(), sameBeanAs(modelInfoVfModule));
3073
3074         modelInfo.setModelCustomizationUuid(null);
3075         modelInfo.setModelCustomizationId(vfModuleCustomizationUUID);
3076
3077         SPY_bbInputSetup.mapCatalogVfModule(vfModule, modelInfo, service, vnfModelCustomizationUUID);
3078
3079         assertThat(vfModule.getModelInfoVfModule(), sameBeanAs(modelInfoVfModule));
3080     }
3081
3082     @Test
3083     public void testMapCatalogVfModuleIfNoVfUnderVnf() {
3084         String vnfModelCustomizationUUID = "vnfResourceCustUUID";
3085         String vfModuleCustomizationUUID = "vfModelCustomizationUUID";
3086         VfModule vfModule = new VfModule();
3087         ModelInfo modelInfo = new ModelInfo();
3088         modelInfo.setModelCustomizationUuid(vfModuleCustomizationUUID);
3089         Service service = new Service();
3090         VnfResourceCustomization vnfResourceCust = new VnfResourceCustomization();
3091         vnfResourceCust.setModelCustomizationUUID(vnfModelCustomizationUUID);
3092         VfModuleCustomization vfModuleCust = new VfModuleCustomization();
3093         vfModuleCust.setModelCustomizationUUID(vfModuleCustomizationUUID);
3094         ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
3095         doReturn(vfModuleCust).when(SPY_bbInputSetupUtils)
3096                 .getVfModuleCustomizationByModelCuztomizationUUID(vfModuleCustomizationUUID);
3097         doReturn(modelInfoVfModule).when(bbInputSetupMapperLayer).mapCatalogVfModuleToVfModule(vfModuleCust);
3098
3099         SPY_bbInputSetup.mapCatalogVfModule(vfModule, modelInfo, service, vnfModelCustomizationUUID);
3100
3101         assertThat(vfModule.getModelInfoVfModule(), sameBeanAs(modelInfoVfModule));
3102
3103         verify(SPY_bbInputSetupUtils, times(1))
3104                 .getVfModuleCustomizationByModelCuztomizationUUID(modelInfo.getModelCustomizationId());
3105     }
3106
3107     @Test
3108     public void testPopulateVfModule() throws Exception {
3109         String vnfId = "vnfId";
3110         String vfModuleId = "vfModuleId";
3111         String volumeGroupId = "volumeGroupId";
3112         String vfModuleCustomizationId = "vfModuleCustomizationId";
3113         ModelInfo modelInfo = new ModelInfo();
3114         modelInfo.setModelCustomizationId(vfModuleCustomizationId);
3115         Service service = new Service();
3116         ServiceModel serviceModel = new ServiceModel();
3117         serviceModel.setCurrentService(service);
3118         String bbName = AssignFlows.VF_MODULE.toString();
3119         ServiceInstance serviceInstance = new ServiceInstance();
3120         GenericVnf vnf = new GenericVnf();
3121         vnf.setVnfId(vnfId);
3122         VolumeGroup volumeGroup = new VolumeGroup();
3123         volumeGroup.setVolumeGroupId(volumeGroupId);
3124         vnf.getVolumeGroups().add(volumeGroup);
3125         serviceInstance.getVnfs().add(vnf);
3126         VfModule vfModule1 = new VfModule();
3127         vfModule1.setVfModuleId("vfModuleId1");
3128         VfModule vfModule2 = new VfModule();
3129         vfModule2.setVfModuleId("vfModuleId2");
3130         vnf.getVfModules().add(vfModule1);
3131         vnf.getVfModules().add(vfModule2);
3132         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
3133         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, vnfId);
3134         String resourceId = vfModuleId;
3135         RelatedInstanceList[] relatedInstanceList = null;
3136         String instanceName = "vfModuleName";
3137         List<Map<String, String>> instanceParams = null;
3138         CloudConfiguration cloudConfiguration = new CloudConfiguration();
3139
3140         org.onap.aai.domain.yang.GenericVnf vnfAAI = new org.onap.aai.domain.yang.GenericVnf();
3141         vnfAAI.setModelCustomizationId("vnfModelCustId");
3142         org.onap.aai.domain.yang.VolumeGroup volumeGroupAAI = new org.onap.aai.domain.yang.VolumeGroup();
3143         volumeGroupAAI.setModelCustomizationId(vfModuleCustomizationId);
3144         org.onap.aai.domain.yang.VfModule vfModuleAAI = new org.onap.aai.domain.yang.VfModule();
3145         vfModuleAAI.setModelCustomizationId(vfModuleCustomizationId);
3146
3147         doReturn(vnfAAI).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
3148         doReturn(volumeGroupAAI).when(SPY_bbInputSetupUtils).getAAIVolumeGroup(CLOUD_OWNER,
3149                 cloudConfiguration.getLcpCloudRegionId(), volumeGroup.getVolumeGroupId());
3150         doReturn(vfModuleAAI).when(SPY_bbInputSetupUtils).getAAIVfModule(isA(String.class), isA(String.class));
3151         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(isA(GenericVnf.class), isA(ModelInfo.class),
3152                 isA(Service.class));
3153         doNothing().when(SPY_bbInputSetup).mapCatalogVfModule(isA(VfModule.class), isA(ModelInfo.class),
3154                 isA(Service.class), isA(String.class));
3155
3156         SPY_bbInputSetup.populateVfModule(new BBInputSetupParameter.Builder().setRequestId(REQUEST_ID)
3157                 .setModelInfo(modelInfo).setService(service).setBbName(bbName).setServiceInstance(serviceInstance)
3158                 .setLookupKeyMap(lookupKeyMap).setResourceId(resourceId).setRelatedInstanceList(relatedInstanceList)
3159                 .setInstanceName(instanceName).setInstanceParams(instanceParams)
3160                 .setCloudConfiguration(cloudConfiguration).setServiceModel(serviceModel).build());
3161
3162         verify(SPY_bbInputSetup, times(3)).mapCatalogVfModule(isA(VfModule.class), isA(ModelInfo.class),
3163                 isA(Service.class), isA(String.class));
3164         assertEquals("Lookup Key Map populated with VfModule Id", vfModuleId,
3165                 lookupKeyMap.get(ResourceKey.VF_MODULE_ID));
3166         assertEquals("Lookup Key Map populated with VolumeGroup Id", volumeGroupId,
3167                 lookupKeyMap.get(ResourceKey.VOLUME_GROUP_ID));
3168     }
3169
3170     @Test
3171     public void testPopulateVfModuleIsReplaceCorrectPopulationOfVfs() throws Exception {
3172         String vnfId = "vnfId";
3173         String vfModuleId = "vfModuleId";
3174         String volumeGroupId = "volumeGroupId";
3175         String vfModuleCustomizationId = "vfModuleCustomizationId";
3176         ModelInfo modelInfo = new ModelInfo();
3177         modelInfo.setModelCustomizationId(vfModuleCustomizationId);
3178         Service currentService = new Service();
3179         currentService.setModelUUID("currentUUID");
3180         Service newService = new Service();
3181         newService.setModelUUID("newUUID");
3182         ServiceModel serviceModel = new ServiceModel();
3183         serviceModel.setCurrentService(currentService);
3184         serviceModel.setNewService(newService);
3185         String bbName = "ActivateVfModuleBB";
3186         ServiceInstance serviceInstance = new ServiceInstance();
3187         GenericVnf vnf = new GenericVnf();
3188         vnf.setVnfId(vnfId);
3189         VolumeGroup volumeGroup = new VolumeGroup();
3190         volumeGroup.setVolumeGroupId(volumeGroupId);
3191         vnf.getVolumeGroups().add(volumeGroup);
3192         serviceInstance.getVnfs().add(vnf);
3193         VfModule vfModule1 = new VfModule();
3194         vfModule1.setVfModuleId("vfModuleId1");
3195         VfModule vfModule2 = new VfModule();
3196         vfModule2.setVfModuleId("vfModuleId2");
3197         vnf.getVfModules().add(vfModule1);
3198         vnf.getVfModules().add(vfModule2);
3199         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
3200         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, vnfId);
3201         lookupKeyMap.put(ResourceKey.VF_MODULE_ID, "vfModuleId1");
3202         String resourceId = vfModuleId;
3203         RelatedInstanceList[] relatedInstanceList = new RelatedInstanceList[1];
3204         RelatedInstanceList relatedInstanceListObj = new RelatedInstanceList();
3205         RelatedInstance relatedInstance = new RelatedInstance();
3206         relatedInstance.setInstanceId(vnfId);
3207
3208         ModelInfo vnfModelInfo = new ModelInfo();
3209         vnfModelInfo.setModelCustomizationId("vnfCustomizationId");
3210         vnfModelInfo.setModelType(ModelType.vnf);
3211         relatedInstance.setModelInfo(vnfModelInfo);
3212         relatedInstanceListObj.setRelatedInstance(relatedInstance);
3213         relatedInstanceList[0] = relatedInstanceListObj;
3214
3215         String instanceName = "vfModuleName";
3216         List<Map<String, String>> instanceParams = null;
3217         CloudConfiguration cloudConfiguration = new CloudConfiguration();
3218
3219         org.onap.aai.domain.yang.GenericVnf vnfAAI = new org.onap.aai.domain.yang.GenericVnf();
3220         vnfAAI.setModelCustomizationId("vnfModelCustId");
3221         org.onap.aai.domain.yang.VolumeGroup volumeGroupAAI = new org.onap.aai.domain.yang.VolumeGroup();
3222         volumeGroupAAI.setModelCustomizationId(vfModuleCustomizationId);
3223         org.onap.aai.domain.yang.VfModule vfModuleAAI = new org.onap.aai.domain.yang.VfModule();
3224         vfModuleAAI.setModelCustomizationId(vfModuleCustomizationId);
3225
3226         doReturn(vnfAAI).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
3227         doReturn(volumeGroupAAI).when(SPY_bbInputSetupUtils).getAAIVolumeGroup(CLOUD_OWNER,
3228                 cloudConfiguration.getLcpCloudRegionId(), volumeGroup.getVolumeGroupId());
3229         doReturn(vfModuleAAI).when(SPY_bbInputSetupUtils).getAAIVfModule(isA(String.class), isA(String.class));
3230         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(isA(GenericVnf.class), isA(ModelInfo.class),
3231                 isA(Service.class));
3232         doNothing().when(SPY_bbInputSetup).mapCatalogVfModule(isA(VfModule.class), isA(ModelInfo.class),
3233                 isA(Service.class), isA(String.class));
3234
3235         BBInputSetupParameter parameter = new BBInputSetupParameter.Builder().setModelInfo(modelInfo)
3236                 .setService(newService).setBbName(bbName).setServiceInstance(serviceInstance)
3237                 .setLookupKeyMap(lookupKeyMap).setResourceId(resourceId).setRelatedInstanceList(relatedInstanceList)
3238                 .setInstanceName(instanceName).setInstanceParams(instanceParams)
3239                 .setCloudConfiguration(cloudConfiguration).setIsReplace(true).setServiceModel(serviceModel).build();
3240         SPY_bbInputSetup.populateVfModule(parameter);
3241
3242         verify(SPY_bbInputSetup, times(1)).mapCatalogVfModule(isA(VfModule.class), isA(ModelInfo.class),
3243                 eq(currentService), eq("vnfModelCustId"));
3244         verify(SPY_bbInputSetup, times(1)).mapCatalogVfModule(isA(VfModule.class), isA(ModelInfo.class), eq(newService),
3245                 eq("vnfCustomizationId"));
3246         assertEquals("Lookup Key Map populated with VfModule Id", "vfModuleId1",
3247                 lookupKeyMap.get(ResourceKey.VF_MODULE_ID));
3248         assertEquals("Lookup Key Map populated with VolumeGroup Id", volumeGroupId,
3249                 lookupKeyMap.get(ResourceKey.VOLUME_GROUP_ID));
3250     }
3251
3252     @Test
3253     public void testPopulateVfModuleIsReplace() throws Exception {
3254         String vnfId = "vnfId";
3255         String vfModuleId = "vfModuleId";
3256         String volumeGroupId = "volumeGroupId";
3257         String vfModuleCustomizationId = "vfModuleCustomizationId";
3258         ModelInfo modelInfo = new ModelInfo();
3259         modelInfo.setModelCustomizationId(vfModuleCustomizationId);
3260         Service currentService = new Service();
3261         Service newService = new Service();
3262         ServiceModel serviceModel = new ServiceModel();
3263         serviceModel.setCurrentService(currentService);
3264         currentService.setModelUUID("currentUUID");
3265         serviceModel.setNewService(newService);
3266         currentService.setModelUUID("newUUID");
3267         String bbName = AssignFlows.VF_MODULE.toString();
3268         ServiceInstance serviceInstance = new ServiceInstance();
3269         GenericVnf vnf = new GenericVnf();
3270         vnf.setVnfId(vnfId);
3271         VolumeGroup volumeGroup = new VolumeGroup();
3272         volumeGroup.setVolumeGroupId(volumeGroupId);
3273         vnf.getVolumeGroups().add(volumeGroup);
3274         serviceInstance.getVnfs().add(vnf);
3275         VfModule vfModule1 = new VfModule();
3276         vfModule1.setVfModuleId("vfModuleId1");
3277         VfModule vfModule2 = new VfModule();
3278         vfModule2.setVfModuleId("vfModuleId2");
3279         vnf.getVfModules().add(vfModule1);
3280         vnf.getVfModules().add(vfModule2);
3281         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
3282         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, vnfId);
3283         lookupKeyMap.put(ResourceKey.VF_MODULE_ID, vfModuleId);
3284         String resourceId = vfModuleId;
3285         RelatedInstanceList[] relatedInstanceList = new RelatedInstanceList[1];
3286         RelatedInstanceList relatedInstanceListObj = new RelatedInstanceList();
3287         RelatedInstance relatedInstance = new RelatedInstance();
3288         relatedInstance.setInstanceId(vnfId);
3289
3290         ModelInfo vnfModelInfo = new ModelInfo();
3291         vnfModelInfo.setModelCustomizationId("vnfCustomizationId");
3292         vnfModelInfo.setModelType(ModelType.vnf);
3293         relatedInstance.setModelInfo(vnfModelInfo);
3294         relatedInstanceListObj.setRelatedInstance(relatedInstance);
3295         relatedInstanceList[0] = relatedInstanceListObj;
3296
3297         String instanceName = "vfModuleName";
3298         List<Map<String, String>> instanceParams = null;
3299         CloudConfiguration cloudConfiguration = new CloudConfiguration();
3300
3301         org.onap.aai.domain.yang.GenericVnf vnfAAI = new org.onap.aai.domain.yang.GenericVnf();
3302         vnfAAI.setModelCustomizationId("vnfModelCustId");
3303         org.onap.aai.domain.yang.VolumeGroup volumeGroupAAI = new org.onap.aai.domain.yang.VolumeGroup();
3304         volumeGroupAAI.setModelCustomizationId(vfModuleCustomizationId);
3305         org.onap.aai.domain.yang.VfModule vfModuleAAI = new org.onap.aai.domain.yang.VfModule();
3306         vfModuleAAI.setModelCustomizationId(vfModuleCustomizationId);
3307
3308         doReturn(vnfAAI).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
3309         doReturn(volumeGroupAAI).when(SPY_bbInputSetupUtils).getAAIVolumeGroup(CLOUD_OWNER,
3310                 cloudConfiguration.getLcpCloudRegionId(), volumeGroup.getVolumeGroupId());
3311         doReturn(vfModuleAAI).when(SPY_bbInputSetupUtils).getAAIVfModule(isA(String.class), isA(String.class));
3312         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(isA(GenericVnf.class), isA(ModelInfo.class),
3313                 isA(Service.class));
3314         doNothing().when(SPY_bbInputSetup).mapCatalogVfModule(isA(VfModule.class), isA(ModelInfo.class),
3315                 isA(Service.class), isA(String.class));
3316
3317         BBInputSetupParameter parameter = new BBInputSetupParameter.Builder().setModelInfo(modelInfo)
3318                 .setService(newService).setServiceInstance(serviceInstance).setBbName(bbName)
3319                 .setLookupKeyMap(lookupKeyMap).setResourceId(resourceId).setRelatedInstanceList(relatedInstanceList)
3320                 .setInstanceName(instanceName).setInstanceParams(instanceParams)
3321                 .setCloudConfiguration(cloudConfiguration).setIsReplace(true).setServiceModel(serviceModel).build();
3322
3323
3324         SPY_bbInputSetup.populateVfModule(parameter);
3325
3326         verify(SPY_bbInputSetup, times(2)).mapCatalogVfModule(isA(VfModule.class), isA(ModelInfo.class),
3327                 eq(serviceModel.getCurrentService()), isA(String.class));
3328         verify(SPY_bbInputSetup, times(1)).mapCatalogVfModule(isA(VfModule.class), isA(ModelInfo.class),
3329                 eq(serviceModel.getNewService()), isA(String.class));
3330         assertEquals("Lookup Key Map populated with VfModule Id", vfModuleId,
3331                 lookupKeyMap.get(ResourceKey.VF_MODULE_ID));
3332         assertEquals("Lookup Key Map populated with VolumeGroup Id", volumeGroupId,
3333                 lookupKeyMap.get(ResourceKey.VOLUME_GROUP_ID));
3334     }
3335
3336     @Test
3337     public void testGettingVnfcToConfiguration() throws Exception {
3338
3339         String vnfcName = "vnfcName";
3340         org.onap.aai.domain.yang.Configuration expectedAAI = new org.onap.aai.domain.yang.Configuration();
3341         AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.VNFC, vnfcName);
3342         AAIResultWrapper configurationWrapper =
3343                 new AAIResultWrapper(new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
3344
3345         doReturn(new AAIResultWrapper(null)).when(SPY_bbInputSetupUtils).getAAIResourceDepthOne(aaiResourceUri);
3346         Vnfc vnfc = SPY_bbInputSetup.getVnfcToConfiguration(vnfcName);
3347         Assert.assertNull(vnfc);
3348
3349         doReturn(configurationWrapper).when(SPY_bbInputSetupUtils).getAAIResourceDepthOne(aaiResourceUri);
3350         vnfc = SPY_bbInputSetup.getVnfcToConfiguration(vnfcName);
3351         Assert.assertNotNull(vnfc);
3352     }
3353 }