Multiple PNFs with same ModelInfo but different instance name not able to be instantiated
[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         String pnfInstanceName = "pnfInstanceName";
2127
2128         expected.put(ResourceKey.SERVICE_INSTANCE_ID, serviceInstanceId);
2129         expected.put(ResourceKey.NETWORK_ID, networkId);
2130         expected.put(ResourceKey.GENERIC_VNF_ID, vnfId);
2131         expected.put(ResourceKey.PNF, pnfId);
2132         expected.put(ResourceKey.VF_MODULE_ID, vfModuleId);
2133         expected.put(ResourceKey.VOLUME_GROUP_ID, volumeGroupId);
2134         expected.put(ResourceKey.CONFIGURATION_ID, configurationId);
2135         expected.put(ResourceKey.INSTANCE_GROUP_ID, instanceGroupId);
2136         expected.put(ResourceKey.VNF_INSTANCE_NAME, vnfInstanceName);
2137         expected.put(ResourceKey.VF_MODULE_INSTANCE_NAME, vfModuleInstanceName);
2138         expected.put(ResourceKey.CHILD_SERVICE_INSTANCE_ID, childServiceInstanceId);
2139         expected.put(ResourceKey.CHILD_SERVICE_INSTANCE_NAME, childServiceInstanceName);
2140         expected.put(ResourceKey.PNF_INSTANCE_NAME, pnfInstanceName);
2141
2142         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
2143         workflowResourceIds.setServiceInstanceId(serviceInstanceId);
2144         workflowResourceIds.setNetworkId(networkId);
2145         workflowResourceIds.setVnfId(vnfId);
2146         workflowResourceIds.setPnfId(pnfId);
2147         workflowResourceIds.setVfModuleId(vfModuleId);
2148         workflowResourceIds.setVolumeGroupId(volumeGroupId);
2149         workflowResourceIds.setConfigurationId(configurationId);
2150         workflowResourceIds.setInstanceGroupId(instanceGroupId);
2151         workflowResourceIds.setVnfInstanceName(vnfInstanceName);
2152         workflowResourceIds.setVfModuleInstanceName(vfModuleInstanceName);
2153         workflowResourceIds.setChildServiceInstanceId(childServiceInstanceId);
2154         workflowResourceIds.setChildServiceInstanceName(childServiceInstanceName);
2155         workflowResourceIds.setPnfInstanceName(pnfInstanceName);
2156
2157         SPY_bbInputSetup.populateLookupKeyMapWithIds(workflowResourceIds, actual);
2158
2159         assertThat(actual, sameBeanAs(expected));
2160     }
2161
2162     @Test
2163     public void testGetVfModulesByInstanceName() throws IOException {
2164         org.onap.so.serviceinstancebeans.Service serviceMacro = mapper.readValue(
2165                 new File(RESOURCE_PATH + "ServiceMacroVfModules.json"), org.onap.so.serviceinstancebeans.Service.class);
2166         Resources resources = serviceMacro.getResources();
2167         VfModules expectedVfModule = resources.getVnfs().get(0).getVfModules().get(2);
2168         assertEquals(expectedVfModule,
2169                 SPY_bbInputSetup.getVfModulesByInstanceName("vmxnjr001_AVPN_base_vRE_BV_expansion_002", resources));
2170     }
2171
2172     @Test
2173     public void testGetVfModulesByKey() throws IOException {
2174         org.onap.so.serviceinstancebeans.Service serviceMacro = mapper.readValue(
2175                 new File(RESOURCE_PATH + "ServiceMacroVfModules.json"), org.onap.so.serviceinstancebeans.Service.class);
2176         Resources resources = serviceMacro.getResources();
2177         VfModules expectedVfModule = resources.getVnfs().get(0).getVfModules().get(0);
2178         assertEquals(expectedVfModule,
2179                 SPY_bbInputSetup.getVfModulesByKey("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f", resources));
2180     }
2181
2182     @Test
2183     public void testFindVnfsByInstanceName() throws IOException {
2184         org.onap.so.serviceinstancebeans.Service serviceMacro = mapper.readValue(
2185                 new File(RESOURCE_PATH + "ServiceMacroVfModules.json"), org.onap.so.serviceinstancebeans.Service.class);
2186         Resources resources = serviceMacro.getResources();
2187         Vnfs expectedVnf = resources.getVnfs().get(0);
2188         assertEquals(expectedVnf, SPY_bbInputSetup.findVnfsByInstanceName("vmxnjr001", resources));
2189     }
2190
2191     @Test
2192     public void testVnfsByKey() throws IOException {
2193         org.onap.so.serviceinstancebeans.Service serviceMacro = mapper.readValue(
2194                 new File(RESOURCE_PATH + "ServiceMacroVfModules.json"), org.onap.so.serviceinstancebeans.Service.class);
2195         Resources resources = serviceMacro.getResources();
2196         Vnfs expectedVnf = resources.getVnfs().get(0);
2197         assertEquals(expectedVnf, SPY_bbInputSetup.findVnfsByKey("ab153b6e-c364-44c0-bef6-1f2982117f04", resources));
2198     }
2199
2200     @Test
2201     public void testGBBMacroNoUserParamsVrfConfiguration() throws Exception {
2202         String resourceId = "123";
2203         String vnfType = "vnfType";
2204         String requestAction = "createInstance";
2205         Service service = Mockito.mock(Service.class);
2206         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2207                 GeneralBuildingBlock.class);
2208         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2209                 ExecuteBuildingBlock.class);
2210         RequestDetails requestDetails = mapper
2211                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacroVrf.json"), RequestDetails.class);
2212         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2213
2214         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2215         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2216         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2217         buildingBlock.setBpmnFlowName("AssignVrfConfigurationBB");
2218         buildingBlock.setKey("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
2219
2220         doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2221                 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2222         doReturn(service).when(SPY_bbInputSetupUtils)
2223                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2224
2225         RelatedInstance relatedVpnBinding = new RelatedInstance();
2226         relatedVpnBinding.setInstanceId("vpnBindingInstanceId");
2227         RelatedInstance relatedLocalNetwork = new RelatedInstance();
2228         relatedLocalNetwork.setInstanceId("localNetworkInstanceId");
2229         org.onap.aai.domain.yang.VpnBinding aaiVpnBinding = new org.onap.aai.domain.yang.VpnBinding();
2230         aaiVpnBinding.setVpnId("vpnBindingId");
2231         org.onap.aai.domain.yang.L3Network aaiLocalNetwork = new org.onap.aai.domain.yang.L3Network();
2232         aaiLocalNetwork.setNetworkId("localNetworkId");
2233         Optional<org.onap.aai.domain.yang.VpnBinding> aaiAICVpnBindingOp =
2234                 Optional.of(new org.onap.aai.domain.yang.VpnBinding());
2235         aaiAICVpnBindingOp.get().setVpnId("AICVpnBindingId");
2236         ServiceProxy proxy = new ServiceProxy();
2237         proxy.setType("transport");
2238         proxy.setServiceInstance(new ServiceInstance());
2239         proxy.getServiceInstance().setModelInfoServiceInstance(new ModelInfoServiceInstance());
2240         proxy.getServiceInstance().getModelInfoServiceInstance().setModelUuid("sourceServiceModelUUID");
2241         doReturn(relatedVpnBinding).when(SPY_bbInputSetupUtils).getRelatedInstanceByType(requestDetails,
2242                 ModelType.vpnBinding);
2243         doReturn(relatedLocalNetwork).when(SPY_bbInputSetupUtils).getRelatedInstanceByType(requestDetails,
2244                 ModelType.network);
2245         doReturn(aaiVpnBinding).when(SPY_bbInputSetupUtils).getAAIVpnBinding(relatedVpnBinding.getInstanceId());
2246         doReturn(aaiLocalNetwork).when(SPY_bbInputSetupUtils).getAAIL3Network(relatedLocalNetwork.getInstanceId());
2247         doReturn(aaiAICVpnBindingOp).when(SPY_bbInputSetupUtils).getAICVpnBindingFromNetwork(aaiLocalNetwork);
2248         doReturn(proxy).when(SPY_bbInputSetup).getServiceProxy(service);
2249
2250         Configuration configuration = new Configuration();
2251         configuration.setConfigurationId("configurationId");
2252         gBB.getServiceInstance().getConfigurations().add(configuration);
2253         List<ConfigurationResourceCustomization> configurationCustList = new ArrayList<>();
2254         ConfigurationResourceCustomization configurationCust = new ConfigurationResourceCustomization();
2255         configurationCust.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
2256         configurationCustList.add(configurationCust);
2257         doNothing().when(SPY_bbInputSetup).populateConfiguration(any(BBInputSetupParameter.class));
2258
2259         gBB = SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2260         verify(SPY_bbInputSetup, times(1)).populateConfiguration(any(BBInputSetupParameter.class));
2261         assertEquals(gBB.getCustomer().getVpnBindings().get(0).getVpnId(), "vpnBindingId");
2262         assertEquals(gBB.getServiceInstance().getNetworks().get(0).getNetworkId(), "localNetworkId");
2263         assertEquals(gBB.getServiceInstance().getNetworks().get(0).getVpnBindings().get(0).getVpnId(),
2264                 "AICVpnBindingId");
2265         assertEquals(gBB.getServiceInstance().getServiceProxies().get(0).getType(), "transport");
2266     }
2267
2268     @Test
2269     public void testGetServiceProxy() {
2270         ServiceProxy expected = new ServiceProxy();
2271         expected.setType("TRANSPORT");
2272         expected.setModelInfoServiceProxy(new ModelInfoServiceProxy());
2273         expected.getModelInfoServiceProxy().setModelUuid("modelUUID");
2274         expected.getModelInfoServiceProxy().setModelInstanceName("modelInstanceName");
2275         expected.setServiceInstance(new ServiceInstance());
2276         expected.getServiceInstance().setModelInfoServiceInstance(new ModelInfoServiceInstance());
2277         expected.getServiceInstance().getModelInfoServiceInstance().setModelUuid("modelUUID");
2278         expected.getServiceInstance().getModelInfoServiceInstance().setServiceType("TRANSPORT");
2279         Service service = new Service();
2280         ServiceProxyResourceCustomization serviceProxyCatalog = new ServiceProxyResourceCustomization();
2281         serviceProxyCatalog.setModelCustomizationUUID("modelCustomizationUUID");
2282         serviceProxyCatalog.setModelInstanceName("modelInstanceName");
2283         Service sourceService = new Service();
2284         sourceService.setModelUUID("modelUUID");
2285         sourceService.setServiceType("TRANSPORT");
2286         serviceProxyCatalog.setSourceService(sourceService);
2287         service.setServiceProxyCustomizations(new ArrayList<ServiceProxyResourceCustomization>());
2288         service.getServiceProxyCustomizations().add(serviceProxyCatalog);
2289         ServiceProxy actual = SPY_bbInputSetup.getServiceProxy(service);
2290         assertThat(actual, sameBeanAs(expected));
2291     }
2292
2293     @Test
2294     public void testgetGBBMacroWithEmptyUserParams() throws Exception {
2295         String resourceId = "123";
2296         String vnfType = "vnfType";
2297         String requestAction = "createInstance";
2298         Service service = Mockito.mock(Service.class);
2299         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2300                 GeneralBuildingBlock.class);
2301         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2302                 ExecuteBuildingBlock.class);
2303         RequestDetails requestDetails = mapper
2304                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2305         requestDetails.getRequestParameters().getUserParams().clear();
2306         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2307         aaiVnf.setModelCustomizationId("modelCustId");
2308         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2309         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2310         buildingBlock.setBpmnFlowName(AssignFlows.NETWORK_MACRO.toString())
2311                 .setKey("ab153b6e-c364-44c0-bef6-1f2982117f04").setIsVirtualLink(false);
2312
2313         doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2314                 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2315         doReturn(service).when(SPY_bbInputSetupUtils)
2316                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2317
2318         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2319         verify(SPY_bbInputSetup, times(1)).getGBBMacroNoUserParamsCreate(any(ExecuteBuildingBlock.class), any(),
2320                 any(String.class), any(String.class), any(GeneralBuildingBlock.class), any(Service.class));
2321     }
2322
2323     @Test(expected = Exception.class)
2324     public void testgetGBBMacroException() throws Exception {
2325         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2326                 ExecuteBuildingBlock.class);
2327         RequestDetails requestDetails = mapper
2328                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2329         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2330         String resourceId = "123";
2331         String vnfType = "vnfType";
2332         String requestAction = "createInstance";
2333
2334         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2335         buildingBlock.setBpmnFlowName("Network").setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
2336
2337         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2338     }
2339
2340     @Test
2341     public void test_getGBBMacroForVnfTypeNull_populateL3Network_shouldBeCalled() throws Exception {
2342         // given
2343         String resourceId = "123";
2344         String vnfType = "null";
2345         String requestAction = "createInstance";
2346         Service service = Mockito.mock(Service.class);
2347         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2348                 GeneralBuildingBlock.class);
2349         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2350
2351         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2352         RequestDetails requestDetails = mapper
2353                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2354         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2355                 ExecuteBuildingBlock.class);
2356         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2357         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2358         buildingBlock.setBpmnFlowName(AssignFlows.NETWORK_MACRO.toString())
2359                 .setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
2360
2361         doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2362                 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2363         doReturn(service).when(SPY_bbInputSetupUtils)
2364                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2365         // when
2366         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2367         // then
2368         verify(SPY_bbInputSetup, times(1)).populateL3Network(any(BBInputSetupParameter.class));
2369     }
2370
2371     @Test
2372     public void testgetGBBMacroNoUserParamsDeactivateInstnace() throws Exception {
2373         String resourceId = "123";
2374         String vnfType = "vnfType";
2375         String requestAction = "deactivateInstance";
2376         Service service = Mockito.mock(Service.class);
2377         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2378                 GeneralBuildingBlock.class);
2379         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2380                 ExecuteBuildingBlock.class);
2381         RequestDetails requestDetails = mapper
2382                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2383         requestDetails.getRequestParameters().setUserParams(null);
2384         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2385         aaiVnf.setModelCustomizationId("modelCustId");
2386         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2387         lookupKeyMap.put(ResourceKey.NETWORK_ID, "networkId");
2388         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "vnfId");
2389         lookupKeyMap.put(ResourceKey.VF_MODULE_ID, "vfModuleId");
2390         lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, "volumeGroupId");
2391         lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "serviceInstanceId");
2392         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2393         buildingBlock.setBpmnFlowName("DeactivateServiceInstanceBB").setKey("3c40d244-808e-42ca-b09a-256d83d19d0a");
2394
2395         doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2396                 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2397         doReturn(service).when(SPY_bbInputSetupUtils)
2398                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2399
2400         GeneralBuildingBlock actual = SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap,
2401                 requestAction, resourceId, vnfType);
2402         assertThat(actual, sameBeanAs(gBB));
2403     }
2404
2405     @Test
2406     public void test_getGBBMacroNoUserParamsCreate_shouldBeCalled() throws Exception {
2407         // given
2408         String resourceId = "123";
2409         String vnfType = "vnfType";
2410         String requestAction = "createInstance";
2411         Service service = Mockito.mock(Service.class);
2412         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2413                 GeneralBuildingBlock.class);
2414         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2415         List<NetworkResourceCustomization> networkCustList = new ArrayList<>();
2416         NetworkResourceCustomization networkCust = Mockito.mock(NetworkResourceCustomization.class);
2417         networkCustList.add(networkCust);
2418
2419         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2420         RequestDetails requestDetails = mapper
2421                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2422         requestDetails.getRequestParameters().setUserParams(null);
2423         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2424                 ExecuteBuildingBlock.class);
2425         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2426         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2427         buildingBlock.setBpmnFlowName(AssignFlows.NETWORK_MACRO.toString())
2428                 .setKey("ab153b6e-c364-44c0-bef6-1f2982117f04").setIsVirtualLink(false);
2429
2430         doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2431                 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2432         doReturn(service).when(SPY_bbInputSetupUtils)
2433                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2434         doReturn(networkCustList).when(service).getNetworkCustomizations();
2435         doReturn("ab153b6e-c364-44c0-bef6-1f2982117f04").when(networkCust).getModelCustomizationUUID();
2436         doNothing().when(SPY_bbInputSetup).populateL3Network(any(BBInputSetupParameter.class));
2437         // when
2438         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2439         // then
2440         verify(SPY_bbInputSetup, times(1)).getGBBMacroNoUserParamsCreate(executeBB, lookupKeyMap,
2441                 executeBB.getBuildingBlock().getBpmnFlowName(), "ab153b6e-c364-44c0-bef6-1f2982117f04", gBB, service);
2442     }
2443
2444     @Test
2445     public void test_getGBBMacroNoUserParamsCreate_shouldBeCalled_whenBBhasVirtualLink() throws Exception {
2446         // given
2447         String resourceId = "123";
2448         String vnfType = "vnfType";
2449         String requestAction = "createInstance";
2450         Service service = Mockito.mock(Service.class);
2451         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2452                 GeneralBuildingBlock.class);
2453         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2454         List<NetworkResourceCustomization> networkCustList = new ArrayList<>();
2455         NetworkResourceCustomization networkCust = Mockito.mock(NetworkResourceCustomization.class);
2456         networkCustList.add(networkCust);
2457         CollectionNetworkResourceCustomization collectionNetworkResourceCust =
2458                 Mockito.mock(CollectionNetworkResourceCustomization.class);
2459         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2460         aaiVnf.setModelCustomizationId("modelCustId");
2461         ModelInfoNetwork modelInfoNetwork = Mockito.mock(ModelInfoNetwork.class);
2462         NetworkResourceCustomization networkResourceCustomization = Mockito.mock(NetworkResourceCustomization.class);
2463
2464         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2465         RequestDetails requestDetails = mapper
2466                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2467         requestDetails.getRequestParameters().setUserParams(null);
2468         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2469                 ExecuteBuildingBlock.class);
2470         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2471         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2472         buildingBlock.setBpmnFlowName(AssignFlows.NETWORK_MACRO.toString())
2473                 .setKey("ab153b6e-c364-44c0-bef6-1f2982117f04").setIsVirtualLink(true);
2474
2475         doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2476                 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2477         doReturn(service).when(SPY_bbInputSetupUtils)
2478                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2479         doReturn(collectionNetworkResourceCust).when(SPY_bbInputSetupUtils)
2480                 .getCatalogCollectionNetworkResourceCustByID(any(String.class));
2481         doReturn(networkResourceCustomization).when(bbInputSetupMapperLayer)
2482                 .mapCollectionNetworkResourceCustToNetworkResourceCust(collectionNetworkResourceCust);
2483         doReturn(modelInfoNetwork).when(bbInputSetupMapperLayer)
2484                 .mapCatalogNetworkToNetwork(networkResourceCustomization);
2485         // when
2486         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2487         // then
2488         verify(SPY_bbInputSetup, times(1)).getGBBMacroNoUserParamsCreate(executeBB, lookupKeyMap,
2489                 executeBB.getBuildingBlock().getBpmnFlowName(), "ab153b6e-c364-44c0-bef6-1f2982117f04", gBB, service);
2490     }
2491
2492     @Test
2493     public void test_getGBBMacroNoUserParamsCreate_shouldBeCalled_whenBBhasVirtualLinkAndOtherFlowName()
2494             throws Exception {
2495         // given
2496         String otherFlowName = "CreateNetworkBB";
2497         String resourceId = "123";
2498         String vnfType = "vnfType";
2499         String requestAction = "createInstance";
2500         Service service = Mockito.mock(Service.class);
2501         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2502                 GeneralBuildingBlock.class);
2503         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2504         List<NetworkResourceCustomization> networkCustList = new ArrayList<>();
2505         NetworkResourceCustomization networkCust = Mockito.mock(NetworkResourceCustomization.class);
2506         networkCustList.add(networkCust);
2507         CollectionNetworkResourceCustomization collectionNetworkResourceCust =
2508                 Mockito.mock(CollectionNetworkResourceCustomization.class);
2509
2510         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2511         RequestDetails requestDetails = mapper
2512                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2513         requestDetails.getRequestParameters().setUserParams(null);
2514         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2515                 ExecuteBuildingBlock.class);
2516         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2517         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2518         buildingBlock.setBpmnFlowName(otherFlowName).setKey("ab153b6e-c364-44c0-bef6-1f2982117f04")
2519                 .setIsVirtualLink(true);
2520
2521         doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2522                 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2523         doReturn(service).when(SPY_bbInputSetupUtils)
2524                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2525         doReturn(collectionNetworkResourceCust).when(SPY_bbInputSetupUtils)
2526                 .getCatalogCollectionNetworkResourceCustByID(any(String.class));
2527         // when
2528         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2529         // then
2530         verify(SPY_bbInputSetup, times(1)).getGBBMacroNoUserParamsCreate(executeBB, lookupKeyMap,
2531                 executeBB.getBuildingBlock().getBpmnFlowName(), "ab153b6e-c364-44c0-bef6-1f2982117f04", gBB, service);
2532     }
2533
2534     @Test(expected = IllegalArgumentException.class)
2535     public void testgetGBBMacroNoUserParamsOtherException() throws Exception {
2536         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2537                 GeneralBuildingBlock.class);
2538         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2539                 ExecuteBuildingBlock.class);
2540         RequestDetails requestDetails = mapper
2541                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2542         requestDetails.getRequestParameters().setUserParams(null);
2543         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2544         aaiVnf.setModelCustomizationId("modelCustId");
2545         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2546         lookupKeyMap.put(ResourceKey.NETWORK_ID, "networkId");
2547         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "vnfId");
2548         lookupKeyMap.put(ResourceKey.VF_MODULE_ID, "vfModuleId");
2549         lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, "volumeGroupId");
2550         lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "serviceInstanceId");
2551         String resourceId = "123";
2552         String vnfType = "vnfType";
2553         Service service = Mockito.mock(Service.class);
2554         String requestAction = "assignInstance";
2555         doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2556                 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2557         doReturn(service).when(SPY_bbInputSetupUtils)
2558                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2559         String generatedId = "12131";
2560
2561         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2562     }
2563
2564     @Test
2565     public void test_getGBBMacroNoUserParamsExistingService_forCatalogNetwork() throws Exception {
2566         // given
2567         String requestAction = "unassignInstance";
2568         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2569                 GeneralBuildingBlock.class);
2570         L3Network network = new L3Network();
2571         network.setNetworkId("networkId");
2572         gBB.getServiceInstance().getNetworks().add(network);
2573         ServiceInstance serviceInstance = gBB.getServiceInstance();
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         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2580         Service service = Mockito.mock(Service.class);
2581         CloudConfiguration cloudConfiguration = new CloudConfiguration();
2582         cloudConfiguration.setLcpCloudRegionId("cloudRegionId");
2583         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
2584         org.onap.aai.domain.yang.L3Network aaiNetwork = new org.onap.aai.domain.yang.L3Network();
2585         aaiNetwork.setModelCustomizationId("modelCustId");
2586
2587         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2588         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2589         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2590         buildingBlock.setBpmnFlowName("DeleteNetworkBB").setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
2591
2592         aaiServiceInstance.setModelVersionId("modelVersionId");
2593         doReturn(service).when(SPY_bbInputSetupUtils)
2594                 .getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
2595         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils)
2596                 .getAAIServiceInstanceById(lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2597         doReturn(serviceInstance).when(SPY_bbInputSetup).getExistingServiceInstance(aaiServiceInstance);
2598         doReturn(gBB).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
2599         doReturn(aaiNetwork).when(SPY_bbInputSetupUtils).getAAIL3Network(network.getNetworkId());
2600         doNothing().when(SPY_bbInputSetup).mapCatalogNetwork(any(L3Network.class), any(ModelInfo.class),
2601                 any(Service.class));
2602         // when
2603         SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2604                 executeBB.getBuildingBlock().getBpmnFlowName(), requestAction, null);
2605         // then
2606         verify(SPY_bbInputSetup, times(1)).mapCatalogNetwork(any(L3Network.class), any(ModelInfo.class),
2607                 any(Service.class));
2608     }
2609
2610     @Test
2611     public void test_getGBBMacroNoUserParamsExistingService_forControllerExecutionBB() throws Exception {
2612         // given
2613         String requestAction = "unassignInstance";
2614         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2615                 GeneralBuildingBlock.class);
2616         L3Network network = new L3Network();
2617         network.setNetworkId("networkId");
2618         gBB.getServiceInstance().getNetworks().add(network);
2619         ServiceInstance serviceInstance = gBB.getServiceInstance();
2620         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2621                 ExecuteBuildingBlock.class);
2622         RequestDetails requestDetails = mapper
2623                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2624         requestDetails.getRequestParameters().setUserParams(null);
2625         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2626         Service service = Mockito.mock(Service.class);
2627         CloudConfiguration cloudConfiguration = new CloudConfiguration();
2628         cloudConfiguration.setLcpCloudRegionId("cloudRegionId");
2629         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
2630         org.onap.aai.domain.yang.L3Network aaiNetwork = new org.onap.aai.domain.yang.L3Network();
2631         aaiNetwork.setModelCustomizationId("modelCustId");
2632         GenericVnf vnf = new GenericVnf();
2633         vnf.setVnfId("vnfId");
2634         gBB.getServiceInstance().getVnfs().add(vnf);
2635         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2636         aaiVnf.setModelCustomizationId("modelCustId");
2637
2638         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2639         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2640         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2641         buildingBlock.setBpmnFlowName("ControllerExecutionBB").setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
2642         buildingBlock.setBpmnScope("VNF");
2643
2644         aaiServiceInstance.setModelVersionId("modelVersionId");
2645         doReturn(service).when(SPY_bbInputSetupUtils)
2646                 .getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
2647         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils)
2648                 .getAAIServiceInstanceById(lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2649         doReturn(serviceInstance).when(SPY_bbInputSetup).getExistingServiceInstance(aaiServiceInstance);
2650         doReturn(gBB).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
2651         doReturn(aaiVnf).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
2652         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2653                 any(Service.class));
2654         // when
2655         SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2656                 executeBB.getBuildingBlock().getBpmnFlowName(), requestAction, cloudConfiguration);
2657         // then
2658         verify(SPY_bbInputSetup, times(1)).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2659                 any(Service.class));
2660     }
2661
2662     @Test
2663     public void test_getGBBMacroNoUserParamsExistingService_forActivateVnfBB() throws Exception {
2664         // given
2665         String requestAction = "unassignInstance";
2666         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2667                 GeneralBuildingBlock.class);
2668         L3Network network = new L3Network();
2669         network.setNetworkId("networkId");
2670         gBB.getServiceInstance().getNetworks().add(network);
2671         ServiceInstance serviceInstance = gBB.getServiceInstance();
2672         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2673                 ExecuteBuildingBlock.class);
2674         RequestDetails requestDetails = mapper
2675                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2676         requestDetails.getRequestParameters().setUserParams(null);
2677         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2678         Service service = Mockito.mock(Service.class);
2679         CloudConfiguration cloudConfiguration = new CloudConfiguration();
2680         cloudConfiguration.setLcpCloudRegionId("cloudRegionId");
2681         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
2682         org.onap.aai.domain.yang.L3Network aaiNetwork = new org.onap.aai.domain.yang.L3Network();
2683         aaiNetwork.setModelCustomizationId("modelCustId");
2684         GenericVnf vnf = new GenericVnf();
2685         vnf.setVnfId("vnfId");
2686         gBB.getServiceInstance().getVnfs().add(vnf);
2687         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2688         aaiVnf.setModelCustomizationId("modelCustId");
2689
2690         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2691         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2692         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2693         buildingBlock.setBpmnFlowName("ActivateVnfBB").setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
2694
2695         aaiServiceInstance.setModelVersionId("modelVersionId");
2696         doReturn(service).when(SPY_bbInputSetupUtils)
2697                 .getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
2698         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils)
2699                 .getAAIServiceInstanceById(lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2700         doReturn(serviceInstance).when(SPY_bbInputSetup).getExistingServiceInstance(aaiServiceInstance);
2701         doReturn(gBB).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
2702         doReturn(aaiVnf).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
2703         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2704                 any(Service.class));
2705         // when
2706         SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2707                 executeBB.getBuildingBlock().getBpmnFlowName(), requestAction, cloudConfiguration);
2708         // then
2709         verify(SPY_bbInputSetup, times(1)).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2710                 any(Service.class));
2711     }
2712
2713     @Test
2714     public void test_getGBBMacroNoUserParamsExistingService_forControllerExecutionBB_VFModule() throws Exception {
2715         // given
2716         String requestAction = "unassignInstance";
2717         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2718                 GeneralBuildingBlock.class);
2719         L3Network network = new L3Network();
2720         network.setNetworkId("networkId");
2721         gBB.getServiceInstance().getNetworks().add(network);
2722         ServiceInstance serviceInstance = gBB.getServiceInstance();
2723         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2724                 ExecuteBuildingBlock.class);
2725         RequestDetails requestDetails = mapper
2726                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2727         requestDetails.getRequestParameters().setUserParams(null);
2728         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2729         Service service = Mockito.mock(Service.class);
2730         CloudConfiguration cloudConfiguration = new CloudConfiguration();
2731         cloudConfiguration.setLcpCloudRegionId("cloudRegionId");
2732         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
2733         org.onap.aai.domain.yang.L3Network aaiNetwork = new org.onap.aai.domain.yang.L3Network();
2734         aaiNetwork.setModelCustomizationId("modelCustId");
2735         GenericVnf vnf = new GenericVnf();
2736         vnf.setVnfId("vnfId");
2737         gBB.getServiceInstance().getVnfs().add(vnf);
2738         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2739         aaiVnf.setModelCustomizationId("modelCustId");
2740         VfModule vfModule = new VfModule();
2741         vfModule.setVfModuleId("vfModuleId");
2742         gBB.getServiceInstance().getVnfs().get(0).getVfModules().add(vfModule);
2743         org.onap.aai.domain.yang.VfModule aaiVfModule = new org.onap.aai.domain.yang.VfModule();
2744         aaiVfModule.setModelCustomizationId("modelCustId");
2745
2746         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2747         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2748         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2749         buildingBlock.setBpmnFlowName("ControllerExecutionBB").setKey("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
2750         buildingBlock.setBpmnScope("VfModule");
2751
2752         aaiServiceInstance.setModelVersionId("modelVersionId");
2753         doReturn(service).when(SPY_bbInputSetupUtils)
2754                 .getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
2755         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils)
2756                 .getAAIServiceInstanceById(lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2757         doReturn(serviceInstance).when(SPY_bbInputSetup).getExistingServiceInstance(aaiServiceInstance);
2758         doReturn(gBB).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
2759         doReturn(aaiVnf).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
2760         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2761                 any(Service.class));
2762         doReturn(aaiVfModule).when(SPY_bbInputSetupUtils).getAAIVfModule(vnf.getVnfId(), vfModule.getVfModuleId());
2763         // when
2764         SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2765                 executeBB.getBuildingBlock().getBpmnFlowName(), requestAction, cloudConfiguration);
2766         // then
2767         verify(SPY_bbInputSetup, times(1)).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2768                 any(Service.class));
2769         verify(SPY_bbInputSetup, times(1)).mapCatalogVfModule(any(VfModule.class), any(ModelInfo.class),
2770                 any(Service.class), any(String.class));
2771     }
2772
2773     @Test
2774     public void test_getGBBMacroNoUserParamsExistingService_forUnassignVfModuleBB() throws Exception {
2775         // given
2776         String requestAction = "unassignInstance";
2777         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2778                 GeneralBuildingBlock.class);
2779         L3Network network = new L3Network();
2780         network.setNetworkId("networkId");
2781         gBB.getServiceInstance().getNetworks().add(network);
2782         ServiceInstance serviceInstance = gBB.getServiceInstance();
2783         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2784                 ExecuteBuildingBlock.class);
2785         RequestDetails requestDetails = mapper
2786                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2787         requestDetails.getRequestParameters().setUserParams(null);
2788         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2789         Service service = Mockito.mock(Service.class);
2790         CloudConfiguration cloudConfiguration = new CloudConfiguration();
2791         cloudConfiguration.setLcpCloudRegionId("cloudRegionId");
2792         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
2793         org.onap.aai.domain.yang.L3Network aaiNetwork = new org.onap.aai.domain.yang.L3Network();
2794         aaiNetwork.setModelCustomizationId("modelCustId");
2795         GenericVnf vnf = new GenericVnf();
2796         vnf.setVnfId("vnfId");
2797         gBB.getServiceInstance().getVnfs().add(vnf);
2798         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2799         aaiVnf.setModelCustomizationId("modelCustId");
2800         VfModule vfModule = new VfModule();
2801         vfModule.setVfModuleId("vfModuleId");
2802         gBB.getServiceInstance().getVnfs().get(0).getVfModules().add(vfModule);
2803         org.onap.aai.domain.yang.VfModule aaiVfModule = new org.onap.aai.domain.yang.VfModule();
2804         aaiVfModule.setModelCustomizationId("modelCustId");
2805
2806         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2807         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2808         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2809         buildingBlock.setBpmnFlowName("UnassignVfModuleBB").setKey("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
2810
2811         aaiServiceInstance.setModelVersionId("modelVersionId");
2812         doReturn(service).when(SPY_bbInputSetupUtils)
2813                 .getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
2814         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils)
2815                 .getAAIServiceInstanceById(lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2816         doReturn(serviceInstance).when(SPY_bbInputSetup).getExistingServiceInstance(aaiServiceInstance);
2817         doReturn(gBB).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
2818         doReturn(aaiVnf).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
2819         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2820                 any(Service.class));
2821         doReturn(aaiVfModule).when(SPY_bbInputSetupUtils).getAAIVfModule(vnf.getVnfId(), vfModule.getVfModuleId());
2822         // when
2823         SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2824                 executeBB.getBuildingBlock().getBpmnFlowName(), requestAction, cloudConfiguration);
2825         // then
2826         verify(SPY_bbInputSetup, times(1)).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2827                 any(Service.class));
2828         verify(SPY_bbInputSetup, times(1)).mapCatalogVfModule(any(VfModule.class), any(ModelInfo.class),
2829                 any(Service.class), any(String.class));
2830     }
2831
2832     @Test
2833     public void test_getGBBMacroNoUserParamsExistingService_forUnassignVolumeGroupBB() throws Exception {
2834         // given
2835         String requestAction = "unassignInstance";
2836         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2837                 GeneralBuildingBlock.class);
2838         L3Network network = new L3Network();
2839         network.setNetworkId("networkId");
2840         gBB.getServiceInstance().getNetworks().add(network);
2841         ServiceInstance serviceInstance = gBB.getServiceInstance();
2842         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2843                 ExecuteBuildingBlock.class);
2844         RequestDetails requestDetails = mapper
2845                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2846         requestDetails.getRequestParameters().setUserParams(null);
2847         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2848         Service service = Mockito.mock(Service.class);
2849         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
2850         GenericVnf vnf = new GenericVnf();
2851         vnf.setVnfId("vnfId");
2852         gBB.getServiceInstance().getVnfs().add(vnf);
2853         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2854         aaiVnf.setModelCustomizationId("modelCustId");
2855         VfModule vfModule = new VfModule();
2856         vfModule.setVfModuleId("vfModuleId");
2857         gBB.getServiceInstance().getVnfs().get(0).getVfModules().add(vfModule);
2858         CloudRegion cloudRegion = new CloudRegion();
2859         cloudRegion.setLcpCloudRegionId("cloudRegionId");
2860         cloudRegion.setCloudOwner("CloudOwner");
2861         VolumeGroup volumeGroup = new VolumeGroup();
2862         volumeGroup.setVolumeGroupId("volumeGroupId");
2863         gBB.getServiceInstance().getVnfs().get(0).getVolumeGroups().add(volumeGroup);
2864         org.onap.aai.domain.yang.VolumeGroup aaiVolumeGroup = new org.onap.aai.domain.yang.VolumeGroup();
2865         aaiVolumeGroup.setModelCustomizationId("modelCustId");
2866
2867         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2868         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2869         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2870         buildingBlock.setBpmnFlowName("UnassignVolumeGroupBB").setKey("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
2871
2872         aaiServiceInstance.setModelVersionId("modelVersionId");
2873         doReturn(service).when(SPY_bbInputSetupUtils)
2874                 .getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
2875         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils)
2876                 .getAAIServiceInstanceById(lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2877         doReturn(serviceInstance).when(SPY_bbInputSetup).getExistingServiceInstance(aaiServiceInstance);
2878         doReturn(gBB).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
2879         doReturn(aaiVnf).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
2880         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2881                 any(Service.class));
2882         doReturn(aaiVolumeGroup).when(SPY_bbInputSetupUtils).getAAIVolumeGroup(cloudRegion.getCloudOwner(),
2883                 cloudRegion.getLcpCloudRegionId(), volumeGroup.getVolumeGroupId());
2884         doReturn(Optional.of(cloudRegion)).when(SPY_cloudInfoFromAAI).getCloudInfoFromAAI(gBB.getServiceInstance());
2885
2886         // when
2887         SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2888                 executeBB.getBuildingBlock().getBpmnFlowName(), requestAction, null);
2889         // then
2890         verify(SPY_bbInputSetup, times(1)).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2891                 any(Service.class));
2892         verify(SPY_bbInputSetup, times(1)).mapCatalogVolumeGroup(isA(VolumeGroup.class), isA(ModelInfo.class),
2893                 isA(Service.class), isA(String.class));
2894     }
2895
2896     @Test
2897     public void test_getGBBMacroNoUserParamsExistingService_forActivateFabricConfigurationBB() throws Exception {
2898         // given
2899         String requestAction = "unassignInstance";
2900         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2901                 GeneralBuildingBlock.class);
2902         L3Network network = new L3Network();
2903         network.setNetworkId("networkId");
2904         gBB.getServiceInstance().getNetworks().add(network);
2905         ServiceInstance serviceInstance = gBB.getServiceInstance();
2906         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2907                 ExecuteBuildingBlock.class);
2908         RequestDetails requestDetails = mapper
2909                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2910         requestDetails.getRequestParameters().setUserParams(null);
2911         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2912         Service service = Mockito.mock(Service.class);
2913         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
2914         GenericVnf vnf = new GenericVnf();
2915         vnf.setVnfId("vnfId");
2916         gBB.getServiceInstance().getVnfs().add(vnf);
2917         org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2918         aaiVnf.setModelCustomizationId("modelCustId");
2919         VfModule vfModule = new VfModule();
2920         vfModule.setVfModuleId("vfModuleId");
2921         gBB.getServiceInstance().getVnfs().get(0).getVfModules().add(vfModule);
2922         VolumeGroup volumeGroup = new VolumeGroup();
2923         volumeGroup.setVolumeGroupId("volumeGroupId");
2924         gBB.getServiceInstance().getVnfs().get(0).getVolumeGroups().add(volumeGroup);
2925         CloudConfiguration cloudConfiguration = new CloudConfiguration();
2926         cloudConfiguration.setLcpCloudRegionId("cloudRegionId");
2927         Configuration configuration = new Configuration();
2928         configuration.setConfigurationId("configurationId");
2929         gBB.getServiceInstance().getConfigurations().add(configuration);
2930         org.onap.aai.domain.yang.Configuration aaiConfiguration = new org.onap.aai.domain.yang.Configuration();
2931         aaiConfiguration.setModelCustomizationId("modelCustId");
2932
2933         ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
2934         executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
2935         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
2936         buildingBlock.setBpmnFlowName("ActivateFabricConfigurationBB").setKey("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
2937
2938         aaiServiceInstance.setModelVersionId("modelVersionId");
2939         doReturn(service).when(SPY_bbInputSetupUtils)
2940                 .getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
2941         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils)
2942                 .getAAIServiceInstanceById(lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2943         doReturn(serviceInstance).when(SPY_bbInputSetup).getExistingServiceInstance(aaiServiceInstance);
2944         doReturn(gBB).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
2945         doReturn(aaiConfiguration).when(SPY_bbInputSetupUtils).getAAIConfiguration(configuration.getConfigurationId());
2946         doNothing().when(SPY_bbInputSetup).mapCatalogConfiguration(isA(Configuration.class), isA(ModelInfo.class),
2947                 isA(Service.class), isA(ConfigurationResourceKeys.class));
2948
2949         // when
2950         SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2951                 executeBB.getBuildingBlock().getBpmnFlowName(), requestAction, cloudConfiguration);
2952         // then
2953         verify(SPY_bbInputSetup, times(1)).mapCatalogConfiguration(any(Configuration.class), any(ModelInfo.class),
2954                 any(Service.class), isA(ConfigurationResourceKeys.class));
2955     }
2956
2957     @Test
2958     public void testGetGBBMacroExistingServiceUpgrade() throws Exception {
2959         String requestAction = "upgradeInstance";
2960         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2961                 GeneralBuildingBlock.class);
2962         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2963                 ExecuteBuildingBlock.class);
2964         RequestDetails requestDetails = mapper
2965                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceUpgrade.json"), RequestDetails.class);
2966         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
2967         executeBB.setRequestDetails(requestDetails);
2968
2969         doReturn(new Service()).when(SPY_bbInputSetupUtils)
2970                 .getCatalogServiceByModelUUID(requestDetails.getModelInfo().getModelVersionId());
2971         doReturn(new org.onap.aai.domain.yang.ServiceInstance()).when(SPY_bbInputSetupUtils)
2972                 .getAAIServiceInstanceById(lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
2973         doReturn(gBB).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(any(BBInputSetupParameter.class));
2974
2975         SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2976                 executeBB.getBuildingBlock().getBpmnFlowName(), requestAction, null);
2977
2978         verify(SPY_bbInputSetupUtils, times(1))
2979                 .getCatalogServiceByModelUUID(requestDetails.getModelInfo().getModelVersionId());
2980     }
2981
2982     @Test
2983     public void testGetGBBMacroExistingServiceServiceinstancenotFoundInAai() throws Exception {
2984         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2985                 ExecuteBuildingBlock.class);
2986         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2987         lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "si123");
2988
2989         CloudConfiguration cloudConfiguration = new CloudConfiguration();
2990         cloudConfiguration.setLcpCloudRegionId("cloudRegionId");
2991
2992         doReturn(null).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById("si123");
2993
2994         expectedException.expect(NoServiceInstanceFoundException.class);
2995         expectedException.expectMessage("Related service instance from AAI not found: service-instance-id=si123");
2996
2997         SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap, "AssignVnfBB", "assign",
2998                 cloudConfiguration);
2999     }
3000
3001     @Test
3002     public void testGetGBBMacroExistingServiceServiceModelNotFound() throws Exception {
3003         ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
3004                 ExecuteBuildingBlock.class);
3005         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
3006         lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "si123");
3007         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
3008         aaiServiceInstance.setModelVersionId("modelVersionId");
3009
3010         CloudConfiguration cloudConfiguration = new CloudConfiguration();
3011         cloudConfiguration.setLcpCloudRegionId("cloudRegionId");
3012
3013         doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById("si123");
3014         doReturn(null).when(SPY_bbInputSetupUtils).getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
3015
3016         expectedException.expect(ServiceModelNotFoundException.class);
3017         expectedException.expectMessage(
3018                 "Related service instance model not found in MSO CatalogDB: model-version-id=modelVersionId");
3019
3020         SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap, "AssignVnfBB", "assign",
3021                 cloudConfiguration);
3022     }
3023
3024     @Test
3025     public void testGetVnfId() {
3026         String expected = "vnfId";
3027         ExecuteBuildingBlock executeBB = new ExecuteBuildingBlock().setRequestId("requestId");
3028         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
3029         InfraActiveRequests request = new InfraActiveRequests();
3030         request.setVnfId(expected);
3031         doReturn(request).when(SPY_bbInputSetupUtils).getInfraActiveRequest(executeBB.getRequestId());
3032
3033         String actual = SPY_bbInputSetup.getVnfId(executeBB, lookupKeyMap);
3034
3035         assertEquals("VnfId is set correctly", expected, actual);
3036     }
3037
3038     @Test
3039     public void testCreateVfModule() {
3040         String vfModuleId = "vfModuleId";
3041         String instanceName = "vfModuleName";
3042         Map<String, String> cloudParams = new HashMap<>();
3043         cloudParams.put("param1", "param1Value");
3044         VfModule expected = new VfModule();
3045         expected.setVfModuleId(vfModuleId);
3046         expected.setVfModuleName(instanceName);
3047         expected.setCloudParams(cloudParams);
3048         expected.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
3049         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
3050         List<Map<String, String>> instanceParams = new ArrayList<>();
3051         instanceParams.add(cloudParams);
3052
3053         VfModule actual = SPY_bbInputSetup.createVfModule(lookupKeyMap, vfModuleId, instanceName, instanceParams);
3054
3055         assertThat(actual, sameBeanAs(expected));
3056         assertEquals("LookupKeyMap is populated", vfModuleId, lookupKeyMap.get(ResourceKey.VF_MODULE_ID));
3057
3058         expected.getCloudParams().clear();
3059         actual = SPY_bbInputSetup.createVfModule(lookupKeyMap, vfModuleId, instanceName, null);
3060         assertThat(actual, sameBeanAs(expected));
3061     }
3062
3063     @Test
3064     public void testCreateVolumeGroup() {
3065         String volumeGroupId = "volumeGroupId";
3066         String instanceName = "vfModuleName";
3067         String vnfType = "vnfType";
3068         Map<String, String> cloudParams = new HashMap<>();
3069         cloudParams.put("param1", "param1Value");
3070         VolumeGroup expected = new VolumeGroup();
3071         expected.setVolumeGroupId(volumeGroupId);
3072         expected.setVolumeGroupName(instanceName);
3073         expected.setCloudParams(cloudParams);
3074         expected.setVnfType(vnfType);
3075         expected.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
3076         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
3077         List<Map<String, String>> instanceParams = new ArrayList<>();
3078         instanceParams.add(cloudParams);
3079
3080         VolumeGroup actual =
3081                 SPY_bbInputSetup.createVolumeGroup(lookupKeyMap, volumeGroupId, instanceName, vnfType, instanceParams);
3082
3083         assertThat(actual, sameBeanAs(expected));
3084         assertEquals("LookupKeyMap is populated", volumeGroupId, lookupKeyMap.get(ResourceKey.VOLUME_GROUP_ID));
3085
3086         expected.getCloudParams().clear();
3087         actual = SPY_bbInputSetup.createVolumeGroup(lookupKeyMap, volumeGroupId, instanceName, vnfType, null);
3088         assertThat(actual, sameBeanAs(expected));
3089     }
3090
3091     @Test
3092     public void testCreateNetwork() {
3093         String networkId = "networkId";
3094         String instanceName = "networkName";
3095         Map<String, String> cloudParams = new HashMap<>();
3096         cloudParams.put("param1", "param1Value");
3097         L3Network expected = new L3Network();
3098         expected.setNetworkId(networkId);
3099         expected.setNetworkName(instanceName);
3100         expected.setCloudParams(cloudParams);
3101         Platform platform = new Platform();
3102         platform.setPlatformName("platformName");
3103         expected.setPlatform(platform);
3104         LineOfBusiness lineOfBusiness = new LineOfBusiness();
3105         lineOfBusiness.setLineOfBusinessName("lineOfBusiness");
3106         expected.setLineOfBusiness(lineOfBusiness);
3107         expected.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
3108         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
3109         List<Map<String, String>> instanceParams = new ArrayList<>();
3110         instanceParams.add(cloudParams);
3111         org.onap.so.serviceinstancebeans.Platform platformRequest = new org.onap.so.serviceinstancebeans.Platform();
3112         org.onap.so.serviceinstancebeans.LineOfBusiness lineOfBusinessRequest =
3113                 new org.onap.so.serviceinstancebeans.LineOfBusiness();
3114         lineOfBusinessRequest.setLineOfBusinessName("lineOfBusiness");
3115         platformRequest.setPlatformName("platformName");
3116         BBInputSetupParameter parameter = new BBInputSetupParameter.Builder().setRequestId(REQUEST_ID)
3117                 .setPlatform(platformRequest).setLineOfBusiness(lineOfBusinessRequest).build();
3118         L3Network actual =
3119                 SPY_bbInputSetup.createNetwork(lookupKeyMap, instanceName, networkId, instanceParams, parameter);
3120
3121         assertThat(actual, sameBeanAs(expected));
3122         assertEquals("LookupKeyMap is populated", networkId, lookupKeyMap.get(ResourceKey.NETWORK_ID));
3123
3124         expected.getCloudParams().clear();
3125
3126         actual = SPY_bbInputSetup.createNetwork(lookupKeyMap, instanceName, networkId, null, parameter);
3127         assertThat(actual, sameBeanAs(expected));
3128     }
3129
3130     @Test
3131     public void testCreateGenericVnf() {
3132         String vnfId = "vnfId";
3133         String instanceName = "vnfName";
3134         String vnfType = "vnfType";
3135         String platformName = "platformName";
3136         String lineOfBusinessName = "lineOfBusinessName";
3137         String productFamilyId = "productFamilyId";
3138         String applicationId = "applicationId";
3139         Platform platform = new Platform();
3140         platform.setPlatformName(platformName);
3141         LineOfBusiness lineOfBusiness = new LineOfBusiness();
3142         lineOfBusiness.setLineOfBusinessName(lineOfBusinessName);
3143         Map<String, String> cloudParams = new HashMap<>();
3144         cloudParams.put("param1", "param1Value");
3145         GenericVnf expected = new GenericVnf();
3146         expected.setVnfId(vnfId);
3147         expected.setVnfName(instanceName);
3148         expected.setVnfType(vnfType);
3149         expected.setCloudParams(cloudParams);
3150         expected.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
3151         expected.setPlatform(platform);
3152         expected.setLineOfBusiness(lineOfBusiness);
3153         expected.setProvStatus("PREPROV");
3154         expected.setServiceId(productFamilyId);
3155         expected.setApplicationId(applicationId);
3156         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
3157         List<Map<String, String>> instanceParams = new ArrayList<>();
3158         instanceParams.add(cloudParams);
3159         org.onap.so.serviceinstancebeans.Platform requestPlatform = new org.onap.so.serviceinstancebeans.Platform();
3160         platform.setPlatformName(platformName);
3161         org.onap.so.serviceinstancebeans.LineOfBusiness requestLineOfBusiness =
3162                 new org.onap.so.serviceinstancebeans.LineOfBusiness();
3163         lineOfBusiness.setLineOfBusinessName(lineOfBusinessName);
3164
3165         doReturn(platform).when(bbInputSetupMapperLayer).mapRequestPlatform(requestPlatform);
3166         doReturn(lineOfBusiness).when(bbInputSetupMapperLayer).mapRequestLineOfBusiness(requestLineOfBusiness);
3167
3168         GenericVnf actual = SPY_bbInputSetup.createGenericVnf(lookupKeyMap, instanceName, requestPlatform,
3169                 requestLineOfBusiness, vnfId, vnfType, instanceParams, productFamilyId, applicationId);
3170
3171         assertThat(actual, sameBeanAs(expected));
3172         assertEquals("LookupKeyMap is populated", vnfId, lookupKeyMap.get(ResourceKey.GENERIC_VNF_ID));
3173
3174         expected.getCloudParams().clear();
3175         actual = SPY_bbInputSetup.createGenericVnf(lookupKeyMap, instanceName, requestPlatform, requestLineOfBusiness,
3176                 vnfId, vnfType, null, productFamilyId, applicationId);
3177         assertThat(actual, sameBeanAs(expected));
3178     }
3179
3180     @Test
3181     public void testMapCatalogVfModule() {
3182         String vnfModelCustomizationUUID = "vnfResourceCustUUID";
3183         String vfModuleCustomizationUUID = "vfModelCustomizationUUID";
3184         VfModule vfModule = new VfModule();
3185         ModelInfo modelInfo = new ModelInfo();
3186         modelInfo.setModelCustomizationUuid(vfModuleCustomizationUUID);
3187         Service service = new Service();
3188         VnfResourceCustomization vnfResourceCust = new VnfResourceCustomization();
3189         vnfResourceCust.setModelCustomizationUUID(vnfModelCustomizationUUID);
3190         VfModuleCustomization vfModuleCust = new VfModuleCustomization();
3191         vfModuleCust.setModelCustomizationUUID(vfModuleCustomizationUUID);
3192         vnfResourceCust.getVfModuleCustomizations().add(vfModuleCust);
3193         service.getVnfCustomizations().add(vnfResourceCust);
3194         ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
3195
3196         doReturn(modelInfoVfModule).when(bbInputSetupMapperLayer).mapCatalogVfModuleToVfModule(vfModuleCust);
3197
3198         SPY_bbInputSetup.mapCatalogVfModule(vfModule, modelInfo, service, vnfModelCustomizationUUID);
3199
3200         assertThat(vfModule.getModelInfoVfModule(), sameBeanAs(modelInfoVfModule));
3201
3202         modelInfo.setModelCustomizationUuid(null);
3203         modelInfo.setModelCustomizationId(vfModuleCustomizationUUID);
3204
3205         SPY_bbInputSetup.mapCatalogVfModule(vfModule, modelInfo, service, vnfModelCustomizationUUID);
3206
3207         assertThat(vfModule.getModelInfoVfModule(), sameBeanAs(modelInfoVfModule));
3208     }
3209
3210     @Test
3211     public void testMapCatalogVfModuleIfNoVfUnderVnf() {
3212         String vnfModelCustomizationUUID = "vnfResourceCustUUID";
3213         String vfModuleCustomizationUUID = "vfModelCustomizationUUID";
3214         VfModule vfModule = new VfModule();
3215         ModelInfo modelInfo = new ModelInfo();
3216         modelInfo.setModelCustomizationUuid(vfModuleCustomizationUUID);
3217         Service service = new Service();
3218         VnfResourceCustomization vnfResourceCust = new VnfResourceCustomization();
3219         vnfResourceCust.setModelCustomizationUUID(vnfModelCustomizationUUID);
3220         VfModuleCustomization vfModuleCust = new VfModuleCustomization();
3221         vfModuleCust.setModelCustomizationUUID(vfModuleCustomizationUUID);
3222         ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
3223         doReturn(vfModuleCust).when(SPY_bbInputSetupUtils)
3224                 .getVfModuleCustomizationByModelCuztomizationUUID(vfModuleCustomizationUUID);
3225         doReturn(modelInfoVfModule).when(bbInputSetupMapperLayer).mapCatalogVfModuleToVfModule(vfModuleCust);
3226
3227         SPY_bbInputSetup.mapCatalogVfModule(vfModule, modelInfo, service, vnfModelCustomizationUUID);
3228
3229         assertThat(vfModule.getModelInfoVfModule(), sameBeanAs(modelInfoVfModule));
3230
3231         verify(SPY_bbInputSetupUtils, times(1))
3232                 .getVfModuleCustomizationByModelCuztomizationUUID(modelInfo.getModelCustomizationId());
3233     }
3234
3235     @Test
3236     public void testPopulateVfModule() throws Exception {
3237         String vnfId = "vnfId";
3238         String vfModuleId = "vfModuleId";
3239         String volumeGroupId = "volumeGroupId";
3240         String vfModuleCustomizationId = "vfModuleCustomizationId";
3241         ModelInfo modelInfo = new ModelInfo();
3242         modelInfo.setModelCustomizationId(vfModuleCustomizationId);
3243         Service service = new Service();
3244         ServiceModel serviceModel = new ServiceModel();
3245         serviceModel.setCurrentService(service);
3246         String bbName = AssignFlows.VF_MODULE.toString();
3247         ServiceInstance serviceInstance = new ServiceInstance();
3248         GenericVnf vnf = new GenericVnf();
3249         vnf.setVnfId(vnfId);
3250         VolumeGroup volumeGroup = new VolumeGroup();
3251         volumeGroup.setVolumeGroupId(volumeGroupId);
3252         vnf.getVolumeGroups().add(volumeGroup);
3253         serviceInstance.getVnfs().add(vnf);
3254         VfModule vfModule1 = new VfModule();
3255         vfModule1.setVfModuleId("vfModuleId1");
3256         VfModule vfModule2 = new VfModule();
3257         vfModule2.setVfModuleId("vfModuleId2");
3258         vnf.getVfModules().add(vfModule1);
3259         vnf.getVfModules().add(vfModule2);
3260         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
3261         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, vnfId);
3262         String resourceId = vfModuleId;
3263         RelatedInstanceList[] relatedInstanceList = null;
3264         String instanceName = "vfModuleName";
3265         List<Map<String, String>> instanceParams = null;
3266         CloudConfiguration cloudConfiguration = new CloudConfiguration();
3267
3268         org.onap.aai.domain.yang.GenericVnf vnfAAI = new org.onap.aai.domain.yang.GenericVnf();
3269         vnfAAI.setModelCustomizationId("vnfModelCustId");
3270         org.onap.aai.domain.yang.VolumeGroup volumeGroupAAI = new org.onap.aai.domain.yang.VolumeGroup();
3271         volumeGroupAAI.setModelCustomizationId(vfModuleCustomizationId);
3272         org.onap.aai.domain.yang.VfModule vfModuleAAI = new org.onap.aai.domain.yang.VfModule();
3273         vfModuleAAI.setModelCustomizationId(vfModuleCustomizationId);
3274
3275         doReturn(vnfAAI).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
3276         doReturn(volumeGroupAAI).when(SPY_bbInputSetupUtils).getAAIVolumeGroup(CLOUD_OWNER,
3277                 cloudConfiguration.getLcpCloudRegionId(), volumeGroup.getVolumeGroupId());
3278         doReturn(vfModuleAAI).when(SPY_bbInputSetupUtils).getAAIVfModule(isA(String.class), isA(String.class));
3279         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(isA(GenericVnf.class), isA(ModelInfo.class),
3280                 isA(Service.class));
3281         doNothing().when(SPY_bbInputSetup).mapCatalogVfModule(isA(VfModule.class), isA(ModelInfo.class),
3282                 isA(Service.class), isA(String.class));
3283
3284         SPY_bbInputSetup.populateVfModule(new BBInputSetupParameter.Builder().setRequestId(REQUEST_ID)
3285                 .setModelInfo(modelInfo).setService(service).setBbName(bbName).setServiceInstance(serviceInstance)
3286                 .setLookupKeyMap(lookupKeyMap).setResourceId(resourceId).setRelatedInstanceList(relatedInstanceList)
3287                 .setInstanceName(instanceName).setInstanceParams(instanceParams)
3288                 .setCloudConfiguration(cloudConfiguration).setServiceModel(serviceModel).build());
3289
3290         verify(SPY_bbInputSetup, times(3)).mapCatalogVfModule(isA(VfModule.class), isA(ModelInfo.class),
3291                 isA(Service.class), isA(String.class));
3292         assertEquals("Lookup Key Map populated with VfModule Id", vfModuleId,
3293                 lookupKeyMap.get(ResourceKey.VF_MODULE_ID));
3294         assertEquals("Lookup Key Map populated with VolumeGroup Id", volumeGroupId,
3295                 lookupKeyMap.get(ResourceKey.VOLUME_GROUP_ID));
3296     }
3297
3298     @Test
3299     public void testPopulateVfModuleIsReplaceCorrectPopulationOfVfs() throws Exception {
3300         String vnfId = "vnfId";
3301         String vfModuleId = "vfModuleId";
3302         String volumeGroupId = "volumeGroupId";
3303         String vfModuleCustomizationId = "vfModuleCustomizationId";
3304         ModelInfo modelInfo = new ModelInfo();
3305         modelInfo.setModelCustomizationId(vfModuleCustomizationId);
3306         Service currentService = new Service();
3307         currentService.setModelUUID("currentUUID");
3308         Service newService = new Service();
3309         newService.setModelUUID("newUUID");
3310         ServiceModel serviceModel = new ServiceModel();
3311         serviceModel.setCurrentService(currentService);
3312         serviceModel.setNewService(newService);
3313         String bbName = "ActivateVfModuleBB";
3314         ServiceInstance serviceInstance = new ServiceInstance();
3315         GenericVnf vnf = new GenericVnf();
3316         vnf.setVnfId(vnfId);
3317         VolumeGroup volumeGroup = new VolumeGroup();
3318         volumeGroup.setVolumeGroupId(volumeGroupId);
3319         vnf.getVolumeGroups().add(volumeGroup);
3320         serviceInstance.getVnfs().add(vnf);
3321         VfModule vfModule1 = new VfModule();
3322         vfModule1.setVfModuleId("vfModuleId1");
3323         VfModule vfModule2 = new VfModule();
3324         vfModule2.setVfModuleId("vfModuleId2");
3325         vnf.getVfModules().add(vfModule1);
3326         vnf.getVfModules().add(vfModule2);
3327         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
3328         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, vnfId);
3329         lookupKeyMap.put(ResourceKey.VF_MODULE_ID, "vfModuleId1");
3330         String resourceId = vfModuleId;
3331         RelatedInstanceList[] relatedInstanceList = new RelatedInstanceList[1];
3332         RelatedInstanceList relatedInstanceListObj = new RelatedInstanceList();
3333         RelatedInstance relatedInstance = new RelatedInstance();
3334         relatedInstance.setInstanceId(vnfId);
3335
3336         ModelInfo vnfModelInfo = new ModelInfo();
3337         vnfModelInfo.setModelCustomizationId("vnfCustomizationId");
3338         vnfModelInfo.setModelType(ModelType.vnf);
3339         relatedInstance.setModelInfo(vnfModelInfo);
3340         relatedInstanceListObj.setRelatedInstance(relatedInstance);
3341         relatedInstanceList[0] = relatedInstanceListObj;
3342
3343         String instanceName = "vfModuleName";
3344         List<Map<String, String>> instanceParams = null;
3345         CloudConfiguration cloudConfiguration = new CloudConfiguration();
3346
3347         org.onap.aai.domain.yang.GenericVnf vnfAAI = new org.onap.aai.domain.yang.GenericVnf();
3348         vnfAAI.setModelCustomizationId("vnfModelCustId");
3349         org.onap.aai.domain.yang.VolumeGroup volumeGroupAAI = new org.onap.aai.domain.yang.VolumeGroup();
3350         volumeGroupAAI.setModelCustomizationId(vfModuleCustomizationId);
3351         org.onap.aai.domain.yang.VfModule vfModuleAAI = new org.onap.aai.domain.yang.VfModule();
3352         vfModuleAAI.setModelCustomizationId(vfModuleCustomizationId);
3353
3354         doReturn(vnfAAI).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
3355         doReturn(volumeGroupAAI).when(SPY_bbInputSetupUtils).getAAIVolumeGroup(CLOUD_OWNER,
3356                 cloudConfiguration.getLcpCloudRegionId(), volumeGroup.getVolumeGroupId());
3357         doReturn(vfModuleAAI).when(SPY_bbInputSetupUtils).getAAIVfModule(isA(String.class), isA(String.class));
3358         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(isA(GenericVnf.class), isA(ModelInfo.class),
3359                 isA(Service.class));
3360         doNothing().when(SPY_bbInputSetup).mapCatalogVfModule(isA(VfModule.class), isA(ModelInfo.class),
3361                 isA(Service.class), isA(String.class));
3362
3363         BBInputSetupParameter parameter = new BBInputSetupParameter.Builder().setModelInfo(modelInfo)
3364                 .setService(newService).setBbName(bbName).setServiceInstance(serviceInstance)
3365                 .setLookupKeyMap(lookupKeyMap).setResourceId(resourceId).setRelatedInstanceList(relatedInstanceList)
3366                 .setInstanceName(instanceName).setInstanceParams(instanceParams)
3367                 .setCloudConfiguration(cloudConfiguration).setIsReplace(true).setServiceModel(serviceModel).build();
3368         SPY_bbInputSetup.populateVfModule(parameter);
3369
3370         verify(SPY_bbInputSetup, times(1)).mapCatalogVfModule(isA(VfModule.class), isA(ModelInfo.class),
3371                 eq(currentService), eq("vnfModelCustId"));
3372         verify(SPY_bbInputSetup, times(1)).mapCatalogVfModule(isA(VfModule.class), isA(ModelInfo.class), eq(newService),
3373                 eq("vnfCustomizationId"));
3374         assertEquals("Lookup Key Map populated with VfModule Id", "vfModuleId1",
3375                 lookupKeyMap.get(ResourceKey.VF_MODULE_ID));
3376         assertEquals("Lookup Key Map populated with VolumeGroup Id", volumeGroupId,
3377                 lookupKeyMap.get(ResourceKey.VOLUME_GROUP_ID));
3378     }
3379
3380     @Test
3381     public void testPopulateVfModuleIsReplace() throws Exception {
3382         String vnfId = "vnfId";
3383         String vfModuleId = "vfModuleId";
3384         String volumeGroupId = "volumeGroupId";
3385         String vfModuleCustomizationId = "vfModuleCustomizationId";
3386         ModelInfo modelInfo = new ModelInfo();
3387         modelInfo.setModelCustomizationId(vfModuleCustomizationId);
3388         Service currentService = new Service();
3389         Service newService = new Service();
3390         ServiceModel serviceModel = new ServiceModel();
3391         serviceModel.setCurrentService(currentService);
3392         currentService.setModelUUID("currentUUID");
3393         serviceModel.setNewService(newService);
3394         currentService.setModelUUID("newUUID");
3395         String bbName = AssignFlows.VF_MODULE.toString();
3396         ServiceInstance serviceInstance = new ServiceInstance();
3397         GenericVnf vnf = new GenericVnf();
3398         vnf.setVnfId(vnfId);
3399         VolumeGroup volumeGroup = new VolumeGroup();
3400         volumeGroup.setVolumeGroupId(volumeGroupId);
3401         vnf.getVolumeGroups().add(volumeGroup);
3402         serviceInstance.getVnfs().add(vnf);
3403         VfModule vfModule1 = new VfModule();
3404         vfModule1.setVfModuleId("vfModuleId1");
3405         VfModule vfModule2 = new VfModule();
3406         vfModule2.setVfModuleId("vfModuleId2");
3407         vnf.getVfModules().add(vfModule1);
3408         vnf.getVfModules().add(vfModule2);
3409         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
3410         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, vnfId);
3411         lookupKeyMap.put(ResourceKey.VF_MODULE_ID, vfModuleId);
3412         String resourceId = vfModuleId;
3413         RelatedInstanceList[] relatedInstanceList = new RelatedInstanceList[1];
3414         RelatedInstanceList relatedInstanceListObj = new RelatedInstanceList();
3415         RelatedInstance relatedInstance = new RelatedInstance();
3416         relatedInstance.setInstanceId(vnfId);
3417
3418         ModelInfo vnfModelInfo = new ModelInfo();
3419         vnfModelInfo.setModelCustomizationId("vnfCustomizationId");
3420         vnfModelInfo.setModelType(ModelType.vnf);
3421         relatedInstance.setModelInfo(vnfModelInfo);
3422         relatedInstanceListObj.setRelatedInstance(relatedInstance);
3423         relatedInstanceList[0] = relatedInstanceListObj;
3424
3425         String instanceName = "vfModuleName";
3426         List<Map<String, String>> instanceParams = null;
3427         CloudConfiguration cloudConfiguration = new CloudConfiguration();
3428
3429         org.onap.aai.domain.yang.GenericVnf vnfAAI = new org.onap.aai.domain.yang.GenericVnf();
3430         vnfAAI.setModelCustomizationId("vnfModelCustId");
3431         org.onap.aai.domain.yang.VolumeGroup volumeGroupAAI = new org.onap.aai.domain.yang.VolumeGroup();
3432         volumeGroupAAI.setModelCustomizationId(vfModuleCustomizationId);
3433         org.onap.aai.domain.yang.VfModule vfModuleAAI = new org.onap.aai.domain.yang.VfModule();
3434         vfModuleAAI.setModelCustomizationId(vfModuleCustomizationId);
3435
3436         doReturn(vnfAAI).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
3437         doReturn(volumeGroupAAI).when(SPY_bbInputSetupUtils).getAAIVolumeGroup(CLOUD_OWNER,
3438                 cloudConfiguration.getLcpCloudRegionId(), volumeGroup.getVolumeGroupId());
3439         doReturn(vfModuleAAI).when(SPY_bbInputSetupUtils).getAAIVfModule(isA(String.class), isA(String.class));
3440         doNothing().when(SPY_bbInputSetup).mapCatalogVnf(isA(GenericVnf.class), isA(ModelInfo.class),
3441                 isA(Service.class));
3442         doNothing().when(SPY_bbInputSetup).mapCatalogVfModule(isA(VfModule.class), isA(ModelInfo.class),
3443                 isA(Service.class), isA(String.class));
3444
3445         BBInputSetupParameter parameter = new BBInputSetupParameter.Builder().setModelInfo(modelInfo)
3446                 .setService(newService).setServiceInstance(serviceInstance).setBbName(bbName)
3447                 .setLookupKeyMap(lookupKeyMap).setResourceId(resourceId).setRelatedInstanceList(relatedInstanceList)
3448                 .setInstanceName(instanceName).setInstanceParams(instanceParams)
3449                 .setCloudConfiguration(cloudConfiguration).setIsReplace(true).setServiceModel(serviceModel).build();
3450
3451
3452         SPY_bbInputSetup.populateVfModule(parameter);
3453
3454         verify(SPY_bbInputSetup, times(2)).mapCatalogVfModule(isA(VfModule.class), isA(ModelInfo.class),
3455                 eq(serviceModel.getCurrentService()), isA(String.class));
3456         verify(SPY_bbInputSetup, times(1)).mapCatalogVfModule(isA(VfModule.class), isA(ModelInfo.class),
3457                 eq(serviceModel.getNewService()), isA(String.class));
3458         assertEquals("Lookup Key Map populated with VfModule Id", vfModuleId,
3459                 lookupKeyMap.get(ResourceKey.VF_MODULE_ID));
3460         assertEquals("Lookup Key Map populated with VolumeGroup Id", volumeGroupId,
3461                 lookupKeyMap.get(ResourceKey.VOLUME_GROUP_ID));
3462     }
3463
3464     @Test
3465     public void testGettingVnfcToConfiguration() throws Exception {
3466
3467         String vnfcName = "vnfcName";
3468         org.onap.aai.domain.yang.Configuration expectedAAI = new org.onap.aai.domain.yang.Configuration();
3469         AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().vnfc(vnfcName));
3470         AAIResultWrapper configurationWrapper =
3471                 new AAIResultWrapper(new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
3472
3473         doReturn(new AAIResultWrapper(null)).when(SPY_bbInputSetupUtils).getAAIResourceDepthOne(aaiResourceUri);
3474         Vnfc vnfc = SPY_bbInputSetup.getVnfcToConfiguration(vnfcName);
3475         Assert.assertNull(vnfc);
3476
3477         doReturn(configurationWrapper).when(SPY_bbInputSetupUtils).getAAIResourceDepthOne(aaiResourceUri);
3478         vnfc = SPY_bbInputSetup.getVnfcToConfiguration(vnfcName);
3479         Assert.assertNotNull(vnfc);
3480     }
3481 }