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