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