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