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