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