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