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