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