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