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