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