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