add in volume group model info lookup
[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  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.so.bpmn.servicedecomposition.tasks;
22
23 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
24 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertNotNull;
27 import static org.junit.Assert.assertNull;
28 import static org.mockito.ArgumentMatchers.any;
29 import static org.mockito.Matchers.eq;
30 import static org.mockito.ArgumentMatchers.isA;
31 import static org.mockito.Mockito.doNothing;
32 import static org.mockito.Mockito.doReturn;
33 import static org.mockito.Mockito.times;
34 import static org.mockito.Mockito.verify;
35
36 import java.io.File;
37 import java.io.IOException;
38 import java.util.ArrayList;
39 import java.util.Arrays;
40 import java.util.HashMap;
41 import java.util.List;
42 import java.util.Map;
43 import java.util.Optional;
44
45 import org.camunda.bpm.engine.delegate.DelegateExecution;
46 import org.junit.Before;
47 import org.junit.Test;
48 import org.junit.runner.RunWith;
49 import org.mockito.ArgumentMatchers;
50 import org.mockito.Matchers;
51 import org.mockito.Mock;
52 import org.mockito.Mockito;
53 import org.mockito.Spy;
54 import org.mockito.junit.MockitoJUnitRunner;
55 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
56 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
57 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
58 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
59 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
60 import org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup;
61 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
62 import org.onap.so.bpmn.servicedecomposition.bbobjects.LineOfBusiness;
63 import org.onap.so.bpmn.servicedecomposition.bbobjects.OwningEntity;
64 import org.onap.so.bpmn.servicedecomposition.bbobjects.Platform;
65 import org.onap.so.bpmn.servicedecomposition.bbobjects.Project;
66 import org.onap.so.bpmn.servicedecomposition.bbobjects.RouteTableReference;
67 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
68 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceSubscription;
69 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
70 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
71 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
72 import org.onap.so.bpmn.servicedecomposition.entities.ConfigurationResourceKeys;
73 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
74 import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
75 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
76 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
77 import org.onap.so.bpmn.servicedecomposition.generalobjects.OrchestrationContext;
78 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
79 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoCollection;
80 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoGenericVnf;
81 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoInstanceGroup;
82 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoNetwork;
83 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceInstance;
84 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
85 import org.onap.so.client.aai.AAICommonObjectMapperProvider;
86 import org.onap.so.client.aai.AAIObjectType;
87 import org.onap.so.client.aai.entities.AAIResultWrapper;
88 import org.onap.so.client.aai.entities.Relationships;
89 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
90 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
91 import org.onap.so.constants.Defaults;
92 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
93 import org.onap.so.db.catalog.beans.CollectionResource;
94 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
95 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
96 import org.onap.so.db.catalog.beans.ConfigurationResourceCustomization;
97 import org.onap.so.db.catalog.beans.InstanceGroupType;
98 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
99 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
100 import org.onap.so.db.catalog.beans.OrchestrationStatus;
101 import org.onap.so.db.catalog.beans.Service;
102 import org.onap.so.db.catalog.beans.VfModuleCustomization;
103 import org.onap.so.db.catalog.beans.VnfResourceCustomization;
104 import org.onap.so.db.catalog.beans.VnfcInstanceGroupCustomization;
105 import org.onap.so.db.request.beans.InfraActiveRequests;
106 import org.onap.so.serviceinstancebeans.CloudConfiguration;
107 import org.onap.so.serviceinstancebeans.ModelInfo;
108 import org.onap.so.serviceinstancebeans.ModelType;
109 import org.onap.so.serviceinstancebeans.RelatedInstance;
110 import org.onap.so.serviceinstancebeans.RelatedInstanceList;
111 import org.onap.so.serviceinstancebeans.RequestDetails;
112 import org.onap.so.serviceinstancebeans.RequestInfo;
113 import org.onap.so.serviceinstancebeans.RequestParameters;
114 import org.onap.so.serviceinstancebeans.Resources;
115 import org.onap.so.serviceinstancebeans.SubscriberInfo;
116
117 import com.fasterxml.jackson.core.JsonParseException;
118 import com.fasterxml.jackson.core.JsonProcessingException;
119 import com.fasterxml.jackson.databind.JsonMappingException;
120 import com.fasterxml.jackson.databind.ObjectMapper;
121 @RunWith(MockitoJUnitRunner.class)
122 public class BBInputSetupTest {
123         private static final String RESOURCE_PATH = "src/test/resources/__files/ExecuteBuildingBlock/";
124
125         protected ObjectMapper mapper = new ObjectMapper();
126         private static final String CLOUD_OWNER = "CloudOwner";
127
128         @Spy
129         private BBInputSetup SPY_bbInputSetup = new BBInputSetup();
130         
131         @Mock
132         private BBInputSetupUtils SPY_bbInputSetupUtils;
133         
134         @Spy
135         private BBInputSetupMapperLayer bbInputSetupMapperLayer; 
136         
137         @Before
138         public void setup(){
139                 SPY_bbInputSetup.setBbInputSetupUtils(SPY_bbInputSetupUtils);
140                 SPY_bbInputSetup.setMapperLayer(bbInputSetupMapperLayer);
141         }
142         
143         @Test
144         public void testGetVolumeGroupIdRelatedToVfModule() {
145                 String expected = "volumeGroupId";
146                 String modelCustomizationId = "modelCustomizationId";
147                 ModelInfo modelInfo = new ModelInfo();
148                 modelInfo.setModelCustomizationId(modelCustomizationId);
149                 String cloudOwner = "cloudOwner";
150                 String cloudRegionId = "cloudRegionId";
151                 String volumeGroupId = "volumeGroupId";
152                 GenericVnf vnf = new GenericVnf();
153                 VolumeGroup volumeGroup = new VolumeGroup();
154                 volumeGroup.setVolumeGroupId(expected);
155                 vnf.getVolumeGroups().add(volumeGroup);
156                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
157                 lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, null);
158                 org.onap.aai.domain.yang.VolumeGroup aaiVolumeGroup = new org.onap.aai.domain.yang.VolumeGroup();
159                 aaiVolumeGroup.setModelCustomizationId(modelCustomizationId);
160                 doReturn(aaiVolumeGroup).when(SPY_bbInputSetupUtils).getAAIVolumeGroup(cloudOwner, cloudRegionId, volumeGroupId);
161                 
162                 Optional<String> actual = SPY_bbInputSetup.getVolumeGroupIdRelatedToVfModule(vnf, modelInfo, cloudOwner, cloudRegionId, lookupKeyMap);
163                 
164                 assertEquals(expected, actual.get());
165         }
166         
167         @Test
168         public void testGetAlaCarteServiceInstance() throws Exception {
169                 ServiceInstance expected = mapper.readValue(
170                                 new File(RESOURCE_PATH + "ServiceInstance_getServiceInstanceNOAAIExpected.json"),
171                                 ServiceInstance.class);
172                 RequestDetails requestDetails = new RequestDetails();
173                 RequestInfo requestInfo = new RequestInfo();
174                 requestInfo.setInstanceName("SharansInstanceName");
175                 requestDetails.setRequestInfo(requestInfo);
176                 Customer customer = new Customer();
177                 String serviceInstanceId = "SharansInstanceId";
178                 boolean aLaCarte = true;
179                 Service service = new Service();
180                 service.setModelUUID("modelUUID");
181                 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
182                 modelInfoServiceInstance.setModelUuid("modelUUID");
183                 expected.setModelInfoServiceInstance(modelInfoServiceInstance);
184                 org.onap.aai.domain.yang.ServiceInstance serviceInstanceAAI = new org.onap.aai.domain.yang.ServiceInstance();
185                 serviceInstanceAAI.setModelVersionId("modelUUIDDifferent");
186                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
187                 String bbName = AssignFlows.SERVICE_INSTANCE.toString();
188                 Service differentService = new Service();
189                 differentService.setModelUUID("modelUUIDDifferent");
190
191                 doReturn(expected).when(SPY_bbInputSetup).getServiceInstanceHelper(requestDetails, customer, null, null,
192                                 lookupKeyMap, serviceInstanceId, aLaCarte, service, bbName);
193                 doReturn(serviceInstanceAAI).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById(serviceInstanceId);
194                 doReturn(differentService).when(SPY_bbInputSetupUtils)
195                                 .getCatalogServiceByModelUUID(serviceInstanceAAI.getModelVersionId());
196                 doReturn(expected.getModelInfoServiceInstance()).when(bbInputSetupMapperLayer)
197                                 .mapCatalogServiceIntoServiceInstance(differentService);
198
199                 ServiceInstance actual = SPY_bbInputSetup.getALaCarteServiceInstance(service, requestDetails, customer, null,
200                                 null, lookupKeyMap, serviceInstanceId, aLaCarte, bbName);
201                 assertThat(actual, sameBeanAs(expected));
202         }
203         
204         @Test(expected = Exception.class)
205         public void testGetAlaCarteServiceInstanceException() throws Exception {
206                 ServiceInstance expected = mapper.readValue(
207                                 new File(RESOURCE_PATH + "ServiceInstance_getServiceInstanceNOAAIExpected.json"),
208                                 ServiceInstance.class);
209                 RequestDetails requestDetails = new RequestDetails();
210                 RequestInfo requestInfo = new RequestInfo();
211                 requestInfo.setInstanceName("SharansInstanceName");
212                 requestDetails.setRequestInfo(requestInfo);
213                 Customer customer = new Customer();
214                 String serviceInstanceId = "SharansInstanceId";
215                 boolean aLaCarte = true;
216                 Service service = new Service();
217                 service.setModelUUID("modelUUID");
218                 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
219                 modelInfoServiceInstance.setModelUuid("modelUUID");
220                 expected.setModelInfoServiceInstance(modelInfoServiceInstance);
221                 org.onap.aai.domain.yang.ServiceInstance serviceInstanceAAI = new org.onap.aai.domain.yang.ServiceInstance();
222                 serviceInstanceAAI.setModelVersionId("modelUUIDDifferent");
223                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
224                 String bbName = AssignFlows.SERVICE_INSTANCE.toString();
225                 Service differentService = new Service();
226                 differentService.setModelUUID("modelUUIDDifferent");
227
228                 doReturn(expected).when(SPY_bbInputSetup).getServiceInstanceHelper(requestDetails, customer, null, null,
229                                 lookupKeyMap, serviceInstanceId, aLaCarte, service, bbName);
230                 doReturn(serviceInstanceAAI).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById(serviceInstanceId);
231                 doReturn(null).when(SPY_bbInputSetupUtils)
232                                 .getCatalogServiceByModelUUID(serviceInstanceAAI.getModelVersionId());
233
234                 ServiceInstance actual = SPY_bbInputSetup.getALaCarteServiceInstance(service, requestDetails, customer, null,
235                                 null, lookupKeyMap, serviceInstanceId, aLaCarte, bbName);
236                 assertThat(actual, sameBeanAs(expected));
237         }
238
239         @Test
240         public void testGetCustomerAndServiceSubscription() throws JsonParseException, JsonMappingException, IOException {
241                 RequestDetails requestDetails = mapper.readValue(
242                                 new File(RESOURCE_PATH + "RequestDetailsInput_withRelatedInstanceList.json"), RequestDetails.class);
243                 SubscriberInfo subscriberInfo = new SubscriberInfo();
244                 subscriberInfo.setGlobalSubscriberId("globalSubscriberId");
245                 RequestParameters requestParams = new RequestParameters();
246                 requestParams.setSubscriptionServiceType("subscriptionServiceType");
247                 requestDetails.setRequestParameters(requestParams);
248                 requestDetails.setSubscriberInfo(subscriberInfo);
249                 String resourceId = "resourceId";
250                 Customer expected = new Customer();
251                 expected.setGlobalCustomerId("globalCustomerId");
252                 ServiceSubscription serviceSubscription = new ServiceSubscription();
253                 serviceSubscription.setServiceType("subscriptionServiceType");
254
255                 doReturn(expected).when(this.SPY_bbInputSetup).getCustomerFromRequest(requestDetails);
256                 doReturn(serviceSubscription).when(this.SPY_bbInputSetup).getServiceSubscription(requestDetails, expected);
257
258                 Customer actual = this.SPY_bbInputSetup.getCustomerAndServiceSubscription(requestDetails, resourceId);
259
260                 assertThat(actual, sameBeanAs(expected));
261
262                 requestDetails.setSubscriberInfo(null);
263
264
265                 assertThat(actual, sameBeanAs(expected));
266
267         }
268
269         @Test
270         public void testSetHomingFlag() throws JsonParseException, JsonMappingException, IOException {
271                 GeneralBuildingBlock expected = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
272                                 GeneralBuildingBlock.class);
273                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
274                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "vnfId");
275                 GenericVnf genericVnfExpected = new GenericVnf();
276                 genericVnfExpected.setVnfId("vnfId");
277                 genericVnfExpected.setCallHoming(true);
278                 expected.getCustomer().getServiceSubscription().getServiceInstances().get(0).getVnfs().add(genericVnfExpected);
279                 boolean homing = true;
280                 GenericVnf genericVnfActual = new GenericVnf();
281                 genericVnfActual.setVnfId("vnfId");
282                 genericVnfActual.setCallHoming(false);
283                 GeneralBuildingBlock actual = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
284                                 GeneralBuildingBlock.class);
285                 actual.getCustomer().getServiceSubscription().getServiceInstances().get(0).getVnfs().add(genericVnfActual);
286
287                 SPY_bbInputSetup.setHomingFlag(actual, homing, lookupKeyMap);
288                 assertThat(actual, sameBeanAs(expected));
289         }
290
291         @Test
292         public void testGetExecuteBBFromExecution() throws IOException {
293                 ExecuteBuildingBlock expected = new ExecuteBuildingBlock();
294                 BuildingBlock bb = new BuildingBlock();
295                 bb.setBpmnFlowName("AssignServiceInstanceBB");
296                 expected.setBuildingBlock(bb);
297                 expected.setRequestId("00032ab7-3fb3-42e5-965d-8ea592502017");
298                 DelegateExecution execution = Mockito.mock(DelegateExecution.class);
299                 doReturn(expected).when(execution).getVariable(any(String.class));
300                 ExecuteBuildingBlock actual = SPY_bbInputSetup.getExecuteBBFromExecution(execution);
301                 assertThat(actual, sameBeanAs(expected));
302         }
303
304         @Test
305         public void testGetGBB() throws Exception {
306                 GeneralBuildingBlock expected = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
307                                 GeneralBuildingBlock.class);
308
309                 ExecuteBuildingBlock executeBB = new ExecuteBuildingBlock();
310                 executeBB.setRequestId("requestId");
311                 RequestDetails requestDetails = new RequestDetails();
312                 ModelInfo modelInfo = new ModelInfo();
313                 modelInfo.setModelType(ModelType.service);
314                 requestDetails.setModelInfo(modelInfo);
315                 RequestParameters requestParams = new RequestParameters();
316                 requestParams.setaLaCarte(true);
317                 requestDetails.setRequestParameters(requestParams);
318                 doReturn(requestDetails).when(SPY_bbInputSetupUtils).getRequestDetails(executeBB.getRequestId());
319                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
320                 String resourceId = "123";
321                 String requestAction = "createInstance";
322                 doReturn(expected).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
323                                 requestAction, resourceId);
324                 doNothing().when(SPY_bbInputSetup).populateLookupKeyMapWithIds(executeBB.getWorkflowResourceIds(),lookupKeyMap);
325                 boolean aLaCarte = true;
326                 GeneralBuildingBlock actual = SPY_bbInputSetup.getGBB(executeBB, lookupKeyMap, requestAction, aLaCarte,
327                                 resourceId, null);
328
329                 assertThat(actual, sameBeanAs(expected));
330         }
331         
332         @Test
333         public void testGetGBBCM() throws Exception {
334                 GeneralBuildingBlock expected = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockCMExpected.json"),
335                                 GeneralBuildingBlock.class);
336
337                 ExecuteBuildingBlock executeBB = new ExecuteBuildingBlock();
338                 executeBB.setRequestId("requestId");
339                 RequestDetails requestDetails = new RequestDetails();           
340                 requestDetails.setModelInfo(null);
341                 RequestParameters requestParams = new RequestParameters();
342                 requestParams.setaLaCarte(true);
343                 requestDetails.setRequestParameters(requestParams);
344                 RequestInfo requestInfo = new RequestInfo();
345                 requestInfo.setSuppressRollback(true);
346                 requestInfo.setSource("VID");
347                 requestDetails.setRequestInfo(requestInfo);
348                 CloudConfiguration cloudConfiguration = new CloudConfiguration();
349                 cloudConfiguration.setLcpCloudRegionId("myRegionId");
350                 requestDetails.setCloudConfiguration(cloudConfiguration);
351                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
352                 String resourceId = "123";
353                 String requestAction = "createInstance";
354
355                 doReturn(null).when(bbInputSetupMapperLayer).mapAAIGenericVnfIntoGenericVnf(ArgumentMatchers.isNull());
356                 GeneralBuildingBlock actual = SPY_bbInputSetup.getGBBCM(executeBB, requestDetails, lookupKeyMap, requestAction, 
357                                 resourceId);
358
359                 assertThat(actual, sameBeanAs(expected));
360         }
361
362         @Test
363         public void testGetGBBALaCarteNonService() throws Exception {
364                 GeneralBuildingBlock expected = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
365                                 GeneralBuildingBlock.class);
366                 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
367                                 ExecuteBuildingBlock.class);
368                 RequestDetails requestDetails = mapper.readValue(
369                                 new File(RESOURCE_PATH + "RequestDetailsInput_withRelatedInstanceList.json"), RequestDetails.class);
370                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
371                 String requestAction = "createInstance";
372                 Service service = Mockito.mock(Service.class);
373                 ServiceInstance serviceInstance = Mockito.mock(ServiceInstance.class);
374                 String resourceId = "123";
375                 String vnfType = "vnfType";
376                 org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
377                 aaiServiceInstance.setModelVersionId("modelVersionId");
378                 org.onap.aai.domain.yang.CloudRegion aaiCloudRegion = Mockito.mock(org.onap.aai.domain.yang.CloudRegion.class);
379                 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "instanceId");
380                 doReturn(service).when(SPY_bbInputSetupUtils).getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
381                 doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById("instanceId");
382
383                 doNothing().when(SPY_bbInputSetup).populateObjectsOnAssignAndCreateFlows(requestDetails, service, "bbName",
384                                 serviceInstance, lookupKeyMap, resourceId, vnfType);
385                 doReturn(serviceInstance).when(SPY_bbInputSetup).getExistingServiceInstance(aaiServiceInstance);
386                 doReturn(expected).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(requestDetails, serviceInstance,
387                                 executeBB, requestAction, null);
388
389                 GeneralBuildingBlock actual = SPY_bbInputSetup.getGBBALaCarteNonService(executeBB, requestDetails, lookupKeyMap,
390                                 requestAction, resourceId, vnfType);
391
392                 assertThat(actual, sameBeanAs(expected));
393         }
394
395         @Test(expected = Exception.class)
396         public void testGetGBBALaCarteNonServiceWithoutServiceModelInfo() throws Exception {
397                 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
398                                 ExecuteBuildingBlock.class);
399                 RequestDetails requestDetails = mapper.readValue(
400                                 new File(RESOURCE_PATH + "RequestDetailsInput_withRelatedInstanceList.json"), RequestDetails.class);
401                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
402                 String requestAction = "createInstance";
403                 org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
404                 aaiServiceInstance.setModelVersionId("modelVersionId");
405                 String resourceId = "123";
406                 String vnfType = "vnfType";
407                 
408                 SPY_bbInputSetup.getGBBALaCarteNonService(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId,
409                                 vnfType);
410         }
411
412         @Test
413         public void testGetGBBALaCarteNonServiceWithoutRelatedInstances() throws Exception {
414                 GeneralBuildingBlock expected = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
415                                 GeneralBuildingBlock.class);
416                 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
417                                 ExecuteBuildingBlock.class);
418                 RequestDetails requestDetails = mapper.readValue(
419                                 new File(RESOURCE_PATH + "RequestDetailsInput_withoutRelatedInstanceList.json"), RequestDetails.class);
420                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
421                 String requestAction = "createInstance";
422                 Service service = Mockito.mock(Service.class);
423                 String resourceId = "123";
424                 ServiceInstance serviceInstance = Mockito.mock(ServiceInstance.class);
425                 org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
426                 aaiServiceInstance.setModelVersionId("modelVersionId");
427                 org.onap.aai.domain.yang.CloudRegion aaiCloudRegion = Mockito.mock(org.onap.aai.domain.yang.CloudRegion.class);
428                 String vnfType = "vnfType";
429                 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "instanceId");
430                 doReturn(service).when(SPY_bbInputSetupUtils).getCatalogServiceByModelUUID(aaiServiceInstance.getModelVersionId());
431                 doReturn(aaiServiceInstance).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById("instanceId");
432
433                 doNothing().when(SPY_bbInputSetup).populateObjectsOnAssignAndCreateFlows(requestDetails, service, "bbName",
434                                 serviceInstance, lookupKeyMap, resourceId, vnfType);
435
436                 doReturn(serviceInstance).when(SPY_bbInputSetup).getExistingServiceInstance(aaiServiceInstance);
437                 doReturn(expected).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(requestDetails, serviceInstance,
438                                 executeBB, requestAction,null);
439
440                 GeneralBuildingBlock actual = SPY_bbInputSetup.getGBBALaCarteNonService(executeBB, requestDetails, lookupKeyMap,
441                                 requestAction, resourceId, vnfType);
442
443                 assertThat(actual, sameBeanAs(expected));
444         }
445
446         @Test
447         public void testGetGBBALaCarteService() throws Exception {
448                 GeneralBuildingBlock expected = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
449                                 GeneralBuildingBlock.class);
450                 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
451                                 ExecuteBuildingBlock.class);
452                 RequestDetails requestDetails = mapper.readValue(
453                                 new File(RESOURCE_PATH + "RequestDetailsInput_withRelatedInstanceList.json"), RequestDetails.class);
454                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
455
456                 org.onap.so.serviceinstancebeans.Project requestProject = new org.onap.so.serviceinstancebeans.Project();
457                 org.onap.so.serviceinstancebeans.OwningEntity requestOwningEntity = new org.onap.so.serviceinstancebeans.OwningEntity();
458                 requestDetails.setProject(requestProject);
459                 requestDetails.setOwningEntity(requestOwningEntity);
460
461                 Service service = Mockito.mock(Service.class);
462                 Customer customer = Mockito.mock(Customer.class);
463                 ServiceSubscription serviceSubscription = Mockito.mock(ServiceSubscription.class);
464                 Project project = Mockito.mock(Project.class);
465                 OwningEntity owningEntity = Mockito.mock(OwningEntity.class);
466                 ServiceInstance serviceInstance = Mockito.mock(ServiceInstance.class);
467                 String resourceId = "123";
468                 String requestAction = "createInstance";
469                 executeBB.setaLaCarte(true);
470                 executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.SERVICE_INSTANCE.toString());
471                 org.onap.aai.domain.yang.CloudRegion aaiCloudRegion = Mockito.mock(org.onap.aai.domain.yang.CloudRegion.class);
472
473                 doReturn(service).when(SPY_bbInputSetupUtils)
474                                 .getCatalogServiceByModelUUID(requestDetails.getModelInfo().getModelVersionId());
475                 doReturn(project).when(bbInputSetupMapperLayer).mapRequestProject(requestDetails.getProject());
476                 doReturn(owningEntity).when(bbInputSetupMapperLayer)
477                                 .mapRequestOwningEntity(requestDetails.getOwningEntity());
478
479                 doReturn(customer).when(SPY_bbInputSetup).getCustomerAndServiceSubscription(requestDetails, resourceId);
480                 doReturn(serviceInstance).when(SPY_bbInputSetup).getALaCarteServiceInstance(service, requestDetails, customer,
481                                 project, owningEntity, lookupKeyMap, resourceId, Boolean.TRUE.equals(executeBB.isaLaCarte()),
482                                 executeBB.getBuildingBlock().getBpmnFlowName());
483                 doReturn(expected).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(requestDetails, serviceInstance,
484                                 executeBB, requestAction, customer);
485
486                 GeneralBuildingBlock actual = SPY_bbInputSetup.getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
487                                 requestAction, resourceId);
488
489                 assertThat(actual, sameBeanAs(expected));
490         }
491
492         @Test
493         public void testGetGBBALaCarteServiceFindServiceByModelVersionId() throws Exception {
494                 GeneralBuildingBlock expected = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
495                                 GeneralBuildingBlock.class);
496                 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
497                                 ExecuteBuildingBlock.class);
498                 RequestDetails requestDetails = mapper.readValue(
499                                 new File(RESOURCE_PATH + "RequestDetailsInput_withRelatedInstanceList.json"), RequestDetails.class);
500                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
501
502                 org.onap.so.serviceinstancebeans.Project requestProject = new org.onap.so.serviceinstancebeans.Project();
503                 org.onap.so.serviceinstancebeans.OwningEntity requestOwningEntity = new org.onap.so.serviceinstancebeans.OwningEntity();
504                 requestDetails.setProject(requestProject);
505                 requestDetails.setOwningEntity(requestOwningEntity);
506
507                 Service service = Mockito.mock(Service.class);
508                 Customer customer = Mockito.mock(Customer.class);
509                 ServiceSubscription serviceSubscription = Mockito.mock(ServiceSubscription.class);
510                 Project project = Mockito.mock(Project.class);
511                 OwningEntity owningEntity = Mockito.mock(OwningEntity.class);
512                 ServiceInstance serviceInstance = Mockito.mock(ServiceInstance.class);
513                 String resourceId = "123";
514                 String requestAction = "createInstance";
515                 executeBB.setaLaCarte(true);
516                 executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.SERVICE_INSTANCE.toString());
517                 org.onap.aai.domain.yang.CloudRegion aaiCloudRegion = Mockito.mock(org.onap.aai.domain.yang.CloudRegion.class);
518
519                 doReturn(null).when(SPY_bbInputSetupUtils)
520                                 .getCatalogServiceByModelUUID(requestDetails.getModelInfo().getModelVersionId());
521                 doReturn(service).when(SPY_bbInputSetupUtils).getCatalogServiceByModelVersionAndModelInvariantUUID(
522                                 requestDetails.getModelInfo().getModelVersion(), requestDetails.getModelInfo().getModelInvariantId());
523                 doReturn(project).when(bbInputSetupMapperLayer).mapRequestProject(requestDetails.getProject());
524                 doReturn(owningEntity).when(bbInputSetupMapperLayer)
525                                 .mapRequestOwningEntity(requestDetails.getOwningEntity());
526
527                 doReturn(customer).when(SPY_bbInputSetup).getCustomerAndServiceSubscription(requestDetails, resourceId);
528                 doReturn(serviceInstance).when(SPY_bbInputSetup).getALaCarteServiceInstance(service, requestDetails, customer,
529                                 project, owningEntity, lookupKeyMap, resourceId, Boolean.TRUE.equals(executeBB.isaLaCarte()),
530                                 executeBB.getBuildingBlock().getBpmnFlowName());
531                 doReturn(expected).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(requestDetails, serviceInstance,
532                                 executeBB, requestAction,customer);
533
534                 GeneralBuildingBlock actual = SPY_bbInputSetup.getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
535                                 requestAction, resourceId);
536
537                 assertThat(actual, sameBeanAs(expected));
538         }
539
540         @Test
541         public void testGetGBBALaCarteServiceNoProjectNoOE() throws Exception {
542                 GeneralBuildingBlock expected = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
543                                 GeneralBuildingBlock.class);
544                 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
545                                 ExecuteBuildingBlock.class);
546                 RequestDetails requestDetails = mapper.readValue(
547                                 new File(RESOURCE_PATH + "RequestDetailsInput_withRelatedInstanceList.json"), RequestDetails.class);
548                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
549
550                 Service service = Mockito.mock(Service.class);
551                 Customer customer = Mockito.mock(Customer.class);
552                 ServiceSubscription serviceSubscription = Mockito.mock(ServiceSubscription.class);
553                 ServiceInstance serviceInstance = Mockito.mock(ServiceInstance.class);
554                 String resourceId = "123";
555                 String requestAction = "createInstance";
556                 executeBB.setaLaCarte(true);
557                 executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.SERVICE_INSTANCE.toString());
558                 org.onap.aai.domain.yang.CloudRegion aaiCloudRegion = Mockito.mock(org.onap.aai.domain.yang.CloudRegion.class);
559
560                 Map<String, String> uriKeys = new HashMap<>();
561                 uriKeys.put("global-customer-id", "globalCustomerId");
562                 uriKeys.put("service-type", "serviceType");
563         
564                 doReturn(service).when(SPY_bbInputSetupUtils)
565                                 .getCatalogServiceByModelUUID(requestDetails.getModelInfo().getModelVersionId());
566
567                 doReturn(customer).when(SPY_bbInputSetup).getCustomerAndServiceSubscription(requestDetails, resourceId);
568         
569                 doReturn(serviceInstance).when(SPY_bbInputSetup).getALaCarteServiceInstance(service, requestDetails, customer,
570                                 null, null, lookupKeyMap, resourceId, Boolean.TRUE.equals(executeBB.isaLaCarte()),
571                                 executeBB.getBuildingBlock().getBpmnFlowName());
572                 doReturn(expected).when(SPY_bbInputSetup).populateGBBWithSIAndAdditionalInfo(requestDetails, serviceInstance,
573                                 executeBB, requestAction,customer);
574
575                 GeneralBuildingBlock actual = SPY_bbInputSetup.getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
576                                 requestAction, resourceId);
577
578                 assertThat(actual, sameBeanAs(expected));
579         }
580
581         @Test
582         public void testGetServiceInstanceHelperCreateScenario() throws Exception {
583                 RequestDetails requestDetails = new RequestDetails();
584                 RequestInfo requestInfo = new RequestInfo();
585                 requestInfo.setInstanceName("SharansInstanceName");
586                 requestDetails.setRequestInfo(requestInfo);
587                 Customer customer = new Customer();
588                 String serviceInstanceId = "SharansInstanceId";
589                 boolean aLaCarte = true;
590                 ServiceInstance expected = new ServiceInstance();
591                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
592                 Service service = new Service();
593                 service.setModelUUID("modelUUID");
594                 String bbName = AssignFlows.SERVICE_INSTANCE.toString();
595
596                 doReturn(null).when(SPY_bbInputSetupUtils).getAAIServiceInstanceByName(requestInfo.getInstanceName(), customer);
597                 doReturn(null).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById(serviceInstanceId);
598
599
600                 doReturn(expected).when(SPY_bbInputSetup).createServiceInstance(requestDetails, null, null,
601                                 lookupKeyMap, serviceInstanceId);
602
603                 ServiceInstance actual = SPY_bbInputSetup.getServiceInstanceHelper(requestDetails, customer, null, null,
604                                 lookupKeyMap, serviceInstanceId, aLaCarte, service, bbName);
605                 assertThat(actual, sameBeanAs(expected));
606         }
607
608         @Test
609         public void testGetServiceInstanceHelperCreateScenarioExisting() throws Exception {
610                 RequestDetails requestDetails = new RequestDetails();
611                 RequestInfo requestInfo = new RequestInfo();
612                 requestInfo.setInstanceName("SharansInstanceName");
613                 requestDetails.setRequestInfo(requestInfo);
614                 Customer customer = new Customer();
615                 String serviceInstanceId = "SharansInstanceId";
616                 boolean aLaCarte = true;
617                 Service service = new Service();
618                 service.setModelUUID("modelUUID");
619                 ServiceInstance expected = new ServiceInstance();
620                 org.onap.aai.domain.yang.ServiceInstance serviceInstanceAAI = new org.onap.aai.domain.yang.ServiceInstance();
621                 serviceInstanceAAI.setModelVersionId("modelUUID");
622                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
623                 String bbName = AssignFlows.SERVICE_INSTANCE.toString();
624
625                 doReturn(serviceInstanceAAI).when(SPY_bbInputSetupUtils)
626                                 .getAAIServiceInstanceByName(requestInfo.getInstanceName(), customer);
627                 doReturn(expected).when(SPY_bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
628
629                 ServiceInstance actual = SPY_bbInputSetup.getServiceInstanceHelper(requestDetails, customer, null, null,
630                                 lookupKeyMap, serviceInstanceId, aLaCarte, service, bbName);
631                 assertThat(actual, sameBeanAs(expected));
632         }
633
634         @Test
635         public void testGetServiceInstanceHelperCreateScenarioExistingNoNameButWithId() throws Exception {
636                 RequestDetails requestDetails = new RequestDetails();
637                 RequestInfo requestInfo = new RequestInfo();
638                 requestInfo.setInstanceName("SharansInstanceName");
639                 requestDetails.setRequestInfo(requestInfo);
640                 Customer customer = new Customer();
641                 String serviceInstanceId = "SharansInstanceId";
642                 boolean aLaCarte = true;
643                 Service service = new Service();
644                 service.setModelUUID("modelUUID");
645                 ServiceInstance expected = new ServiceInstance();
646                 org.onap.aai.domain.yang.ServiceInstance serviceInstanceAAI = new org.onap.aai.domain.yang.ServiceInstance();
647                 serviceInstanceAAI.setModelVersionId("modelUUID");
648                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
649                 String bbName = "ActivateServiceInstanceBB";
650
651                 doReturn(serviceInstanceAAI).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById(serviceInstanceId);
652                 doReturn(expected).when(SPY_bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
653
654                 ServiceInstance actual = SPY_bbInputSetup.getServiceInstanceHelper(requestDetails, customer, null, null,
655                                 lookupKeyMap, serviceInstanceId, aLaCarte, service, bbName);
656                 assertThat(actual, sameBeanAs(expected));
657         }
658
659         @Test
660         public void testGetServiceInstanceHelperCreateScenarioExistingNoNameButWithIdDifferentModel() throws Exception {
661                 RequestDetails requestDetails = new RequestDetails();
662                 RequestInfo requestInfo = new RequestInfo();
663                 requestDetails.setRequestInfo(requestInfo);
664                 Customer customer = new Customer();
665                 String serviceInstanceId = "SharansInstanceId";
666                 boolean aLaCarte = true;
667                 Service service = new Service();
668                 service.setModelUUID("modelUUID");
669                 ServiceInstance expected = new ServiceInstance();
670                 org.onap.aai.domain.yang.ServiceInstance serviceInstanceAAI = new org.onap.aai.domain.yang.ServiceInstance();
671                 serviceInstanceAAI.setModelVersionId("modelUUIDDifferent");
672                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
673                 String bbName = "ActivateServiceInstanceBB";
674                 Service differentService = new Service();
675                 differentService.setModelUUID("modelUUIDDifferent");
676
677                 doReturn(serviceInstanceAAI).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById(serviceInstanceId);
678                 
679
680                 ServiceInstance actual = SPY_bbInputSetup.getServiceInstanceHelper(requestDetails, customer, null, null,
681                                 lookupKeyMap, serviceInstanceId, aLaCarte, service, bbName);
682                 assertThat(actual, sameBeanAs(expected));
683         }
684
685         @Test(expected = Exception.class)
686         public void testGetServiceInstanceHelperCreateScenarioExistingNoNameButWithIdExceptionThrown() throws Exception {
687                 RequestDetails requestDetails = new RequestDetails();
688                 RequestInfo requestInfo = new RequestInfo();
689                 requestDetails.setRequestInfo(requestInfo);
690                 Customer customer = new Customer();
691                 String serviceInstanceId = "SharansInstanceId";
692                 boolean aLaCarte = true;
693                 Service service = new Service();
694                 service.setModelUUID("modelUUID");
695                 org.onap.aai.domain.yang.ServiceInstance serviceInstanceAAI = new org.onap.aai.domain.yang.ServiceInstance();
696                 serviceInstanceAAI.setModelVersionId("modelUUIDDifferent");
697                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
698                 String bbName = AssignFlows.SERVICE_INSTANCE.toString();
699
700                 ServiceInstance actual = SPY_bbInputSetup.getServiceInstanceHelper(requestDetails, customer, null, null,
701                                 lookupKeyMap, serviceInstanceId, aLaCarte, service, bbName);
702         }
703
704         @Test
705         public void testPopulateObjectsOnAssignAndCreateFlows() throws Exception {
706                 String bbName = AssignFlows.SERVICE_INSTANCE.toString();
707                 String instanceName = "instanceName";
708                 String vnfType = "vnfType";
709                 String resourceId = "networkId";
710                 Service service = Mockito.mock(Service.class);
711                 ServiceInstance serviceInstance = Mockito.mock(ServiceInstance.class);
712                 RequestDetails requestDetails = Mockito.mock(RequestDetails.class);
713                 ModelInfo modelInfo = Mockito.mock(ModelInfo.class);
714                 RequestInfo requestInfo = Mockito.mock(RequestInfo.class);
715                 RelatedInstanceList[] relatedInstanceList = new RelatedInstanceList[] {};
716                 CloudConfiguration cloudConfiguration = new CloudConfiguration();
717                 org.onap.so.serviceinstancebeans.Platform platform = Mockito
718                                 .mock(org.onap.so.serviceinstancebeans.Platform.class);
719                 org.onap.so.serviceinstancebeans.LineOfBusiness lineOfBusiness = Mockito
720                                 .mock(org.onap.so.serviceinstancebeans.LineOfBusiness.class);
721                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
722
723                 doNothing().when(SPY_bbInputSetup).populateL3Network(instanceName, modelInfo, service, bbName, serviceInstance,
724                                 lookupKeyMap, resourceId, null);
725                 doReturn(modelInfo).when(requestDetails).getModelInfo();
726                 doReturn(requestInfo).when(requestDetails).getRequestInfo();
727                 doReturn(instanceName).when(requestInfo).getInstanceName();
728                 doReturn(platform).when(requestDetails).getPlatform();
729                 doReturn(lineOfBusiness).when(requestDetails).getLineOfBusiness();
730                 doReturn(relatedInstanceList).when(requestDetails).getRelatedInstanceList();
731                 doReturn(cloudConfiguration).when(requestDetails).getCloudConfiguration();
732
733                 doReturn(ModelType.network).when(modelInfo).getModelType();
734                 SPY_bbInputSetup.populateObjectsOnAssignAndCreateFlows(requestDetails, service, bbName, serviceInstance,
735                                 lookupKeyMap, resourceId, vnfType);
736                 verify(SPY_bbInputSetup, times(1)).populateL3Network(instanceName, modelInfo, service, bbName, serviceInstance,
737                                 lookupKeyMap, resourceId, null);
738                 assertEquals("NetworkId populated", true, lookupKeyMap.get(ResourceKey.NETWORK_ID).equalsIgnoreCase(resourceId));
739
740                 doReturn(ModelType.vnf).when(modelInfo).getModelType();
741                 resourceId = "vnfId";
742                 doNothing().when(SPY_bbInputSetup).populateGenericVnf(modelInfo, instanceName, platform, lineOfBusiness,
743                                 service, bbName, serviceInstance, lookupKeyMap, relatedInstanceList, resourceId, vnfType, null);
744                 SPY_bbInputSetup.populateObjectsOnAssignAndCreateFlows(requestDetails, service, bbName, serviceInstance,
745                                 lookupKeyMap, resourceId, vnfType);
746                 verify(SPY_bbInputSetup, times(1)).populateGenericVnf(modelInfo, instanceName, platform, lineOfBusiness,
747                                 service, bbName, serviceInstance, lookupKeyMap, relatedInstanceList, resourceId, vnfType, null);
748                 assertEquals("VnfId populated", true, lookupKeyMap.get(ResourceKey.GENERIC_VNF_ID).equalsIgnoreCase(resourceId));
749
750                 doReturn(ModelType.volumeGroup).when(modelInfo).getModelType();
751                 resourceId = "volumeGroupId";
752                 doNothing().when(SPY_bbInputSetup).populateVolumeGroup(modelInfo, service, bbName, serviceInstance,
753                                 lookupKeyMap, resourceId, relatedInstanceList, instanceName, vnfType, null);
754                 SPY_bbInputSetup.populateObjectsOnAssignAndCreateFlows(requestDetails, service, bbName, serviceInstance,
755                                 lookupKeyMap, resourceId, vnfType);
756                 verify(SPY_bbInputSetup, times(1)).populateVolumeGroup(modelInfo, service, bbName, serviceInstance,
757                                 lookupKeyMap, resourceId, relatedInstanceList, instanceName, vnfType, null);
758                 assertEquals("VolumeGroupId populated", true, lookupKeyMap.get(ResourceKey.VOLUME_GROUP_ID).equalsIgnoreCase(resourceId));
759
760                 doReturn(ModelType.vfModule).when(modelInfo).getModelType();
761                 resourceId = "vfModuleId";
762                 doNothing().when(SPY_bbInputSetup).populateVfModule(modelInfo, service, bbName, serviceInstance, lookupKeyMap,
763                                 resourceId, relatedInstanceList, instanceName, null, cloudConfiguration);
764                 SPY_bbInputSetup.populateObjectsOnAssignAndCreateFlows(requestDetails, service, bbName, serviceInstance,
765                                 lookupKeyMap, resourceId, vnfType);
766                 verify(SPY_bbInputSetup, times(1)).populateVfModule(modelInfo, service, bbName, serviceInstance, lookupKeyMap,
767                                 resourceId, relatedInstanceList, instanceName, null, cloudConfiguration);
768                 assertEquals("VfModuleId populated", true, lookupKeyMap.get(ResourceKey.VF_MODULE_ID).equalsIgnoreCase(resourceId));
769         }
770
771         @Test
772         public void testPopulateGBBWithSIAndAdditionalInfo() throws Exception {
773                 GeneralBuildingBlock expected = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
774                                 GeneralBuildingBlock.class);
775                 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
776                                 ExecuteBuildingBlock.class);
777                 RequestDetails requestDetails = mapper.readValue(
778                                 new File(RESOURCE_PATH + "RequestDetailsInput_withRelatedInstanceList.json"), RequestDetails.class);
779                 RequestContext requestContext = mapper.readValue(new File(RESOURCE_PATH + "RequestContextExpected.json"),
780                                 RequestContext.class);
781                 ServiceInstance serviceInstance = mapper.readValue(
782                                 new File(RESOURCE_PATH + "ServiceInstance_getServiceInstanceNOAAIExpected.json"),
783                                 ServiceInstance.class);
784
785                 OrchestrationContext orchestrationContext = new OrchestrationContext();
786                 orchestrationContext.setIsRollbackEnabled(false);
787
788                 CloudRegion cloudRegion = new CloudRegion();
789                 cloudRegion.setCloudOwner("test-owner-name");
790                 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
791                 cloudRegion.setComplex("complexName");
792                 cloudRegion.setTenantId("tenantId");
793
794                 Map<String, String> uriKeys = new HashMap<>();
795                 uriKeys.put("global-customer-id","global-customer-id");
796                 uriKeys.put("service-type","service-type");
797
798                 Customer customer = new Customer();
799                 ServiceSubscription serviceSubscription = new ServiceSubscription();
800                 serviceSubscription.setServiceType("subscriptionServiceType");
801                 customer.setGlobalCustomerId("globalCustomerId");
802                 customer.setSubscriberName("subscriberName");
803                 customer.setSubscriberType("subscriberType");
804                 customer.setServiceSubscription(serviceSubscription);
805
806                 org.onap.aai.domain.yang.CloudRegion aaiCloudRegion = Mockito.mock(org.onap.aai.domain.yang.CloudRegion.class);
807
808                 String requestAction = "createInstance";
809
810                 doReturn(uriKeys).when(SPY_bbInputSetupUtils).getURIKeysFromServiceInstance(serviceInstance.getServiceInstanceId());
811                 doReturn(customer).when(SPY_bbInputSetup).mapCustomer(uriKeys.get("global-customer-id"),uriKeys.get("service-type"));
812                 doReturn(aaiCloudRegion).when(SPY_bbInputSetupUtils).getCloudRegion(requestDetails.getCloudConfiguration());
813                 doReturn(orchestrationContext).when(bbInputSetupMapperLayer).mapOrchestrationContext(requestDetails);
814                 doReturn(requestContext).when(bbInputSetupMapperLayer).mapRequestContext(requestDetails);
815                 doReturn(cloudRegion).when(bbInputSetupMapperLayer).mapCloudRegion(requestDetails.getCloudConfiguration(), aaiCloudRegion);
816
817                 GeneralBuildingBlock actual = SPY_bbInputSetup.populateGBBWithSIAndAdditionalInfo(requestDetails,
818                                 serviceInstance, executeBB, requestAction, null);
819
820                 assertThat(actual, sameBeanAs(expected));
821         }
822
823         @Test
824         public void testGetServiceInstanceNOAAI() throws Exception {
825                 ServiceInstance expected = mapper.readValue(
826                                 new File(RESOURCE_PATH + "ServiceInstance_getServiceInstanceNOAAIExpected.json"),
827                                 ServiceInstance.class);
828                 Service service = mapper.readValue(
829                                 new File(RESOURCE_PATH + "CatalogDBService_getServiceInstanceNOAAIInput.json"), Service.class);
830                 Customer customer = mapper.readValue(new File(RESOURCE_PATH + "Customer.json"), Customer.class);
831                 Project project = mapper.readValue(new File(RESOURCE_PATH + "Project.json"), Project.class);
832                 OwningEntity owningEntity = mapper.readValue(new File(RESOURCE_PATH + "OwningEntity.json"), OwningEntity.class);
833                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
834
835                 ExecuteBuildingBlock executeBB = new ExecuteBuildingBlock();
836                 executeBB.setaLaCarte(true);
837                 BuildingBlock buildingBlock = new BuildingBlock();
838                 buildingBlock.setBpmnFlowName(AssignFlows.SERVICE_INSTANCE.toString());
839                 executeBB.setBuildingBlock(buildingBlock);
840                 RequestDetails requestDetails = new RequestDetails();
841                 RequestInfo reqInfo = new RequestInfo();
842                 reqInfo.setInstanceName("serviceInstanceName");
843                 requestDetails.setRequestInfo(reqInfo);
844                 ModelInfo modelInfo = new ModelInfo();
845                 modelInfo.setModelType(ModelType.service);
846                 requestDetails.setModelInfo(modelInfo);
847                 doReturn(null).when(SPY_bbInputSetupUtils)
848                                 .getAAIServiceInstanceByName(requestDetails.getRequestInfo().getInstanceName(), customer);
849                 doReturn(expected.getModelInfoServiceInstance()).when(bbInputSetupMapperLayer)
850                                 .mapCatalogServiceIntoServiceInstance(service);
851                 doReturn(null).when(SPY_bbInputSetupUtils).getAAIServiceInstanceById(any(String.class));
852                 String serviceInstanceId = "3655a595-05d1-433c-93c0-3afd6b572545";
853                 boolean aLaCarte = true;
854
855                 ServiceInstance actual = SPY_bbInputSetup.getALaCarteServiceInstance(service, requestDetails, customer, project,
856                                 owningEntity, lookupKeyMap, serviceInstanceId, aLaCarte,
857                                 executeBB.getBuildingBlock().getBpmnFlowName());
858
859                 assertThat(actual, sameBeanAs(expected));
860         }
861
862         @Test
863         public void testGetServiceSubscription() throws IOException {
864                 ServiceSubscription expected = new ServiceSubscription();
865                 RequestDetails requestDetails = new RequestDetails();
866                 RequestParameters params = new RequestParameters();
867                 params.setSubscriptionServiceType("subscriptionServiceType");
868                 requestDetails.setRequestParameters(params);
869                 org.onap.aai.domain.yang.ServiceSubscription aaiServiceSubscription = new org.onap.aai.domain.yang.ServiceSubscription();
870                 Customer customer = new Customer();
871                 customer.setGlobalCustomerId("globalCustomerId");
872                 doReturn(aaiServiceSubscription).when(SPY_bbInputSetupUtils).getAAIServiceSubscription(
873                                 customer.getGlobalCustomerId(), requestDetails.getRequestParameters().getSubscriptionServiceType());
874                 doReturn(expected).when(bbInputSetupMapperLayer).mapAAIServiceSubscription(aaiServiceSubscription);
875
876                 ServiceSubscription actual = SPY_bbInputSetup.getServiceSubscription(requestDetails, customer);
877                 assertThat(actual, sameBeanAs(expected));
878         }
879
880         @Test
881         public void testGetCustomer() throws IOException {
882                 Customer expected = new Customer();
883                 RequestDetails requestDetails = new RequestDetails();
884                 SubscriberInfo subscriberInfo = new SubscriberInfo();
885                 subscriberInfo.setGlobalSubscriberId("globalSubscriberId");
886                 requestDetails.setSubscriberInfo(subscriberInfo);
887                 org.onap.aai.domain.yang.Customer aaiCustomer = new org.onap.aai.domain.yang.Customer();
888                 doReturn(aaiCustomer).when(SPY_bbInputSetupUtils)
889                                 .getAAICustomer(requestDetails.getSubscriberInfo().getGlobalSubscriberId());
890                 doReturn(expected).when(bbInputSetupMapperLayer).mapAAICustomer(aaiCustomer);
891
892                 Customer actual = SPY_bbInputSetup.getCustomerFromRequest(requestDetails);
893                 assertThat(actual, sameBeanAs(expected));
894         }
895
896         @Test
897         public void testGetExistingServiceInstance() throws Exception {
898                 org.onap.aai.domain.yang.ServiceInstance serviceInstanceAAI = new org.onap.aai.domain.yang.ServiceInstance();
899                 ServiceInstance expected = new ServiceInstance();
900
901                 doReturn(expected).when(bbInputSetupMapperLayer)
902                                 .mapAAIServiceInstanceIntoServiceInstance(serviceInstanceAAI);
903
904
905                 ServiceInstance actual = SPY_bbInputSetup.getExistingServiceInstance(serviceInstanceAAI);
906                 assertThat(actual, sameBeanAs(expected));
907         }
908
909         @Test
910         public void testPopulateNetworkCollectionAndInstanceGroupAssign() throws Exception {
911                 Service service = Mockito.mock(Service.class);
912                 String key = "collectionCustId";
913                 ServiceInstance serviceInstance = mapper.readValue(
914                                 new File(RESOURCE_PATH + "ServiceInstance_getServiceInstanceNOAAIExpected.json"),
915                                 ServiceInstance.class);
916                 String resourceId = "123";
917                 Collection collection = SPY_bbInputSetup.createCollection(resourceId);
918                 InstanceGroup instanceGroup = SPY_bbInputSetup.createInstanceGroup();
919                 assertNull(serviceInstance.getCollection());
920                 doReturn(true).when(SPY_bbInputSetup).isVlanTagging(service, key);
921                 doReturn(collection).when(SPY_bbInputSetup).createCollection(resourceId);
922                 doReturn(instanceGroup).when(SPY_bbInputSetup).createInstanceGroup();
923                 doNothing().when(SPY_bbInputSetup).mapCatalogCollection(service, collection, key);
924
925                 NetworkCollectionResourceCustomization networkCollection = new NetworkCollectionResourceCustomization();
926                 networkCollection.setModelCustomizationUUID(key);
927                 networkCollection.setCollectionResource(new CollectionResource());
928                 networkCollection.getCollectionResource().setInstanceGroup(new org.onap.so.db.catalog.beans.InstanceGroup());
929                 networkCollection.getCollectionResource().getInstanceGroup().setToscaNodeType("NetworkCollectionResource");
930                 networkCollection.getCollectionResource().getInstanceGroup().setType(InstanceGroupType.L3_NETWORK);
931                 networkCollection.getCollectionResource().getInstanceGroup().setCollectionInstanceGroupCustomizations(new ArrayList<>());
932                 List<CollectionResourceCustomization> customizations = new ArrayList<>();
933                 customizations.add(networkCollection);
934                 doReturn(customizations).when(service).getCollectionResourceCustomizations();
935
936                 SPY_bbInputSetup.populateNetworkCollectionAndInstanceGroupAssign(service,
937                                 AssignFlows.NETWORK_COLLECTION.toString(), serviceInstance, resourceId, key);
938
939                 assertNotNull(serviceInstance.getCollection());
940                 assertNotNull(serviceInstance.getCollection().getInstanceGroup());
941
942                 verify(SPY_bbInputSetup, times(1)).mapCatalogCollection(service, serviceInstance.getCollection(), key);
943                 verify(SPY_bbInputSetup, times(1)).mapCatalogNetworkCollectionInstanceGroup(service,
944                                 serviceInstance.getCollection().getInstanceGroup(), key);
945         }
946
947         @Test
948         public void testIsVlanTagging() throws Exception {
949                 boolean expected = true;
950                 Service service = Mockito.mock(Service.class);
951                 String key = "collectionCustId";
952                 NetworkCollectionResourceCustomization networkCollection = new NetworkCollectionResourceCustomization();
953                 networkCollection.setModelCustomizationUUID(key);
954                 networkCollection.setCollectionResource(new CollectionResource());
955                 networkCollection.getCollectionResource().setInstanceGroup(new org.onap.so.db.catalog.beans.InstanceGroup());
956                 networkCollection.getCollectionResource().getInstanceGroup().setToscaNodeType("org.openecomp.resource.cr.NetworkCollectionResource1806");
957                 List<CollectionResourceCustomization> customizations = new ArrayList<>();
958                 customizations.add(networkCollection);
959                 doReturn(customizations).when(service).getCollectionResourceCustomizations();
960                 boolean actual = SPY_bbInputSetup.isVlanTagging(service, key);
961                 assertEquals("Is Vlan Tagging check.", expected, actual);
962         }
963
964         @Test
965         public void testPopulateVolumeGroup() throws Exception {
966                 RequestDetails requestDetails = new RequestDetails();
967                 RelatedInstanceList ril = new RelatedInstanceList();
968                 RelatedInstance ri = new RelatedInstance();
969                 ModelInfo mi = new ModelInfo();
970                 mi.setModelType(ModelType.vnf);
971                 mi.setModelCustomizationUuid("vnfModelCustomizationUUID");
972                 ri.setModelInfo(mi);
973                 ril.setRelatedInstance(ri);
974                 requestDetails.setRelatedInstanceList(new RelatedInstanceList[] { ril });
975
976                 ModelInfo modelInfo = new ModelInfo();
977                 modelInfo.setModelType(ModelType.volumeGroup);
978
979                 RequestInfo reqInfo = new RequestInfo();
980                 reqInfo.setInstanceName("volumeGroupName");
981                 requestDetails.setModelInfo(modelInfo);
982                 requestDetails.setRequestInfo(reqInfo);
983
984                 ServiceInstance serviceInstance = new ServiceInstance();
985                 GenericVnf vnf = new GenericVnf();
986                 vnf.setVnfId("genericVnfId");
987
988                 VolumeGroup vg = new VolumeGroup();
989                 vg.setVolumeGroupName("volumeGroupName");
990                 vg.setVolumeGroupId("volumeGroupId");
991                 vnf.getVolumeGroups().add(vg);
992                 serviceInstance.getVnfs().add(vnf);
993
994                 Service service = mapper.readValue(
995                                 new File(RESOURCE_PATH + "CatalogDBService_getServiceInstanceNOAAIInput.json"), Service.class);
996                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
997                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "genericVnfId");
998
999                 String bbName = AssignFlows.VOLUME_GROUP.toString();
1000                 String resourceId = "123";
1001                 doNothing().when(SPY_bbInputSetup).mapCatalogVolumeGroup(isA(VolumeGroup.class), eq(modelInfo),
1002                                 eq(service), eq("vnfModelCustomizationUUID"));
1003                 org.onap.aai.domain.yang.GenericVnf aaiGenericVnf = new org.onap.aai.domain.yang.GenericVnf();
1004                 aaiGenericVnf.setModelCustomizationId("vnfModelCustomizationUUID");
1005                 doReturn(aaiGenericVnf).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
1006
1007                 lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, "volumeGroupId");
1008                 SPY_bbInputSetup.populateVolumeGroup(modelInfo, service, bbName, serviceInstance, lookupKeyMap, resourceId,
1009                                 requestDetails.getRelatedInstanceList(), reqInfo.getInstanceName(), null, null);
1010                 verify(SPY_bbInputSetup, times(1)).mapCatalogVolumeGroup(vg, modelInfo, service, "vnfModelCustomizationUUID");
1011                 vnf.getVolumeGroups().clear();
1012                 SPY_bbInputSetup.populateVolumeGroup(modelInfo, service, bbName, serviceInstance, lookupKeyMap, resourceId,
1013                                 requestDetails.getRelatedInstanceList(), reqInfo.getInstanceName(), null, null);
1014                 verify(SPY_bbInputSetup, times(1)).mapCatalogVolumeGroup(vnf.getVolumeGroups().get(0), modelInfo, service,
1015                                 "vnfModelCustomizationUUID");
1016         }
1017
1018         @Test
1019         public void testMapCatalogVolumeGroup() {
1020                 VolumeGroup volumeGroup = new VolumeGroup();
1021                 RequestDetails requestDetails = new RequestDetails();
1022                 ModelInfo modelInfo = new ModelInfo();
1023                 modelInfo.setModelCustomizationUuid("modelCustomizationUUID");
1024                 requestDetails.setModelInfo(modelInfo);
1025                 Service service = new Service();
1026                 VnfResourceCustomization resourceCust = new VnfResourceCustomization();
1027                 resourceCust.setModelCustomizationUUID("vnfModelCustomizationUUID");
1028                 service.getVnfCustomizations().add(resourceCust);
1029                 VfModuleCustomization vfResourceCust = new VfModuleCustomization();
1030                 vfResourceCust.setModelCustomizationUUID("modelCustomizationUUID");
1031                 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
1032                 resourceCust.getVfModuleCustomizations().add(vfResourceCust);
1033
1034                 doReturn(modelInfoVfModule).when(bbInputSetupMapperLayer).mapCatalogVfModuleToVfModule(vfResourceCust);
1035
1036                 SPY_bbInputSetup.mapCatalogVolumeGroup(volumeGroup, modelInfo, service, "vnfModelCustomizationUUID");
1037
1038                 assertEquals(modelInfoVfModule, volumeGroup.getModelInfoVfModule());
1039         }
1040
1041         @Test
1042         public void testPopulateL3Network() throws JsonParseException, JsonMappingException, IOException {
1043                 String instanceName = "networkName";
1044                 ModelInfo modelInfo = new ModelInfo();
1045                 modelInfo.setModelType(ModelType.network);
1046
1047                 ServiceInstance serviceInstance = new ServiceInstance();
1048                 L3Network network = new L3Network();
1049                 network.setNetworkId("networkId");
1050                 network.setNetworkName("networkName");
1051                 serviceInstance.getNetworks().add(network);
1052                 String resourceId = "123";
1053                 // Mock service
1054                 Service service = mapper.readValue(
1055                                 new File(RESOURCE_PATH + "CatalogDBService_getServiceInstanceNOAAIInput.json"), Service.class);
1056                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
1057                 lookupKeyMap.put(ResourceKey.NETWORK_ID, "networkId");
1058                 String bbName = AssignFlows.NETWORK_A_LA_CARTE.toString();
1059
1060                 doNothing().when(SPY_bbInputSetup).mapCatalogNetwork(network, modelInfo, service);
1061
1062                 SPY_bbInputSetup.populateL3Network(instanceName, modelInfo, service, bbName, serviceInstance, lookupKeyMap,
1063                                 resourceId, null);
1064
1065                 lookupKeyMap.put(ResourceKey.NETWORK_ID, null);
1066
1067                 SPY_bbInputSetup.populateL3Network(instanceName, modelInfo, service, bbName, serviceInstance, lookupKeyMap,
1068                                 resourceId, null);
1069                 verify(SPY_bbInputSetup, times(1)).mapCatalogNetwork(network, modelInfo, service);
1070
1071                 instanceName = "networkName2";
1072                 L3Network network2 = SPY_bbInputSetup.createNetwork(lookupKeyMap, instanceName, resourceId, null);
1073                 SPY_bbInputSetup.populateL3Network(instanceName, modelInfo, service, bbName, serviceInstance, lookupKeyMap,
1074                                 resourceId, null);
1075                 verify(SPY_bbInputSetup, times(2)).mapCatalogNetwork(network2, modelInfo, service);
1076         }
1077
1078         @Test
1079         public void testMapCatalogNetwork() {
1080                 ModelInfoNetwork modelInfoNetwork = new ModelInfoNetwork();
1081                 L3Network network = new L3Network();
1082
1083                 RequestDetails requestDetails = new RequestDetails();
1084                 ModelInfo modelInfo = new ModelInfo();
1085                 modelInfo.setModelCustomizationUuid("modelCustomizationUUID");
1086                 requestDetails.setModelInfo(modelInfo);
1087                 Service service = new Service();
1088                 NetworkResourceCustomization resourceCust = new NetworkResourceCustomization();
1089                 resourceCust.setModelCustomizationUUID("modelCustomizationUUID");
1090                 service.setNetworkCustomizations(Arrays.asList(new NetworkResourceCustomization[] { resourceCust }));
1091
1092                 doReturn(modelInfoNetwork).when(bbInputSetupMapperLayer).mapCatalogNetworkToNetwork(resourceCust);
1093
1094                 SPY_bbInputSetup.mapCatalogNetwork(network, modelInfo, service);
1095
1096                 assertEquals(modelInfoNetwork, network.getModelInfoNetwork());
1097         }
1098         
1099         @Test
1100         public void testPopulateConfiguration() throws JsonParseException, JsonMappingException, IOException {
1101                 String instanceName = "configurationName";
1102                 ModelInfo modelInfo = new ModelInfo();
1103                 modelInfo.setModelCustomizationUuid("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
1104
1105                 ServiceInstance serviceInstance = new ServiceInstance();
1106                 Configuration configuration = new Configuration();
1107                 configuration.setConfigurationId("configurationId");
1108                 configuration.setConfigurationName("configurationName");
1109                 serviceInstance.getConfigurations().add(configuration);
1110                 String resourceId = "configurationId";
1111                 // Mock service
1112                 Service service = mapper.readValue(
1113                                 new File(RESOURCE_PATH + "CatalogDBService_getServiceInstanceNOAAIInput.json"), Service.class);
1114                 ConfigurationResourceCustomization configurationCust = new ConfigurationResourceCustomization();
1115                 configurationCust.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
1116                 service.getConfigurationCustomizations().add(configurationCust);
1117                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
1118                 lookupKeyMap.put(ResourceKey.CONFIGURATION_ID, "configurationId");
1119                 String bbName = AssignFlows.FABRIC_CONFIGURATION.toString();
1120                 ConfigurationResourceKeys configResourceKeys = new ConfigurationResourceKeys();
1121                 configResourceKeys.setCvnfcCustomizationUUID("cvnfcCustomizationUUID");
1122                 configResourceKeys.setVfModuleCustomizationUUID("vfModuleCustomizationUUID");
1123                 configResourceKeys.setVnfResourceCustomizationUUID("vnfResourceCustomizationUUID");
1124
1125                 doNothing().when(SPY_bbInputSetup).mapCatalogConfiguration(configuration, modelInfo, service, configResourceKeys);
1126
1127                 SPY_bbInputSetup.populateConfiguration(modelInfo, service, bbName, serviceInstance, lookupKeyMap, resourceId,
1128                                 instanceName, configResourceKeys);
1129                 verify(SPY_bbInputSetup, times(1)).mapCatalogConfiguration(configuration, modelInfo, service, configResourceKeys);
1130                 
1131                 lookupKeyMap.put(ResourceKey.CONFIGURATION_ID, null);
1132
1133                 SPY_bbInputSetup.populateConfiguration(modelInfo, service, bbName, serviceInstance, lookupKeyMap, resourceId,
1134                                 instanceName, configResourceKeys);
1135                 verify(SPY_bbInputSetup, times(2)).mapCatalogConfiguration(configuration, modelInfo, service, configResourceKeys);
1136
1137                 instanceName = "configurationName2";
1138                 resourceId = "resourceId2";
1139                 lookupKeyMap.put(ResourceKey.CONFIGURATION_ID, "configurationId2");
1140                 Configuration configuration2 = SPY_bbInputSetup.createConfiguration(lookupKeyMap, instanceName, resourceId);
1141                 doReturn(configuration2).when(SPY_bbInputSetup).createConfiguration(lookupKeyMap, instanceName, resourceId);
1142                 doNothing().when(SPY_bbInputSetup).mapCatalogConfiguration(configuration2, modelInfo, service, configResourceKeys);
1143                 SPY_bbInputSetup.populateConfiguration(modelInfo, service, bbName, serviceInstance, lookupKeyMap, resourceId,
1144                                 instanceName, configResourceKeys);
1145                 verify(SPY_bbInputSetup, times(1)).mapCatalogConfiguration(configuration2, modelInfo, service, configResourceKeys);
1146         }
1147
1148         @Test
1149         public void testMapCatalogConfiguration() {
1150                 ModelInfoNetwork modelInfoNetwork = new ModelInfoNetwork();
1151                 L3Network network = new L3Network();
1152
1153                 RequestDetails requestDetails = new RequestDetails();
1154                 ModelInfo modelInfo = new ModelInfo();
1155                 modelInfo.setModelCustomizationUuid("modelCustomizationUUID");
1156                 requestDetails.setModelInfo(modelInfo);
1157                 Service service = new Service();
1158                 NetworkResourceCustomization resourceCust = new NetworkResourceCustomization();
1159                 resourceCust.setModelCustomizationUUID("modelCustomizationUUID");
1160                 service.setNetworkCustomizations(Arrays.asList(new NetworkResourceCustomization[] { resourceCust }));
1161
1162                 doReturn(modelInfoNetwork).when(bbInputSetupMapperLayer).mapCatalogNetworkToNetwork(resourceCust);
1163
1164                 SPY_bbInputSetup.mapCatalogNetwork(network, modelInfo, service);
1165
1166                 assertEquals(modelInfoNetwork, network.getModelInfoNetwork());
1167         }
1168
1169         @Test
1170         public void testPopulateGenericVnf() throws JsonParseException, JsonMappingException, IOException {
1171                 org.onap.so.serviceinstancebeans.Platform platform = new org.onap.so.serviceinstancebeans.Platform();
1172                 org.onap.so.serviceinstancebeans.LineOfBusiness lineOfBusiness = new org.onap.so.serviceinstancebeans.LineOfBusiness();
1173                 String instanceName = "vnfName";
1174                 ModelInfo modelInfo = new ModelInfo();
1175                 modelInfo.setModelType(ModelType.vnf);
1176
1177                 ServiceInstance serviceInstance = new ServiceInstance();
1178                 GenericVnf vnf = new GenericVnf();
1179                 vnf.setVnfId("genericVnfId");
1180                 vnf.setVnfName("vnfName");
1181                 serviceInstance.getVnfs().add(vnf);
1182                 String vnfType = "vnfType";
1183                 RequestDetails requestDetails = mapper.readValue(new File(RESOURCE_PATH + "RequestDetails_CreateVnf.json"),
1184                                 RequestDetails.class);
1185
1186                 Service service = mapper.readValue(
1187                                 new File(RESOURCE_PATH + "CatalogDBService_getServiceInstanceNOAAIInput.json"), Service.class);
1188                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
1189                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "genericVnfId");
1190                 String bbName = AssignFlows.VNF.toString();
1191
1192                 Platform expectedPlatform = new Platform();
1193                 LineOfBusiness expectedLineOfBusiness = new LineOfBusiness();
1194                 String resourceId = "123";
1195                 doReturn(expectedPlatform).when(bbInputSetupMapperLayer).mapRequestPlatform(platform);
1196                 doReturn(expectedLineOfBusiness).when(bbInputSetupMapperLayer).mapRequestLineOfBusiness(lineOfBusiness);
1197                 org.onap.aai.domain.yang.GenericVnf vnfAAI = new org.onap.aai.domain.yang.GenericVnf();
1198                 vnfAAI.setModelCustomizationId("modelCustId");
1199                 doReturn(vnfAAI).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
1200                 doNothing().when(SPY_bbInputSetup).mapCatalogVnf(vnf, modelInfo, service);
1201                 org.onap.aai.domain.yang.InstanceGroup instanceGroupAAI = new org.onap.aai.domain.yang.InstanceGroup();
1202                 doReturn(instanceGroupAAI).when(SPY_bbInputSetupUtils).getAAIInstanceGroup(any());
1203                 org.onap.so.db.catalog.beans.InstanceGroup catalogInstanceGroup = new org.onap.so.db.catalog.beans.InstanceGroup();
1204                 doReturn(catalogInstanceGroup).when(SPY_bbInputSetupUtils).getCatalogInstanceGroup(any());
1205
1206                 SPY_bbInputSetup.populateGenericVnf(modelInfo, instanceName, platform, lineOfBusiness, service, bbName,
1207                                 serviceInstance, lookupKeyMap, requestDetails.getRelatedInstanceList(), resourceId, vnfType, null);
1208
1209                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, null);
1210
1211                 SPY_bbInputSetup.populateGenericVnf(modelInfo, instanceName, platform, lineOfBusiness, service, bbName,
1212                                 serviceInstance, lookupKeyMap, requestDetails.getRelatedInstanceList(), resourceId, vnfType, null);
1213                 verify(SPY_bbInputSetup, times(1)).mapCatalogVnf(vnf, modelInfo, service);
1214
1215                 instanceName = "vnfName2";
1216                 GenericVnf vnf2 = SPY_bbInputSetup.createGenericVnf(lookupKeyMap, instanceName, platform, lineOfBusiness,
1217                                 resourceId, vnfType, null);
1218                 doReturn(vnf2).when(SPY_bbInputSetup).createGenericVnf(lookupKeyMap, instanceName, platform, lineOfBusiness,
1219                                 resourceId, vnfType, null);
1220                 doNothing().when(SPY_bbInputSetup).mapNetworkCollectionInstanceGroup(vnf2, "{instanceGroupId}");
1221                 doNothing().when(SPY_bbInputSetup).mapVnfcCollectionInstanceGroup(vnf2, modelInfo, service);
1222
1223                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "genericVnfId2");
1224                 
1225                 SPY_bbInputSetup.populateGenericVnf(modelInfo, instanceName, platform, lineOfBusiness, service, bbName,
1226                                 serviceInstance, lookupKeyMap, requestDetails.getRelatedInstanceList(), resourceId, vnfType, null);
1227                 verify(SPY_bbInputSetup, times(2)).mapCatalogVnf(vnf2, modelInfo, service);
1228                 verify(SPY_bbInputSetup, times(2)).mapNetworkCollectionInstanceGroup(vnf2, "{instanceGroupId}");
1229                 verify(SPY_bbInputSetup, times(2)).mapVnfcCollectionInstanceGroup(vnf2, modelInfo, service);
1230         }
1231         
1232         @Test
1233         public void testMapVnfcCollectionInstanceGroup() {
1234                 VnfResourceCustomization vnfResourceCust = Mockito.mock(VnfResourceCustomization.class);
1235                 GenericVnf genericVnf = new GenericVnf();
1236                 ModelInfo modelInfo = Mockito.mock(ModelInfo.class);
1237                 Service service = Mockito.mock(Service.class);
1238                 List<VnfcInstanceGroupCustomization> vnfcInstanceGroups = new ArrayList<>();
1239                 VnfcInstanceGroupCustomization vnfcInstanceGroupCust = new VnfcInstanceGroupCustomization();
1240                 vnfcInstanceGroupCust.setModelUUID("modelUUID");
1241                 vnfcInstanceGroupCust.setFunction("function");
1242                 vnfcInstanceGroupCust.setDescription("description");
1243                 vnfcInstanceGroups.add(vnfcInstanceGroupCust);
1244                 org.onap.so.db.catalog.beans.InstanceGroup instanceGroup = new org.onap.so.db.catalog.beans.InstanceGroup();
1245                 instanceGroup.setModelUUID("modelUUID");
1246                 ModelInfoInstanceGroup modelInfoInstanceGroup = new ModelInfoInstanceGroup();
1247                 modelInfoInstanceGroup.setModelUUID("modelUUID");
1248                 doReturn(vnfResourceCust).when(SPY_bbInputSetup).getVnfResourceCustomizationFromService(modelInfo, service);
1249                 doReturn(vnfcInstanceGroups).when(vnfResourceCust).getVnfcInstanceGroupCustomizations();
1250                 doReturn(instanceGroup).when(SPY_bbInputSetupUtils).getCatalogInstanceGroup("modelUUID");
1251                 doReturn(modelInfoInstanceGroup).when(bbInputSetupMapperLayer).mapCatalogInstanceGroupToInstanceGroup(null, instanceGroup);
1252                 
1253                 SPY_bbInputSetup.mapVnfcCollectionInstanceGroup(genericVnf, modelInfo, service);
1254                 
1255                 assertEquals("Instance Group was created", true, genericVnf.getInstanceGroups().size() == 1);
1256         }
1257         @Test
1258         public void testPopulateGenericVnfWhereVnfTypeIsNull()
1259                         throws JsonParseException, JsonMappingException, IOException {
1260                 org.onap.so.serviceinstancebeans.Platform platform = new org.onap.so.serviceinstancebeans.Platform();
1261                 org.onap.so.serviceinstancebeans.LineOfBusiness lineOfBusiness = new org.onap.so.serviceinstancebeans.LineOfBusiness();
1262                 String instanceName = "vnfName";
1263                 ModelInfo modelInfo = new ModelInfo();
1264                 modelInfo.setModelType(ModelType.vnf);
1265
1266                 ServiceInstance serviceInstance = new ServiceInstance();
1267                 GenericVnf vnf = new GenericVnf();
1268                 vnf.setVnfId("genericVnfId");
1269                 vnf.setVnfName("vnfName");
1270                 serviceInstance.getVnfs().add(vnf);
1271                 String vnfType = null;
1272                 RequestDetails requestDetails = mapper.readValue(new File(RESOURCE_PATH + "RequestDetails_CreateVnf.json"),
1273                                 RequestDetails.class);
1274
1275                 Service service = mapper.readValue(
1276                                 new File(RESOURCE_PATH + "CatalogDBService_getServiceInstanceNOAAIInput.json"), Service.class);
1277                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
1278                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "genericVnfId");
1279                 String bbName = AssignFlows.VNF.toString();
1280
1281                 Platform expectedPlatform = new Platform();
1282                 LineOfBusiness expectedLineOfBusiness = new LineOfBusiness();
1283                 String resourceId = "123";
1284                 doReturn(expectedPlatform).when(bbInputSetupMapperLayer).mapRequestPlatform(platform);
1285                 doReturn(expectedLineOfBusiness).when(bbInputSetupMapperLayer).mapRequestLineOfBusiness(lineOfBusiness);
1286                 org.onap.aai.domain.yang.GenericVnf vnfAAI = new org.onap.aai.domain.yang.GenericVnf();
1287                 vnfAAI.setModelCustomizationId("modelCustId");
1288                 doReturn(vnfAAI).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
1289                 doNothing().when(SPY_bbInputSetup).mapCatalogVnf(vnf, modelInfo, service);
1290                 org.onap.aai.domain.yang.InstanceGroup instanceGroupAAI = new org.onap.aai.domain.yang.InstanceGroup();
1291                 doReturn(instanceGroupAAI).when(SPY_bbInputSetupUtils).getAAIInstanceGroup(any());
1292                 org.onap.so.db.catalog.beans.InstanceGroup catalogInstanceGroup = new org.onap.so.db.catalog.beans.InstanceGroup();
1293                 doReturn(catalogInstanceGroup).when(SPY_bbInputSetupUtils).getCatalogInstanceGroup(any());
1294
1295                 SPY_bbInputSetup.populateGenericVnf(modelInfo, instanceName, platform, lineOfBusiness, service, bbName,
1296                                 serviceInstance, lookupKeyMap, requestDetails.getRelatedInstanceList(), resourceId, vnfType, null);
1297
1298                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, null);
1299
1300                 SPY_bbInputSetup.populateGenericVnf(modelInfo, instanceName, platform, lineOfBusiness, service, bbName,
1301                                 serviceInstance, lookupKeyMap, requestDetails.getRelatedInstanceList(), resourceId, vnfType, null);
1302                 verify(SPY_bbInputSetup, times(1)).mapCatalogVnf(vnf, modelInfo, service);
1303
1304                 instanceName = "vnfName2";
1305                 GenericVnf vnf2 = SPY_bbInputSetup.createGenericVnf(lookupKeyMap, instanceName, platform, lineOfBusiness,
1306                                 resourceId, vnfType, null);
1307         
1308                 org.onap.aai.domain.yang.GenericVnf vnf2AAI = new org.onap.aai.domain.yang.GenericVnf();
1309                 vnfAAI.setModelCustomizationId("modelCustId2");
1310                 doReturn(vnf2AAI).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf2.getVnfId());
1311                 doNothing().when(SPY_bbInputSetup).mapCatalogVnf(vnf2, modelInfo, service);
1312                 doNothing().when(SPY_bbInputSetup).mapNetworkCollectionInstanceGroup(vnf2, "{instanceGroupId}");
1313                 doNothing().when(SPY_bbInputSetup).mapVnfcCollectionInstanceGroup(vnf2, modelInfo, service);
1314                 SPY_bbInputSetup.populateGenericVnf(modelInfo, instanceName, platform, lineOfBusiness, service, bbName,
1315                                 serviceInstance, lookupKeyMap, requestDetails.getRelatedInstanceList(), resourceId, vnfType, null);
1316                 verify(SPY_bbInputSetup, times(2)).mapCatalogVnf(vnf2, modelInfo, service);
1317                 verify(SPY_bbInputSetup, times(2)).mapNetworkCollectionInstanceGroup(vnf2, "{instanceGroupId}");
1318                 verify(SPY_bbInputSetup, times(2)).mapVnfcCollectionInstanceGroup(vnf2, modelInfo, service);
1319         }
1320
1321         @Test
1322         public void testMapCatalogVnf() {
1323                 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
1324                 GenericVnf genericVnf = new GenericVnf();
1325                 RequestDetails requestDetails = new RequestDetails();
1326                 ModelInfo modelInfo = new ModelInfo();
1327                 modelInfo.setModelCustomizationUuid("modelCustomizationUUID");
1328                 requestDetails.setModelInfo(modelInfo);
1329                 Service service = new Service();
1330                 VnfResourceCustomization resourceCust = new VnfResourceCustomization();
1331                 resourceCust.setModelCustomizationUUID("vnfModelCustomizationUUID");
1332                 service.getVnfCustomizations().add(resourceCust);
1333                 resourceCust.setModelCustomizationUUID("modelCustomizationUUID");
1334
1335                 doReturn(modelInfoGenericVnf).when(bbInputSetupMapperLayer).mapCatalogVnfToVnf(resourceCust);
1336
1337                 SPY_bbInputSetup.mapCatalogVnf(genericVnf, modelInfo, service);
1338
1339                 assertEquals(modelInfoGenericVnf, genericVnf.getModelInfoGenericVnf());
1340         }
1341
1342         @Test
1343         public void testMapCatalogCollectionAndInstanceGroup() {
1344                 ModelInfoCollection modelInfoCollection = new ModelInfoCollection();
1345                 modelInfoCollection.setCollectionFunction("collectionFunction");
1346                 modelInfoCollection.setCollectionRole("collectionRole");
1347                 modelInfoCollection.setCollectionType("collectionType");
1348                 modelInfoCollection.setDescription("description");
1349                 modelInfoCollection.setModelInvariantUUID("modelInvariantUUID");
1350                 modelInfoCollection.setQuantity(0);
1351
1352                 ModelInfoInstanceGroup modelInfoInstanceGroup = new ModelInfoInstanceGroup();
1353                 modelInfoInstanceGroup.setFunction("function");
1354                 modelInfoInstanceGroup.setInstanceGroupRole("instanceGroupRole");
1355                 modelInfoInstanceGroup.setModelInvariantUUID("modelInvariantUUID");
1356                 modelInfoInstanceGroup.setModelUUID("modelUUID");
1357                 modelInfoInstanceGroup.setType("VNFC");
1358                 modelInfoInstanceGroup.setDescription("description");
1359
1360                 InstanceGroup instanceGroup = new InstanceGroup();
1361                 Collection collection = new Collection();
1362                 collection.setInstanceGroup(instanceGroup);
1363
1364                 CollectionResource collectionResource = new CollectionResource();
1365                 org.onap.so.db.catalog.beans.InstanceGroup catalogInstanceGroup = new org.onap.so.db.catalog.beans.InstanceGroup();
1366                 collectionResource.setToscaNodeType("NetworkCollection");
1367                 collectionResource.setInstanceGroup(catalogInstanceGroup);
1368
1369                 CollectionResourceCustomization collectionCust = new NetworkCollectionResourceCustomization();
1370                 collectionCust.setModelCustomizationUUID("modelCustomizationUUID");
1371                 collectionCust.setCollectionResource(collectionResource);
1372
1373                 Service service = new Service();
1374                 service.getCollectionResourceCustomizations().add(collectionCust);
1375                 ServiceInstance serviceInstance = new ServiceInstance();
1376                 serviceInstance.setCollection(collection);
1377
1378                 List<CollectionResourceInstanceGroupCustomization> instanceGroupCustList = new ArrayList<>();
1379                 CollectionResourceInstanceGroupCustomization instanceGroupCust = new CollectionResourceInstanceGroupCustomization();
1380                 instanceGroupCust.setFunction("function");
1381                 instanceGroupCust.setDescription("description");
1382
1383                 doReturn(modelInfoCollection).when(bbInputSetupMapperLayer).mapCatalogCollectionToCollection(collectionCust,
1384                                 collectionResource);
1385
1386                 doReturn(modelInfoInstanceGroup).when(bbInputSetupMapperLayer).mapCatalogInstanceGroupToInstanceGroup(collectionCust, 
1387                                 catalogInstanceGroup);
1388
1389                 SPY_bbInputSetup.mapCatalogCollection(service, serviceInstance.getCollection(), "modelCustomizationUUID");
1390                 SPY_bbInputSetup.mapCatalogNetworkCollectionInstanceGroup(service, 
1391                                 serviceInstance.getCollection().getInstanceGroup(), collectionCust.getModelCustomizationUUID());
1392
1393                 assertThat(collection.getModelInfoCollection(), sameBeanAs(modelInfoCollection));
1394                 assertThat(instanceGroup.getModelInfoInstanceGroup(), sameBeanAs(modelInfoInstanceGroup));
1395         }
1396
1397         @Test
1398         public void testAddRelationshipsToSI() throws Exception {
1399                 ServiceInstance serviceInstance = new ServiceInstance();
1400                 org.onap.aai.domain.yang.ServiceInstance serviceInstanceAAI = new org.onap.aai.domain.yang.ServiceInstance();
1401                 serviceInstanceAAI.setServiceInstanceId("serviceInstanceId");
1402
1403                 org.onap.aai.domain.yang.RelationshipList relationshipList = new org.onap.aai.domain.yang.RelationshipList();
1404                 org.onap.aai.domain.yang.Relationship relationship = new org.onap.aai.domain.yang.Relationship();
1405                 relationshipList.getRelationship().add(relationship);
1406                 serviceInstanceAAI.setRelationshipList(relationshipList);
1407
1408                 Map<String, String> uriKeys = new HashMap<>();
1409                 uriKeys.put("global-customer-id", "globalCustomerId");
1410                 uriKeys.put("service-type", "serviceType");
1411
1412         
1413                 doNothing().when(SPY_bbInputSetup).mapProject(any(), eq(serviceInstance));
1414                 doNothing().when(SPY_bbInputSetup).mapOwningEntity(any(), eq(serviceInstance));
1415                 doNothing().when(SPY_bbInputSetup).mapL3Networks(any(), eq(serviceInstance.getNetworks()));
1416                 doNothing().when(SPY_bbInputSetup).mapGenericVnfs(any(), eq(serviceInstance.getVnfs()));
1417                 doNothing().when(SPY_bbInputSetup).mapCollection(any(), eq(serviceInstance));
1418
1419                 SPY_bbInputSetup.addRelationshipsToSI(serviceInstanceAAI, serviceInstance);
1420
1421                 verify(SPY_bbInputSetup, times(1)).mapProject(any(), eq(serviceInstance));
1422                 verify(SPY_bbInputSetup, times(1)).mapOwningEntity(any(), eq(serviceInstance));
1423                 verify(SPY_bbInputSetup, times(1)).mapL3Networks(any(), eq(serviceInstance.getNetworks()));
1424                 verify(SPY_bbInputSetup, times(1)).mapGenericVnfs(any(), eq(serviceInstance.getVnfs()));
1425                 verify(SPY_bbInputSetup, times(1)).mapCollection(any(), eq(serviceInstance));
1426                 verify(SPY_bbInputSetup, times(1)).mapConfigurations(any(), eq(serviceInstance.getConfigurations()));
1427         }
1428         
1429         @Test
1430         public void testMapConfigurations() throws JsonProcessingException {
1431                 org.onap.aai.domain.yang.Configuration expectedAAI = new org.onap.aai.domain.yang.Configuration();
1432                 org.onap.aai.domain.yang.RelationshipList relationshipList = new org.onap.aai.domain.yang.RelationshipList();
1433                 org.onap.aai.domain.yang.Relationship relationship = new org.onap.aai.domain.yang.Relationship();
1434                 relationshipList.getRelationship().add(relationship);
1435                 expectedAAI.setRelationshipList(relationshipList);
1436
1437                 Configuration expected = new Configuration();
1438                 AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, "configurationId");
1439                 AAIResultWrapper configurationWrapper = new AAIResultWrapper(
1440                                 new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
1441
1442                 doReturn(configurationWrapper).when(SPY_bbInputSetupUtils).getAAIResourceDepthOne(aaiResourceUri);
1443                 doReturn(expected).when(bbInputSetupMapperLayer)
1444                                 .mapAAIConfiguration(isA(org.onap.aai.domain.yang.Configuration.class));
1445
1446                 List<Configuration> configurations = new ArrayList<>();
1447
1448                 SPY_bbInputSetup.mapConfigurations(Arrays.asList(new AAIResourceUri[] { aaiResourceUri }), configurations);
1449
1450                 assertEquals(expected, configurations.get(0));
1451         }
1452
1453         @Test
1454         public void testMapGenericVnfs() throws JsonProcessingException {
1455                 org.onap.aai.domain.yang.GenericVnf expectedAAI = new org.onap.aai.domain.yang.GenericVnf();
1456                 org.onap.aai.domain.yang.RelationshipList relationshipList = new org.onap.aai.domain.yang.RelationshipList();
1457                 org.onap.aai.domain.yang.Relationship relationship = new org.onap.aai.domain.yang.Relationship();
1458                 relationshipList.getRelationship().add(relationship);
1459                 expectedAAI.setRelationshipList(relationshipList);
1460
1461                 GenericVnf expected = new GenericVnf();
1462                 AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, "vnfId");
1463                 AAIResultWrapper vnfWrapper = new AAIResultWrapper(
1464                                 new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
1465
1466                 doReturn(vnfWrapper).when(SPY_bbInputSetupUtils).getAAIResourceDepthOne(aaiResourceUri);
1467                 doReturn(expected).when(bbInputSetupMapperLayer)
1468                                 .mapAAIGenericVnfIntoGenericVnf(isA(org.onap.aai.domain.yang.GenericVnf.class));
1469                 doNothing().when(SPY_bbInputSetup).mapPlatform(any(), eq(expected));
1470                 doNothing().when(SPY_bbInputSetup).mapLineOfBusiness(any(), eq(expected));
1471                 doReturn(new ArrayList<>()).when(SPY_bbInputSetup).mapVolumeGroups(any());
1472
1473                 List<GenericVnf> genericVnfs = new ArrayList<>();
1474
1475                 SPY_bbInputSetup.mapGenericVnfs(Arrays.asList(new AAIResourceUri[] { aaiResourceUri }), genericVnfs);
1476
1477                 assertEquals(expected, genericVnfs.get(0));
1478                 verify(SPY_bbInputSetup, times(1)).mapPlatform(any(), eq(expected));
1479                 verify(SPY_bbInputSetup, times(1)).mapLineOfBusiness(any(), eq(expected));
1480                 verify(SPY_bbInputSetup, times(1)).mapVolumeGroups(any());
1481         }
1482
1483         @Test
1484         public void testMapVolumeGroups() throws JsonProcessingException {
1485                 org.onap.aai.domain.yang.VolumeGroup expectedAAI = new org.onap.aai.domain.yang.VolumeGroup();
1486
1487                 VolumeGroup expected = new VolumeGroup();
1488                 AAIResultWrapper vnfWrapper = new AAIResultWrapper(
1489                                 new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
1490
1491                 doReturn(expected).when(bbInputSetupMapperLayer)
1492                                 .mapAAIVolumeGroup(isA(org.onap.aai.domain.yang.VolumeGroup.class));
1493
1494                  List<VolumeGroup> volumeGroupsList = 
1495                                  SPY_bbInputSetup.mapVolumeGroups(Arrays.asList(new AAIResultWrapper[] { vnfWrapper }));
1496
1497                 assertEquals(expected, volumeGroupsList.get(0));
1498         }
1499
1500         @Test
1501         public void testMapLineOfBusiness() throws JsonProcessingException {
1502                 org.onap.aai.domain.yang.LineOfBusiness expectedAAI = new org.onap.aai.domain.yang.LineOfBusiness();
1503
1504                 LineOfBusiness expected = new LineOfBusiness();
1505                 AAIResultWrapper vnfWrapper = new AAIResultWrapper(
1506                                 new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
1507
1508                 doReturn(expected).when(bbInputSetupMapperLayer)
1509                                 .mapAAILineOfBusiness(isA(org.onap.aai.domain.yang.LineOfBusiness.class));
1510
1511                 GenericVnf vnf = new GenericVnf();
1512
1513                 SPY_bbInputSetup.mapLineOfBusiness(Arrays.asList(new AAIResultWrapper[] { vnfWrapper }), vnf);
1514
1515                 assertEquals(expected, vnf.getLineOfBusiness());
1516         }
1517
1518         @Test
1519         public void testMapPlatform() throws JsonProcessingException {
1520                 org.onap.aai.domain.yang.Platform expectedAAI = new org.onap.aai.domain.yang.Platform();
1521
1522                 Platform expected = new Platform();
1523                 AAIResultWrapper vnfWrapper = new AAIResultWrapper(
1524                                 new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
1525
1526                 doReturn(expected).when(bbInputSetupMapperLayer)
1527                                 .mapAAIPlatform(isA(org.onap.aai.domain.yang.Platform.class));
1528
1529                 GenericVnf vnf = new GenericVnf();
1530
1531                 SPY_bbInputSetup.mapPlatform(Arrays.asList(new AAIResultWrapper[] { vnfWrapper }), vnf);
1532
1533                 assertEquals(expected, vnf.getPlatform());
1534         }
1535
1536         @Test
1537         public void testMapCollection() throws JsonProcessingException {
1538                 List<AAIResultWrapper> collections = new ArrayList<>();
1539                 ServiceInstance serviceInstance = new ServiceInstance();
1540
1541                 org.onap.aai.domain.yang.Collection aaiCollection = new org.onap.aai.domain.yang.Collection();
1542                 org.onap.aai.domain.yang.RelationshipList collectionRelationshipList = new org.onap.aai.domain.yang.RelationshipList();
1543                 org.onap.aai.domain.yang.Relationship collectionInstanceGroupRelationship = new org.onap.aai.domain.yang.Relationship();
1544                 collectionRelationshipList.getRelationship().add(collectionInstanceGroupRelationship);
1545                 aaiCollection.setRelationshipList(collectionRelationshipList);
1546
1547                 collections.add(new AAIResultWrapper(
1548                                 new AAICommonObjectMapperProvider().getMapper().writeValueAsString(aaiCollection)));
1549
1550                 Collection collection = new Collection();
1551                 ModelInfoCollection modelInfoCollection = new ModelInfoCollection();
1552                 List<InstanceGroup> instanceGroupsList = new ArrayList<>();
1553                 InstanceGroup instanceGroup = new InstanceGroup();
1554                 instanceGroupsList.add(instanceGroup);
1555                 NetworkCollectionResourceCustomization networkCollectionCust = Mockito.mock(NetworkCollectionResourceCustomization.class);
1556                 CollectionResource collectionResource = new CollectionResource();
1557                 doReturn(collection).when(bbInputSetupMapperLayer)
1558                                 .mapAAICollectionIntoCollection(isA(org.onap.aai.domain.yang.Collection.class));
1559                 doReturn(instanceGroupsList).when(SPY_bbInputSetup).mapInstanceGroups(any());
1560                 doReturn(networkCollectionCust).when(SPY_bbInputSetupUtils).getCatalogNetworkCollectionResourceCustByID(aaiCollection.getCollectionCustomizationId());
1561                 doReturn(collectionResource).when(networkCollectionCust).getCollectionResource();
1562                 doReturn(modelInfoCollection).when(bbInputSetupMapperLayer).mapCatalogCollectionToCollection(networkCollectionCust, collectionResource);
1563
1564                 SPY_bbInputSetup.mapCollection(collections, serviceInstance);
1565
1566                 assertEquals(collection, serviceInstance.getCollection());
1567                 assertEquals(instanceGroup, collection.getInstanceGroup());
1568                 
1569                 instanceGroupsList.clear();
1570                 collection = new Collection();
1571                 
1572                 SPY_bbInputSetup.mapCollection(collections, serviceInstance);
1573                 assertEquals(collection, serviceInstance.getCollection());
1574                 assertNull(collection.getInstanceGroup());
1575         }
1576
1577         @Test
1578         public void testMapL3Networks() throws JsonProcessingException {
1579                 org.onap.aai.domain.yang.L3Network expectedAAI = new org.onap.aai.domain.yang.L3Network();
1580                 org.onap.aai.domain.yang.RelationshipList relationshipList = new org.onap.aai.domain.yang.RelationshipList();
1581                 org.onap.aai.domain.yang.Relationship relationship = new org.onap.aai.domain.yang.Relationship();
1582                 relationshipList.getRelationship().add(relationship);
1583                 expectedAAI.setRelationshipList(relationshipList);
1584
1585                 L3Network expected = new L3Network();
1586                 List<L3Network> l3Networks = new ArrayList<>();
1587                 AAIResultWrapper l3NetworksWrapper = new AAIResultWrapper(
1588                                 new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
1589                 AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, "networkId");
1590
1591                 doReturn(l3NetworksWrapper).when(SPY_bbInputSetupUtils).getAAIResourceDepthTwo(aaiResourceUri);
1592                 doReturn(expected).when(bbInputSetupMapperLayer)
1593                                 .mapAAIL3Network(isA(org.onap.aai.domain.yang.L3Network.class));
1594                 doNothing().when(SPY_bbInputSetup).mapNetworkPolicies(any(), eq(expected.getNetworkPolicies()));
1595                 doNothing().when(SPY_bbInputSetup).mapRouteTableReferences(any(),
1596                                 eq(expected.getContrailNetworkRouteTableReferences()));
1597
1598                 SPY_bbInputSetup.mapL3Networks(Arrays.asList(new AAIResourceUri[] { aaiResourceUri }), l3Networks);
1599
1600                 assertEquals(expected, l3Networks.get(0));
1601                 verify(SPY_bbInputSetup, times(1)).mapNetworkPolicies(any(), eq(expected.getNetworkPolicies()));
1602                 verify(SPY_bbInputSetup, times(1)).mapRouteTableReferences(any(),
1603                                 eq(expected.getContrailNetworkRouteTableReferences()));
1604         }
1605
1606         @Test
1607         public void testMapRouteTableReferences() throws JsonProcessingException {
1608                 org.onap.aai.domain.yang.RouteTableReference expectedAAI = new org.onap.aai.domain.yang.RouteTableReference();
1609
1610                 RouteTableReference expected = new RouteTableReference();
1611                 List<RouteTableReference> contrailNetworkRouteTableReferences = new ArrayList<>();
1612                 AAIResultWrapper vnfWrapper = new AAIResultWrapper(
1613                                 new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
1614
1615                 doReturn(expected).when(bbInputSetupMapperLayer).mapAAIRouteTableReferenceIntoRouteTableReference(
1616                                 isA(org.onap.aai.domain.yang.RouteTableReference.class));
1617
1618                 SPY_bbInputSetup.mapRouteTableReferences(Arrays.asList(new AAIResultWrapper[] { vnfWrapper }),
1619                                 contrailNetworkRouteTableReferences);
1620
1621                 assertEquals(expected, contrailNetworkRouteTableReferences.get(0));
1622         }
1623
1624         @Test
1625         public void testMapOwningEntity() throws JsonProcessingException {
1626                 org.onap.aai.domain.yang.OwningEntity expectedAAI = new org.onap.aai.domain.yang.OwningEntity();
1627
1628                 OwningEntity expected = new OwningEntity();
1629                 AAIResultWrapper vnfWrapper = new AAIResultWrapper(
1630                                 new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
1631
1632                 doReturn(expected).when(bbInputSetupMapperLayer)
1633                                 .mapAAIOwningEntity(isA(org.onap.aai.domain.yang.OwningEntity.class));
1634
1635                 ServiceInstance serviceInstance = new ServiceInstance();
1636
1637                 SPY_bbInputSetup.mapOwningEntity(Arrays.asList(new AAIResultWrapper[] { vnfWrapper }), serviceInstance);
1638
1639                 assertEquals(expected, serviceInstance.getOwningEntity());
1640         }
1641
1642         @Test
1643         public void testMapProject() throws JsonProcessingException {
1644                 org.onap.aai.domain.yang.Project expectedAAI = new org.onap.aai.domain.yang.Project();
1645
1646                 Project expected = new Project();
1647                 AAIResultWrapper vnfWrapper = new AAIResultWrapper(
1648                                 new AAICommonObjectMapperProvider().getMapper().writeValueAsString(expectedAAI));
1649
1650                 doReturn(expected).when(bbInputSetupMapperLayer).mapAAIProject(isA(org.onap.aai.domain.yang.Project.class));
1651
1652                 ServiceInstance serviceInstance = new ServiceInstance();
1653
1654                 SPY_bbInputSetup.mapProject(Arrays.asList(new AAIResultWrapper[] { vnfWrapper }), serviceInstance);
1655
1656                 assertEquals(expected, serviceInstance.getProject());
1657         }
1658
1659         @Test
1660         public void testMapCustomer() throws Exception {
1661                 org.onap.aai.domain.yang.Customer customerAAI = new org.onap.aai.domain.yang.Customer();
1662                 org.onap.aai.domain.yang.ServiceSubscription serviceSubscriptionAAI = new org.onap.aai.domain.yang.ServiceSubscription();
1663
1664                 Customer expected = new Customer();
1665                 ServiceSubscription serviceSubscription = new ServiceSubscription();
1666
1667                 String globalCustomerId = "globalCustomerId";
1668                 String subscriptionServiceType = "subscriptionServiceType";
1669
1670                 doReturn(customerAAI).when(SPY_bbInputSetupUtils).getAAICustomer(globalCustomerId);
1671                 doReturn(serviceSubscriptionAAI).when(SPY_bbInputSetupUtils).getAAIServiceSubscription(globalCustomerId,
1672                                 subscriptionServiceType);
1673                 doReturn(expected).when(bbInputSetupMapperLayer)
1674                                 .mapAAICustomer(isA(org.onap.aai.domain.yang.Customer.class));
1675                 doReturn(serviceSubscription).when(bbInputSetupMapperLayer)
1676                                 .mapAAIServiceSubscription(isA(org.onap.aai.domain.yang.ServiceSubscription.class));
1677
1678                 Customer actual = SPY_bbInputSetup.mapCustomer(globalCustomerId, subscriptionServiceType);
1679
1680                 assertEquals(expected, actual);
1681                 assertEquals(serviceSubscription, expected.getServiceSubscription());
1682         }
1683
1684         @Test
1685         public void testPopulateLookupKeyMapWithIds() {
1686                 Map<ResourceKey, String> expected = new HashMap<>();
1687                 Map<ResourceKey, String> actual = new HashMap<>();
1688                 String serviceInstanceId = "serviceInstanceId";
1689                 String networkId = "networkId";
1690                 String vnfId = "vnfId";
1691                 String vfModuleId = "vfModuleId";
1692                 String volumeGroupId = "volumeGroupId";
1693                 String configurationId = "configurationId";
1694
1695                 expected.put(ResourceKey.SERVICE_INSTANCE_ID, serviceInstanceId);
1696                 expected.put(ResourceKey.NETWORK_ID, networkId);
1697                 expected.put(ResourceKey.GENERIC_VNF_ID, vnfId);
1698                 expected.put(ResourceKey.VF_MODULE_ID, vfModuleId);
1699                 expected.put(ResourceKey.VOLUME_GROUP_ID, volumeGroupId);
1700                 expected.put(ResourceKey.CONFIGURATION_ID, configurationId);
1701
1702                 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1703                 workflowResourceIds.setServiceInstanceId(serviceInstanceId);
1704                 workflowResourceIds.setNetworkId(networkId);
1705                 workflowResourceIds.setVnfId(vnfId);
1706                 workflowResourceIds.setVfModuleId(vfModuleId);
1707                 workflowResourceIds.setVolumeGroupId(volumeGroupId);
1708                 workflowResourceIds.setConfigurationId(configurationId);
1709
1710                 SPY_bbInputSetup.populateLookupKeyMapWithIds(workflowResourceIds, actual);
1711
1712                 assertThat(actual, sameBeanAs(expected));
1713         }
1714
1715         @Test
1716         public void testgetGBBMacro() throws Exception {
1717                 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
1718                                 GeneralBuildingBlock.class);
1719                 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
1720                                 ExecuteBuildingBlock.class);
1721                 RequestDetails requestDetails = mapper
1722                                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
1723                 InfraActiveRequests request = Mockito.mock(InfraActiveRequests.class);
1724                 org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
1725                 aaiVnf.setModelCustomizationId("modelCustId");
1726                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
1727                 lookupKeyMap.put(ResourceKey.NETWORK_ID, "networkId");
1728                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "vnfId");
1729                 lookupKeyMap.put(ResourceKey.VF_MODULE_ID, "vfModuleId");
1730                 lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, "volumeGroupId");
1731                 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "serviceInstanceId");
1732                 lookupKeyMap.put(ResourceKey.CONFIGURATION_ID, "configurationId");
1733                 String resourceId = "123";
1734                 String vnfType = "vnfType";
1735                 Service service = Mockito.mock(Service.class);
1736                 String requestAction = "createInstance";
1737
1738                 ConfigurationResourceKeys configResourceKeys = new ConfigurationResourceKeys();
1739                 configResourceKeys.setCvnfcCustomizationUUID("cvnfcCustomizationUUID");
1740                 configResourceKeys.setVfModuleCustomizationUUID("vfModuleCustomizationUUID");
1741                 configResourceKeys.setVnfResourceCustomizationUUID("vnfResourceCustomizationUUID");
1742                 executeBB.setConfigurationResourceKeys(configResourceKeys);
1743                 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
1744                                 requestAction, resourceId);
1745                 doReturn(request).when(SPY_bbInputSetupUtils).getInfraActiveRequest(executeBB.getRequestId());
1746                 doReturn(service).when(SPY_bbInputSetupUtils)
1747                                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
1748                 doNothing().when(SPY_bbInputSetupUtils).updateInfraActiveRequestVnfId(request,
1749                                 lookupKeyMap.get(ResourceKey.GENERIC_VNF_ID));
1750                 doReturn("vnfId").when(SPY_bbInputSetup).getVnfId(executeBB, lookupKeyMap);
1751                 doReturn(aaiVnf).when(SPY_bbInputSetupUtils).getAAIGenericVnf(any(String.class));
1752
1753                 executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.NETWORK_MACRO.toString());
1754                 executeBB.getBuildingBlock().setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
1755                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
1756                 verify(SPY_bbInputSetup, times(1)).populateL3Network(any(String.class), isA(ModelInfo.class),
1757                                 isA(Service.class), any(String.class), isA(ServiceInstance.class), any(), any(String.class), any());
1758
1759                 executeBB.getBuildingBlock().setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
1760                 executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.VNF.toString());
1761                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
1762                 verify(SPY_bbInputSetup, times(1)).populateGenericVnf(isA(ModelInfo.class), any(String.class),
1763                                 isA(org.onap.so.serviceinstancebeans.Platform.class),
1764                                 isA(org.onap.so.serviceinstancebeans.LineOfBusiness.class), isA(Service.class), any(String.class),
1765                                 isA(ServiceInstance.class), any(), any(), any(String.class), any(String.class), any());
1766
1767                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, null);
1768                 executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.VF_MODULE.toString());
1769                 executeBB.getBuildingBlock().setKey("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
1770                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
1771                 verify(SPY_bbInputSetup, times(1)).populateVfModule(isA(ModelInfo.class), isA(Service.class), any(String.class),
1772                                 isA(ServiceInstance.class), any(), any(String.class), any(), any(String.class), any(), isA(CloudConfiguration.class));
1773
1774                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, null);
1775                 executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.VOLUME_GROUP.toString());
1776                 executeBB.getBuildingBlock().setKey("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
1777                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
1778                 verify(SPY_bbInputSetup, times(1)).populateVolumeGroup(isA(ModelInfo.class), isA(Service.class),
1779                                 any(String.class), isA(ServiceInstance.class), any(), any(String.class),ArgumentMatchers.isNull(),ArgumentMatchers.isNull(),
1780                                 any(String.class), any());
1781                 
1782                 Configuration configuration = new Configuration();
1783                 configuration.setConfigurationId("configurationId");
1784                 gBB.getServiceInstance().getConfigurations().add(configuration);
1785                 List<ConfigurationResourceCustomization> configurationCustList = new ArrayList<>();
1786                 ConfigurationResourceCustomization configurationCust = new ConfigurationResourceCustomization();
1787                 configurationCust.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
1788                 doReturn(configurationCustList).when(service).getConfigurationCustomizations();
1789                 configurationCustList.add(configurationCust);
1790                 doNothing().when(SPY_bbInputSetup).populateConfiguration(isA(ModelInfo.class), isA(Service.class), 
1791                                 any(String.class), isA(ServiceInstance.class), any(), any(String.class), ArgumentMatchers.isNull(), isA(ConfigurationResourceKeys.class));
1792                 
1793                 executeBB.getBuildingBlock().setBpmnFlowName("AssignFabricConfigurationBB");
1794                 executeBB.getBuildingBlock().setKey("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
1795                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
1796                 verify(SPY_bbInputSetup, times(1)).populateConfiguration(isA(ModelInfo.class), isA(Service.class), 
1797                                 any(String.class), isA(ServiceInstance.class), any(), any(String.class),ArgumentMatchers.isNull(), isA(ConfigurationResourceKeys.class));
1798         }
1799         
1800         @Test
1801         public void testgetGBBMacroCloudConfiguration() throws Exception {
1802                 org.onap.so.serviceinstancebeans.Service serviceMacro = mapper.readValue(
1803                                 new File(RESOURCE_PATH + "ServiceMacroVfModules.json"), org.onap.so.serviceinstancebeans.Service.class);
1804                 CloudConfiguration cloudConfig = null;
1805                 org.onap.aai.domain.yang.CloudRegion aaiCloudRegion = new org.onap.aai.domain.yang.CloudRegion();
1806                 aaiCloudRegion.setCloudOwner("test-owner-name");
1807                 Resources resources = serviceMacro.getResources();
1808                 doReturn(aaiCloudRegion).when(SPY_bbInputSetupUtils).getCloudRegion(any(CloudConfiguration.class));
1809                 CloudRegion expected = new CloudRegion();
1810                 expected.setLcpCloudRegionId("mdt1");
1811                 expected.setCloudOwner("test-owner-name");
1812                 expected.setTenantId("88a6ca3ee0394ade9403f075db23167e");
1813                 
1814                 CloudRegion actual = SPY_bbInputSetup.getCloudRegionFromMacroRequest(cloudConfig, resources);
1815                 assertThat(actual, sameBeanAs(expected));
1816                 
1817                 serviceMacro = mapper.readValue(
1818                                 new File(RESOURCE_PATH + "ServiceMacroVnfs.json"), org.onap.so.serviceinstancebeans.Service.class);
1819                 resources = serviceMacro.getResources();
1820                 
1821                 actual = SPY_bbInputSetup.getCloudRegionFromMacroRequest(cloudConfig, resources);
1822                 assertThat(actual, sameBeanAs(expected));
1823                 
1824                 serviceMacro = mapper.readValue(
1825                                 new File(RESOURCE_PATH + "ServiceMacroNetworks.json"), org.onap.so.serviceinstancebeans.Service.class);
1826                 resources = serviceMacro.getResources();
1827                 
1828                 actual = SPY_bbInputSetup.getCloudRegionFromMacroRequest(cloudConfig, resources);
1829                 assertThat(actual, sameBeanAs(expected));
1830                 
1831                 serviceMacro = mapper.readValue(
1832                                 new File(RESOURCE_PATH + "ServiceMacroNoCloudConfig.json"), org.onap.so.serviceinstancebeans.Service.class);
1833                 resources = serviceMacro.getResources();
1834                 
1835                 actual = SPY_bbInputSetup.getCloudRegionFromMacroRequest(cloudConfig, resources);
1836                 assertNull(actual);
1837         }
1838
1839         @Test
1840         public void testgetGBBMacroWithEmptyUserParams() throws Exception {
1841                 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
1842                                 GeneralBuildingBlock.class);
1843                 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
1844                                 ExecuteBuildingBlock.class);
1845                 RequestDetails requestDetails = mapper
1846                                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
1847                 requestDetails.getRequestParameters().getUserParams().clear();
1848                 InfraActiveRequests request = Mockito.mock(InfraActiveRequests.class);
1849                 org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
1850                 aaiVnf.setModelCustomizationId("modelCustId");
1851                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
1852                 lookupKeyMap.put(ResourceKey.NETWORK_ID, "networkId");
1853                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "vnfId");
1854                 lookupKeyMap.put(ResourceKey.VF_MODULE_ID, "vfModuleId");
1855                 lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, "volumeGroupId");
1856                 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "serviceInstanceId");
1857                 String resourceId = "123";
1858                 String vnfType = "vnfType";
1859                 Service service = Mockito.mock(Service.class);
1860                 String requestAction = "createInstance";
1861                 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
1862                                 requestAction, resourceId);
1863                 doReturn(service).when(SPY_bbInputSetupUtils)
1864                                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
1865         
1866                 executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.NETWORK_MACRO.toString());
1867                 executeBB.getBuildingBlock().setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
1868                 executeBB.getBuildingBlock().setIsVirtualLink(Boolean.FALSE);
1869                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
1870                 verify(SPY_bbInputSetup, times(1)).getGBBMacroNoUserParamsCreate(any(ExecuteBuildingBlock.class), any(),
1871                                 any(String.class), any(String.class), any(GeneralBuildingBlock.class), any(Service.class));
1872         }
1873         
1874         @Test(expected = Exception.class)
1875         public void testgetGBBMacroException() throws Exception {
1876                 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
1877                                 GeneralBuildingBlock.class);
1878                 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
1879                                 ExecuteBuildingBlock.class);
1880                 RequestDetails requestDetails = mapper
1881                                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
1882                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
1883                 String resourceId = "123";
1884                 String vnfType = "vnfType";
1885                 Service service = Mockito.mock(Service.class);
1886                 String requestAction = "createInstance";
1887                 doReturn(null).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
1888                                 requestAction, resourceId);
1889         
1890                 executeBB.getBuildingBlock().setBpmnFlowName("Network");
1891                 executeBB.getBuildingBlock().setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
1892                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
1893         }
1894         
1895         @Test
1896         public void testgetGBBMacroWithVnfTypeNull() throws Exception {
1897                 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
1898                                 GeneralBuildingBlock.class);
1899                 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
1900                                 ExecuteBuildingBlock.class);
1901                 RequestDetails requestDetails = mapper
1902                                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
1903                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
1904                 lookupKeyMap.put(ResourceKey.NETWORK_ID, "networkId");
1905                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "vnfId");
1906                 lookupKeyMap.put(ResourceKey.VF_MODULE_ID, "vfModuleId");
1907                 lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, "volumeGroupId");
1908                 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "serviceInstanceId");
1909                 org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
1910                 aaiVnf.setModelCustomizationId("modelCustId");
1911                 InfraActiveRequests request = Mockito.mock(InfraActiveRequests.class);
1912                 String resourceId = "123";
1913                 String vnfType = null;
1914                 Service service = Mockito.mock(Service.class);
1915                 String requestAction = "createInstance";
1916                 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
1917                                 requestAction, resourceId);
1918                 doReturn(request).when(SPY_bbInputSetupUtils).getInfraActiveRequest(executeBB.getRequestId());
1919                 doReturn(service).when(SPY_bbInputSetupUtils)
1920                                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
1921                 doNothing().when(SPY_bbInputSetupUtils).updateInfraActiveRequestVnfId(request,
1922                                 lookupKeyMap.get(ResourceKey.GENERIC_VNF_ID));
1923                 doReturn("vnfId").when(SPY_bbInputSetup).getVnfId(executeBB, lookupKeyMap);
1924                 doReturn(aaiVnf).when(SPY_bbInputSetupUtils).getAAIGenericVnf(any(String.class));
1925
1926                 executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.NETWORK_MACRO.toString());
1927                 executeBB.getBuildingBlock().setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
1928                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
1929                 verify(SPY_bbInputSetup, times(1)).populateL3Network(any(String.class), isA(ModelInfo.class),
1930                                 isA(Service.class), any(String.class), isA(ServiceInstance.class), any(), any(String.class), any());
1931
1932                 executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.VNF.toString());
1933                 executeBB.getBuildingBlock().setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
1934                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
1935                 verify(SPY_bbInputSetup, times(1)).populateGenericVnf(isA(ModelInfo.class), any(String.class),
1936                                 isA(org.onap.so.serviceinstancebeans.Platform.class),
1937                                 isA(org.onap.so.serviceinstancebeans.LineOfBusiness.class), isA(Service.class), any(String.class),
1938                                 isA(ServiceInstance.class), any(),ArgumentMatchers.isNull(), any(String.class), ArgumentMatchers.isNull(), any());
1939
1940                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, null);
1941                 executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.VF_MODULE.toString());
1942                 executeBB.getBuildingBlock().setKey("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
1943                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
1944                 verify(SPY_bbInputSetup, times(1)).populateVfModule(isA(ModelInfo.class), isA(Service.class), any(String.class),
1945                                 isA(ServiceInstance.class), any(), any(String.class), any(), any(String.class), any(), isA(CloudConfiguration.class));
1946
1947                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, null);
1948                 executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.VOLUME_GROUP.toString());
1949                 executeBB.getBuildingBlock().setKey("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
1950                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
1951                 verify(SPY_bbInputSetup, times(1)).populateVolumeGroup(isA(ModelInfo.class), isA(Service.class),
1952                                 any(String.class), isA(ServiceInstance.class), any(), any(String.class), ArgumentMatchers.isNull(), ArgumentMatchers.isNull(),
1953                                 ArgumentMatchers.isNull(), any());
1954         }
1955
1956         @Test
1957         public void testgetGBBMacroGetServiceWithInvariantId() throws Exception {
1958                 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
1959                                 GeneralBuildingBlock.class);
1960                 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
1961                                 ExecuteBuildingBlock.class);
1962                 RequestDetails requestDetails = mapper
1963                                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
1964                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
1965                 lookupKeyMap.put(ResourceKey.NETWORK_ID, "networkId");
1966                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "vnfId");
1967                 lookupKeyMap.put(ResourceKey.VF_MODULE_ID, "vfModuleId");
1968                 lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, "volumeGroupId");
1969                 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "serviceInstanceId");
1970                 org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
1971                 aaiVnf.setModelCustomizationId("modelCustId");
1972                 InfraActiveRequests request = Mockito.mock(InfraActiveRequests.class);
1973                 String resourceId = "123";
1974                 String vnfType = "vnfType";
1975                 Service service = Mockito.mock(Service.class);
1976                 String requestAction = "createInstance";
1977                 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
1978                                 requestAction, resourceId);
1979                 doReturn(request).when(SPY_bbInputSetupUtils).getInfraActiveRequest(executeBB.getRequestId());
1980                 doReturn(service).when(SPY_bbInputSetupUtils)
1981                                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
1982                 doNothing().when(SPY_bbInputSetupUtils).updateInfraActiveRequestVnfId(request,
1983                                 lookupKeyMap.get(ResourceKey.GENERIC_VNF_ID));
1984                 doReturn("vnfId").when(SPY_bbInputSetup).getVnfId(executeBB, lookupKeyMap);
1985                 doReturn(aaiVnf).when(SPY_bbInputSetupUtils).getAAIGenericVnf(any(String.class));
1986
1987                 executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.NETWORK_MACRO.toString());
1988                 executeBB.getBuildingBlock().setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
1989                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
1990                 verify(SPY_bbInputSetup, times(1)).populateL3Network(any(String.class), isA(ModelInfo.class),
1991                                 isA(Service.class), any(String.class), isA(ServiceInstance.class), any(), any(String.class), any());
1992
1993                 executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.VNF.toString());
1994                 executeBB.getBuildingBlock().setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
1995                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
1996                 verify(SPY_bbInputSetup, times(1)).populateGenericVnf(isA(ModelInfo.class), any(String.class),
1997                                 isA(org.onap.so.serviceinstancebeans.Platform.class),
1998                                 isA(org.onap.so.serviceinstancebeans.LineOfBusiness.class), isA(Service.class), any(String.class),
1999                                 isA(ServiceInstance.class), any(), any(), any(String.class), any(String.class), any());
2000
2001                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, null);
2002                 executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.VF_MODULE.toString());
2003                 executeBB.getBuildingBlock().setKey("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
2004                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2005                 verify(SPY_bbInputSetup, times(1)).populateVfModule(isA(ModelInfo.class), isA(Service.class), any(String.class),
2006                                 isA(ServiceInstance.class), any(), any(String.class), any(), any(String.class), any(), isA(CloudConfiguration.class));
2007
2008                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, null);
2009                 executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.VOLUME_GROUP.toString());
2010                 executeBB.getBuildingBlock().setKey("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
2011                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2012                 verify(SPY_bbInputSetup, times(1)).populateVolumeGroup(isA(ModelInfo.class), isA(Service.class),
2013                                 any(String.class), isA(ServiceInstance.class), any(), any(String.class), ArgumentMatchers.isNull(), ArgumentMatchers.isNull(),
2014                                 any(String.class), any());
2015         }
2016
2017         @Test
2018         public void testgetGBBMacroNoUserParamsDeactivateInstnace() throws Exception {
2019                 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2020                                 GeneralBuildingBlock.class);
2021                 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2022                                 ExecuteBuildingBlock.class);
2023                 RequestDetails requestDetails = mapper
2024                                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2025                 requestDetails.getRequestParameters().setUserParams(null);
2026                 org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2027                 aaiVnf.setModelCustomizationId("modelCustId");
2028                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2029                 lookupKeyMap.put(ResourceKey.NETWORK_ID, "networkId");
2030                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "vnfId");
2031                 lookupKeyMap.put(ResourceKey.VF_MODULE_ID, "vfModuleId");
2032                 lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, "volumeGroupId");
2033                 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "serviceInstanceId");
2034                 String resourceId = "123";
2035                 String vnfType = "vnfType";
2036                 Service service = Mockito.mock(Service.class);
2037                 String requestAction = "deactivateInstance";
2038                 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2039                                 requestAction, resourceId);
2040                 doReturn(service).when(SPY_bbInputSetupUtils)
2041                                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2042                 String generatedId = "12131";
2043
2044                 executeBB.getBuildingBlock().setBpmnFlowName("DeactivateServiceInstanceBB");
2045                 executeBB.getBuildingBlock().setKey("3c40d244-808e-42ca-b09a-256d83d19d0a");
2046                 GeneralBuildingBlock actual = SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap,
2047                                 requestAction, resourceId, vnfType);
2048                 assertThat(actual, sameBeanAs(gBB));
2049         }
2050
2051         @Test
2052         public void testgetGBBMacroNoUserParamsCreateInstance() throws Exception {
2053                 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2054                                 GeneralBuildingBlock.class);
2055                 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2056                                 ExecuteBuildingBlock.class);
2057                 RequestDetails requestDetails = mapper
2058                                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2059                 InfraActiveRequests request = Mockito.mock(InfraActiveRequests.class);
2060                 requestDetails.getRequestParameters().setUserParams(null);
2061                 org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2062                 aaiVnf.setModelCustomizationId("modelCustId");
2063                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2064                 lookupKeyMap.put(ResourceKey.NETWORK_ID, "networkId");
2065                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "vnfId");
2066                 lookupKeyMap.put(ResourceKey.VF_MODULE_ID, "vfModuleId");
2067                 lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, "volumeGroupId");
2068                 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "serviceInstanceId");
2069                 lookupKeyMap.put(ResourceKey.CONFIGURATION_ID, "configurationId");
2070
2071                 ConfigurationResourceKeys configResourceKeys = new ConfigurationResourceKeys();
2072                 configResourceKeys.setCvnfcCustomizationUUID("cvnfcCustomizationUUID");
2073                 configResourceKeys.setVfModuleCustomizationUUID("vfModuleCustomizationUUID");
2074                 configResourceKeys.setVnfResourceCustomizationUUID("vnfResourceCustomizationUUID");
2075                 executeBB.setConfigurationResourceKeys(configResourceKeys);
2076                 
2077                 String resourceId = "123";
2078                 String vnfType = "vnfType";
2079                 Service service = Mockito.mock(Service.class);
2080                 String requestAction = "createInstance";
2081                 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2082                                 requestAction, resourceId);
2083         
2084                 doReturn(service).when(SPY_bbInputSetupUtils)
2085                                                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2086                 List<NetworkResourceCustomization> networkCustList = new ArrayList<>();
2087                 NetworkResourceCustomization networkCust = Mockito.mock(NetworkResourceCustomization.class);
2088                 doReturn("ab153b6e-c364-44c0-bef6-1f2982117f04").when(networkCust).getModelCustomizationUUID();
2089                 networkCustList.add(networkCust);
2090                 doReturn(networkCustList).when(service).getNetworkCustomizations();
2091                 doNothing().when(SPY_bbInputSetup).populateL3Network(any(), isA(ModelInfo.class), isA(Service.class),
2092                                 any(String.class), isA(ServiceInstance.class), any(), any(String.class), any());
2093
2094                 executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.NETWORK_MACRO.toString());
2095                 executeBB.getBuildingBlock().setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
2096                 executeBB.getBuildingBlock().setIsVirtualLink(false);
2097                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2098                 verify(SPY_bbInputSetup, times(1)).getGBBMacroNoUserParamsCreate(executeBB, lookupKeyMap,
2099                                 executeBB.getBuildingBlock().getBpmnFlowName(), "ab153b6e-c364-44c0-bef6-1f2982117f04", gBB, service);
2100                 
2101                 CollectionNetworkResourceCustomization collectionNetworkResourceCust = Mockito.mock(CollectionNetworkResourceCustomization.class);
2102                 doReturn(collectionNetworkResourceCust).when(SPY_bbInputSetupUtils).getCatalogCollectionNetworkResourceCustByID(any(String.class));
2103                 NetworkResourceCustomization networkResourceCustomization = Mockito.mock(NetworkResourceCustomization.class);
2104                 doReturn(networkResourceCustomization).when(bbInputSetupMapperLayer).mapCollectionNetworkResourceCustToNetworkResourceCust(collectionNetworkResourceCust);
2105                 ModelInfoNetwork modelInfoNetwork = Mockito.mock(ModelInfoNetwork.class);
2106                 doReturn(modelInfoNetwork ).when(bbInputSetupMapperLayer).mapCatalogNetworkToNetwork(networkResourceCustomization);
2107                 
2108                 executeBB.getBuildingBlock().setBpmnFlowName(AssignFlows.NETWORK_MACRO.toString());
2109                 executeBB.getBuildingBlock().setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
2110                 executeBB.getBuildingBlock().setIsVirtualLink(true);
2111                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2112                 verify(SPY_bbInputSetup, times(2)).getGBBMacroNoUserParamsCreate(executeBB, lookupKeyMap,
2113                                 executeBB.getBuildingBlock().getBpmnFlowName(), "ab153b6e-c364-44c0-bef6-1f2982117f04", gBB, service);
2114                 
2115                 executeBB.getBuildingBlock().setBpmnFlowName("CreateNetworkBB");
2116                 executeBB.getBuildingBlock().setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
2117                 executeBB.getBuildingBlock().setIsVirtualLink(true);
2118                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2119                 verify(SPY_bbInputSetup, times(1)).getGBBMacroNoUserParamsCreate(executeBB, lookupKeyMap,
2120                                 executeBB.getBuildingBlock().getBpmnFlowName(), "ab153b6e-c364-44c0-bef6-1f2982117f04", gBB, service);
2121         }
2122         
2123         @Test
2124         public void testgetGBBMacroNoUserParamsOther() throws Exception {
2125                 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2126                                 GeneralBuildingBlock.class);
2127                 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2128                                 ExecuteBuildingBlock.class);
2129                 RequestDetails requestDetails = mapper
2130                                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2131                 requestDetails.getRequestParameters().setUserParams(null);
2132                 org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2133                 aaiVnf.setModelCustomizationId("modelCustId");
2134                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2135                 lookupKeyMap.put(ResourceKey.NETWORK_ID, "networkId");
2136                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "vnfId");
2137                 lookupKeyMap.put(ResourceKey.VF_MODULE_ID, "vfModuleId");
2138                 lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, "volumeGroupId");
2139                 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "serviceInstanceId");
2140                 String resourceId = "123";
2141                 String vnfType = "vnfType";
2142                 Service service = Mockito.mock(Service.class);
2143                 String requestAction = "deleteInstance";
2144                 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2145                                 requestAction, resourceId);
2146                 doReturn(service).when(SPY_bbInputSetupUtils)
2147                                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2148                 //doReturn(aaiVnf).when(SPY_bbInputSetupUtils).getAAIGenericVnf(any(String.class));
2149
2150                 CloudConfiguration cloudConfig = new CloudConfiguration();
2151                 cloudConfig.setLcpCloudRegionId("lcpCloudRegionId");
2152                 requestDetails.setCloudConfiguration(cloudConfig);
2153                 org.onap.aai.domain.yang.CloudRegion aaiCloudRegion = Mockito.mock(org.onap.aai.domain.yang.CloudRegion.class);
2154                 doReturn(aaiCloudRegion).when(SPY_bbInputSetupUtils).getCloudRegion(requestDetails.getCloudConfiguration());
2155                 executeBB.getBuildingBlock().setBpmnFlowName("DeleteNetworkBB");
2156                 executeBB.getBuildingBlock().setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
2157                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2158                 verify(SPY_bbInputSetup, times(1)).getGBBMacroExistingService(isA(ExecuteBuildingBlock.class), any(),
2159                                 any(String.class), any(GeneralBuildingBlock.class), isA(Service.class), isA(String.class),
2160                                 isA(CloudConfiguration.class));
2161
2162                 requestAction = "activateInstance";
2163                 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2164                                 requestAction, resourceId);
2165                 executeBB.getBuildingBlock().setBpmnFlowName("ActivateNetworkBB");
2166                 executeBB.getBuildingBlock().setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
2167                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2168                 verify(SPY_bbInputSetup, times(2)).getGBBMacroExistingService(isA(ExecuteBuildingBlock.class), any(),
2169                                 any(String.class), any(GeneralBuildingBlock.class), isA(Service.class), isA(String.class),
2170                                 isA(CloudConfiguration.class));
2171
2172                 requestAction = "unassignInstance";
2173                 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2174                                 requestAction, resourceId);
2175                 executeBB.getBuildingBlock().setBpmnFlowName("UnassignNetworkBB");
2176                 executeBB.getBuildingBlock().setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
2177                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2178                 verify(SPY_bbInputSetup, times(3)).getGBBMacroExistingService(isA(ExecuteBuildingBlock.class), any(),
2179                                 any(String.class), any(GeneralBuildingBlock.class), isA(Service.class), isA(String.class),
2180                                 isA(CloudConfiguration.class));
2181                 
2182                 requestAction = "activateFabricConfiguration";
2183                 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2184                                 requestAction, resourceId);
2185                 executeBB.getBuildingBlock().setBpmnFlowName("ActivateFabricConfigurationBB");
2186                 executeBB.getBuildingBlock().setKey("ab153b6e-c364-44c0-bef6-134534656234");
2187                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2188                 verify(SPY_bbInputSetup, times(4)).getGBBMacroExistingService(isA(ExecuteBuildingBlock.class), any(),
2189                                 any(String.class), any(GeneralBuildingBlock.class), isA(Service.class), isA(String.class),
2190                                 isA(CloudConfiguration.class));
2191         }
2192
2193         @Test(expected = IllegalArgumentException.class)
2194         public void testgetGBBMacroNoUserParamsOtherException() throws Exception {
2195                 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2196                                 GeneralBuildingBlock.class);
2197                 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2198                                 ExecuteBuildingBlock.class);
2199                 RequestDetails requestDetails = mapper
2200                                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2201                 requestDetails.getRequestParameters().setUserParams(null);
2202                 org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2203                 aaiVnf.setModelCustomizationId("modelCustId");
2204                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2205                 lookupKeyMap.put(ResourceKey.NETWORK_ID, "networkId");
2206                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "vnfId");
2207                 lookupKeyMap.put(ResourceKey.VF_MODULE_ID, "vfModuleId");
2208                 lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, "volumeGroupId");
2209                 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "serviceInstanceId");
2210                 String resourceId = "123";
2211                 String vnfType = "vnfType";
2212                 Service service = Mockito.mock(Service.class);
2213                 String requestAction = "assignInstance";
2214                 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
2215                                 requestAction, resourceId);
2216                 doReturn(service).when(SPY_bbInputSetupUtils)
2217                                 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
2218                 String generatedId = "12131";
2219
2220                 executeBB.getBuildingBlock().setKey("3c40d244-808e-42ca-b09a-256d83d19d0a");
2221                 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
2222         }
2223         @Test
2224         public void testgetGBBMacroNoUserParamsExistingService() throws Exception {
2225                 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
2226                                 GeneralBuildingBlock.class);
2227                 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
2228                                 ExecuteBuildingBlock.class);
2229                 RequestDetails requestDetails = mapper
2230                                 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
2231                 requestDetails.getRequestParameters().setUserParams(null);
2232                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2233                 lookupKeyMap.put(ResourceKey.NETWORK_ID, "networkId");
2234                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "vnfId");
2235                 lookupKeyMap.put(ResourceKey.VF_MODULE_ID, "vfModuleId");
2236                 lookupKeyMap.put(ResourceKey.VOLUME_GROUP_ID, "volumeGroupId");
2237                 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "serviceInstanceId");
2238                 lookupKeyMap.put(ResourceKey.CONFIGURATION_ID, "configurationId");
2239                 Service service = Mockito.mock(Service.class);
2240                 CloudConfiguration cloudConfiguration = new CloudConfiguration();
2241                 cloudConfiguration.setLcpCloudRegionId("cloudRegionId");
2242                 String requestAction = "unassignInstance";
2243
2244                 ConfigurationResourceKeys configResourceKeys = new ConfigurationResourceKeys();
2245                 configResourceKeys.setCvnfcCustomizationUUID("cvnfcCustomizationUUID");
2246                 configResourceKeys.setVfModuleCustomizationUUID("vfModuleCustomizationUUID");
2247                 configResourceKeys.setVnfResourceCustomizationUUID("vnfResourceCustomizationUUID");
2248                 executeBB.setConfigurationResourceKeys(configResourceKeys);
2249                 
2250                 L3Network network = new L3Network();
2251                 network.setNetworkId("networkId");
2252                 gBB.getServiceInstance().getNetworks().add(network);
2253                 org.onap.aai.domain.yang.L3Network aaiNetwork = new org.onap.aai.domain.yang.L3Network();
2254                 aaiNetwork.setModelCustomizationId("modelCustId");
2255                 doReturn(aaiNetwork).when(SPY_bbInputSetupUtils).getAAIL3Network(network.getNetworkId());
2256                 doNothing().when(SPY_bbInputSetup).mapCatalogNetwork(any(L3Network.class), any(ModelInfo.class),
2257                                 any(Service.class));
2258
2259                 executeBB.getBuildingBlock().setBpmnFlowName("DeleteNetworkBB");
2260                 executeBB.getBuildingBlock().setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
2261                 SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2262                                 executeBB.getBuildingBlock().getBpmnFlowName(), gBB, service, requestAction, cloudConfiguration);
2263                 verify(SPY_bbInputSetup, times(1)).mapCatalogNetwork(any(L3Network.class), any(ModelInfo.class),
2264                                 any(Service.class));
2265
2266                 GenericVnf vnf = new GenericVnf();
2267                 vnf.setVnfId("vnfId");
2268                 gBB.getServiceInstance().getVnfs().add(vnf);
2269                 org.onap.aai.domain.yang.GenericVnf aaiVnf = new org.onap.aai.domain.yang.GenericVnf();
2270                 aaiVnf.setModelCustomizationId("modelCustId");
2271                 doReturn(aaiVnf).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
2272                 doNothing().when(SPY_bbInputSetup).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2273                                 any(Service.class));
2274
2275                 executeBB.getBuildingBlock().setBpmnFlowName("ActivateVnfBB");
2276                 executeBB.getBuildingBlock().setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
2277                 SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2278                                 executeBB.getBuildingBlock().getBpmnFlowName(), gBB, service, requestAction, cloudConfiguration);
2279                 verify(SPY_bbInputSetup, times(1)).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2280                                 any(Service.class));
2281
2282                 VfModule vfModule = new VfModule();
2283                 vfModule.setVfModuleId("vfModuleId");
2284                 gBB.getServiceInstance().getVnfs().get(0).getVfModules().add(vfModule);
2285                 org.onap.aai.domain.yang.VfModule aaiVfModule = new org.onap.aai.domain.yang.VfModule();
2286                 aaiVfModule.setModelCustomizationId("modelCustId");
2287                 doReturn(aaiVfModule).when(SPY_bbInputSetupUtils).getAAIVfModule(vnf.getVnfId(), vfModule.getVfModuleId());
2288
2289                 executeBB.getBuildingBlock().setBpmnFlowName("UnassignVfModuleBB");
2290                 executeBB.getBuildingBlock().setKey("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
2291                 SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2292                                 executeBB.getBuildingBlock().getBpmnFlowName(), gBB, service, requestAction, cloudConfiguration);
2293                 verify(SPY_bbInputSetup, times(2)).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2294                                 any(Service.class));
2295                 verify(SPY_bbInputSetup, times(1)).mapCatalogVfModule(any(VfModule.class), any(ModelInfo.class),
2296                                 any(Service.class), any(String.class));
2297
2298                 org.onap.aai.domain.yang.CloudRegion aaiCloudRegion = Mockito.mock(org.onap.aai.domain.yang.CloudRegion.class);
2299                 VolumeGroup volumeGroup = new VolumeGroup();
2300                 volumeGroup.setVolumeGroupId("volumeGroupId");
2301                 gBB.getServiceInstance().getVnfs().get(0).getVolumeGroups().add(volumeGroup);
2302                 org.onap.aai.domain.yang.VolumeGroup aaiVolumeGroup = new org.onap.aai.domain.yang.VolumeGroup();
2303                 aaiVolumeGroup.setModelCustomizationId("modelCustId");
2304                 doReturn(aaiVolumeGroup).when(SPY_bbInputSetupUtils).getAAIVolumeGroup(Defaults.CLOUD_OWNER.toString(),
2305                                 cloudConfiguration.getLcpCloudRegionId(), volumeGroup.getVolumeGroupId());
2306
2307                 executeBB.getBuildingBlock().setBpmnFlowName("UnassignVolumeGroupBB");
2308                 executeBB.getBuildingBlock().setKey("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
2309                 SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2310                                 executeBB.getBuildingBlock().getBpmnFlowName(), gBB, service, requestAction, cloudConfiguration);
2311                 verify(SPY_bbInputSetup, times(3)).mapCatalogVnf(any(GenericVnf.class), any(ModelInfo.class),
2312                                 any(Service.class));
2313                 verify(SPY_bbInputSetup, times(1)).mapCatalogVolumeGroup(isA(VolumeGroup.class), isA(ModelInfo.class),
2314                                 isA(Service.class), isA(String.class));
2315                 
2316                 Configuration configuration = new Configuration();
2317                 configuration.setConfigurationId("configurationId");
2318                 gBB.getServiceInstance().getConfigurations().add(configuration);
2319                 org.onap.aai.domain.yang.Configuration aaiConfiguration = new org.onap.aai.domain.yang.Configuration();
2320                 aaiConfiguration.setModelCustomizationId("modelCustId");
2321                 doReturn(aaiConfiguration).when(SPY_bbInputSetupUtils).getAAIConfiguration(configuration.getConfigurationId());
2322                 doNothing().when(SPY_bbInputSetup).mapCatalogConfiguration(isA(Configuration.class), isA(ModelInfo.class), isA(Service.class), isA(ConfigurationResourceKeys.class));
2323                 
2324                 executeBB.getBuildingBlock().setBpmnFlowName("ActivateFabricConfigurationBB");
2325                 executeBB.getBuildingBlock().setKey("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
2326                 SPY_bbInputSetup.getGBBMacroExistingService(executeBB, lookupKeyMap,
2327                                 executeBB.getBuildingBlock().getBpmnFlowName(), gBB, service, requestAction, cloudConfiguration);
2328                 verify(SPY_bbInputSetup, times(1)).mapCatalogConfiguration(any(Configuration.class), any(ModelInfo.class),
2329                                 any(Service.class), isA(ConfigurationResourceKeys.class));
2330         }
2331
2332         @Test
2333         public void testGetVnfId() {
2334                 String expected = "vnfId";
2335                 ExecuteBuildingBlock executeBB = new ExecuteBuildingBlock();
2336                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2337                 executeBB.setRequestId("requestId");
2338                 InfraActiveRequests request = new InfraActiveRequests();
2339                 request.setVnfId(expected);
2340                 doReturn(request).when(SPY_bbInputSetupUtils).getInfraActiveRequest(executeBB.getRequestId());
2341
2342                 String actual = SPY_bbInputSetup.getVnfId(executeBB, lookupKeyMap);
2343
2344                 assertEquals("VnfId is set correctly", expected, actual);
2345         }
2346         
2347         @Test
2348         public void testCreateVfModule() {
2349                 String vfModuleId = "vfModuleId";
2350                 String instanceName = "vfModuleName";
2351                 Map<String, String> cloudParams = new HashMap<>();
2352                 cloudParams.put("param1", "param1Value");
2353                 VfModule expected = new VfModule();
2354                 expected.setVfModuleId(vfModuleId);
2355                 expected.setVfModuleName(instanceName);
2356                 expected.setCloudParams(cloudParams);
2357                 expected.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
2358                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2359                 List<Map<String, String>> instanceParams = new ArrayList<>();
2360                 instanceParams.add(cloudParams);
2361                 
2362                 VfModule actual = SPY_bbInputSetup.createVfModule(lookupKeyMap, vfModuleId, instanceName, instanceParams);
2363                 
2364                 assertThat(actual, sameBeanAs(expected));
2365                 assertEquals("LookupKeyMap is populated", vfModuleId, lookupKeyMap.get(ResourceKey.VF_MODULE_ID));
2366                 
2367                 expected.getCloudParams().clear();
2368                 actual = SPY_bbInputSetup.createVfModule(lookupKeyMap, vfModuleId, instanceName, null);
2369                 assertThat(actual, sameBeanAs(expected));
2370         }
2371         
2372         @Test
2373         public void testCreateVolumeGroup() {
2374                 String volumeGroupId = "volumeGroupId";
2375                 String instanceName = "vfModuleName";
2376                 String vnfType = "vnfType";
2377                 Map<String, String> cloudParams = new HashMap<>();
2378                 cloudParams.put("param1", "param1Value");
2379                 VolumeGroup expected = new VolumeGroup();
2380                 expected.setVolumeGroupId(volumeGroupId);
2381                 expected.setVolumeGroupName(instanceName);
2382                 expected.setCloudParams(cloudParams);
2383                 expected.setVnfType(vnfType);
2384                 expected.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
2385                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2386                 List<Map<String, String>> instanceParams = new ArrayList<>();
2387                 instanceParams.add(cloudParams);
2388                 
2389                 VolumeGroup actual = SPY_bbInputSetup.createVolumeGroup(lookupKeyMap, volumeGroupId, instanceName, vnfType, instanceParams);
2390                 
2391                 assertThat(actual, sameBeanAs(expected));
2392                 assertEquals("LookupKeyMap is populated", volumeGroupId, lookupKeyMap.get(ResourceKey.VOLUME_GROUP_ID));
2393                 
2394                 expected.getCloudParams().clear();
2395                 actual = SPY_bbInputSetup.createVolumeGroup(lookupKeyMap, volumeGroupId, instanceName, vnfType, null);
2396                 assertThat(actual, sameBeanAs(expected));
2397         }
2398         
2399         @Test
2400         public void testCreateNetwork() {
2401                 String networkId = "networkId";
2402                 String instanceName = "networkName";
2403                 Map<String, String> cloudParams = new HashMap<>();
2404                 cloudParams.put("param1", "param1Value");
2405                 L3Network expected = new L3Network();
2406                 expected.setNetworkId(networkId);
2407                 expected.setNetworkName(instanceName);
2408                 expected.setCloudParams(cloudParams);
2409                 expected.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
2410                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2411                 List<Map<String, String>> instanceParams = new ArrayList<>();
2412                 instanceParams.add(cloudParams);
2413                 L3Network actual = SPY_bbInputSetup.createNetwork(lookupKeyMap, instanceName, networkId, instanceParams);
2414                 
2415                 assertThat(actual, sameBeanAs(expected));
2416                 assertEquals("LookupKeyMap is populated", networkId, lookupKeyMap.get(ResourceKey.NETWORK_ID));
2417                 
2418                 expected.getCloudParams().clear();
2419                 actual = SPY_bbInputSetup.createNetwork(lookupKeyMap, instanceName, networkId, null);
2420                 assertThat(actual, sameBeanAs(expected));
2421         }
2422         
2423         @Test
2424         public void testCreateGenericVnf() {
2425                 String vnfId = "vnfId";
2426                 String instanceName = "vnfName";
2427                 String vnfType = "vnfType";
2428                 String platformName = "platformName";
2429                 String lineOfBusinessName = "lineOfBusinessName";
2430                 Platform platform = new Platform();
2431                 platform.setPlatformName(platformName);
2432                 LineOfBusiness lineOfBusiness = new LineOfBusiness();
2433                 lineOfBusiness.setLineOfBusinessName(lineOfBusinessName);
2434                 Map<String, String> cloudParams = new HashMap<>();
2435                 cloudParams.put("param1", "param1Value");
2436                 GenericVnf expected = new GenericVnf();
2437                 expected.setVnfId(vnfId);
2438                 expected.setVnfName(instanceName);
2439                 expected.setVnfType(vnfType);
2440                 expected.setCloudParams(cloudParams);
2441                 expected.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
2442                 expected.setPlatform(platform);
2443                 expected.setLineOfBusiness(lineOfBusiness);
2444                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2445                 List<Map<String, String>> instanceParams = new ArrayList<>();
2446                 instanceParams.add(cloudParams);
2447                 org.onap.so.serviceinstancebeans.Platform requestPlatform = new org.onap.so.serviceinstancebeans.Platform();
2448                 platform.setPlatformName(platformName);
2449                 org.onap.so.serviceinstancebeans.LineOfBusiness requestLineOfBusiness = new org.onap.so.serviceinstancebeans.LineOfBusiness();
2450                 lineOfBusiness.setLineOfBusinessName(lineOfBusinessName);
2451                 
2452                 doReturn(platform).when(bbInputSetupMapperLayer).mapRequestPlatform(requestPlatform);
2453                 doReturn(lineOfBusiness).when(bbInputSetupMapperLayer).mapRequestLineOfBusiness(requestLineOfBusiness);
2454                 
2455                 GenericVnf actual = SPY_bbInputSetup.createGenericVnf(lookupKeyMap, instanceName, requestPlatform, requestLineOfBusiness, vnfId, vnfType, instanceParams);
2456                 
2457                 assertThat(actual, sameBeanAs(expected));
2458                 assertEquals("LookupKeyMap is populated", vnfId, lookupKeyMap.get(ResourceKey.GENERIC_VNF_ID));
2459                 
2460                 expected.getCloudParams().clear();
2461                 actual = SPY_bbInputSetup.createGenericVnf(lookupKeyMap, instanceName, requestPlatform, requestLineOfBusiness, vnfId, vnfType, null);
2462                 assertThat(actual, sameBeanAs(expected));
2463         }
2464         
2465         @Test
2466         public void testMapCatalogVfModule() {
2467                 String vnfModelCustomizationUUID = "vnfResourceCustUUID";
2468                 String vfModuleCustomizationUUID = "vfModelCustomizationUUID";
2469                 VfModule vfModule = new VfModule();
2470                 ModelInfo modelInfo = new ModelInfo();
2471                 modelInfo.setModelCustomizationUuid(vfModuleCustomizationUUID);
2472                 Service service = new Service();
2473                 VnfResourceCustomization vnfResourceCust = new VnfResourceCustomization();
2474                 vnfResourceCust.setModelCustomizationUUID(vnfModelCustomizationUUID);
2475                 VfModuleCustomization vfModuleCust = new VfModuleCustomization();
2476                 vfModuleCust.setModelCustomizationUUID(vfModuleCustomizationUUID);
2477                 vnfResourceCust.getVfModuleCustomizations().add(vfModuleCust);
2478                 service.getVnfCustomizations().add(vnfResourceCust);
2479                 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
2480
2481                 doReturn(modelInfoVfModule).when(bbInputSetupMapperLayer).mapCatalogVfModuleToVfModule(vfModuleCust);
2482                 
2483                 SPY_bbInputSetup.mapCatalogVfModule(vfModule, modelInfo, service, vnfModelCustomizationUUID);
2484                 
2485                 assertThat(vfModule.getModelInfoVfModule(), sameBeanAs(modelInfoVfModule));
2486                 
2487                 modelInfo.setModelCustomizationUuid(null);
2488                 modelInfo.setModelCustomizationId(vfModuleCustomizationUUID);
2489                 
2490                 SPY_bbInputSetup.mapCatalogVfModule(vfModule, modelInfo, service, vnfModelCustomizationUUID);
2491                 
2492                 assertThat(vfModule.getModelInfoVfModule(), sameBeanAs(modelInfoVfModule));
2493         }
2494         
2495         @Test
2496         public void testPopulateVfModule() throws Exception {
2497                 String vnfId = "vnfId";
2498                 String vfModuleId = "vfModuleId";
2499                 String volumeGroupId = "volumeGroupId";
2500                 String vfModuleCustomizationId = "vfModuleCustomizationId";
2501                 ModelInfo modelInfo = new ModelInfo();
2502                 modelInfo.setModelCustomizationId(vfModuleCustomizationId);
2503                 Service service = new Service();
2504                 String bbName = AssignFlows.VF_MODULE.toString();
2505                 ServiceInstance serviceInstance = new ServiceInstance();
2506                 GenericVnf vnf = new GenericVnf();
2507                 vnf.setVnfId(vnfId);
2508                 VolumeGroup volumeGroup = new VolumeGroup();
2509                 volumeGroup.setVolumeGroupId(volumeGroupId);
2510                 vnf.getVolumeGroups().add(volumeGroup);
2511                 serviceInstance.getVnfs().add(vnf);
2512                 Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
2513                 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, vnfId);
2514                 String resourceId = vfModuleId;
2515                 RelatedInstanceList[] relatedInstanceList = null;
2516                 String instanceName = "vfModuleName";
2517                 List<Map<String, String>> instanceParams = null;
2518                 CloudConfiguration cloudConfiguration = new CloudConfiguration();
2519                 
2520                 org.onap.aai.domain.yang.GenericVnf vnfAAI = new org.onap.aai.domain.yang.GenericVnf();
2521                 vnfAAI.setModelCustomizationId("vnfModelCustId");
2522                 org.onap.aai.domain.yang.VolumeGroup volumeGroupAAI = new org.onap.aai.domain.yang.VolumeGroup();
2523                 volumeGroupAAI.setModelCustomizationId(vfModuleCustomizationId);
2524                 
2525                 doReturn(vnfAAI).when(SPY_bbInputSetupUtils).getAAIGenericVnf(vnf.getVnfId());
2526                 doReturn(volumeGroupAAI).when(SPY_bbInputSetupUtils).getAAIVolumeGroup(CLOUD_OWNER, 
2527                                 cloudConfiguration.getLcpCloudRegionId(), volumeGroup.getVolumeGroupId());
2528                 doNothing().when(SPY_bbInputSetup).mapCatalogVnf(isA(GenericVnf.class), isA(ModelInfo.class), isA(Service.class));
2529                 doNothing().when(SPY_bbInputSetup).mapCatalogVfModule(isA(VfModule.class), isA(ModelInfo.class), isA(Service.class), isA(String.class));
2530                 
2531                 SPY_bbInputSetup.populateVfModule(modelInfo, service, bbName, serviceInstance, lookupKeyMap, 
2532                                 resourceId, relatedInstanceList, instanceName, instanceParams, cloudConfiguration);
2533                 
2534                 assertEquals("Lookup Key Map populated with VfModule Id", vfModuleId, lookupKeyMap.get(ResourceKey.VF_MODULE_ID));
2535                 assertEquals("Lookup Key Map populated with VolumeGroup Id", volumeGroupId, lookupKeyMap.get(ResourceKey.VOLUME_GROUP_ID));
2536         }
2537         
2538 }