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