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