2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2020 Nokia 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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
20 package org.onap.so.bpmn.servicedecomposition.tasks;
22 import com.fasterxml.jackson.databind.ObjectMapper;
23 import org.junit.Before;
24 import org.junit.Rule;
25 import org.junit.Test;
26 import org.junit.rules.ExpectedException;
27 import org.junit.runner.RunWith;
28 import org.junit.runners.Parameterized;
29 import org.mockito.ArgumentMatchers;
30 import org.mockito.InjectMocks;
31 import org.mockito.Mock;
32 import org.mockito.Mockito;
33 import org.mockito.MockitoAnnotations;
34 import org.mockito.Spy;
35 import org.onap.aai.domain.yang.GenericVnf;
36 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
37 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
38 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
39 import org.onap.so.bpmn.servicedecomposition.entities.ConfigurationResourceKeys;
40 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
41 import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
42 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
43 import org.onap.so.bpmn.servicedecomposition.entities.ServiceModel;
44 import org.onap.so.db.catalog.beans.ConfigurationResourceCustomization;
45 import org.onap.so.db.catalog.beans.Service;
46 import org.onap.so.db.request.beans.InfraActiveRequests;
47 import org.onap.so.serviceinstancebeans.CloudConfiguration;
48 import org.onap.so.serviceinstancebeans.ModelInfo;
49 import org.onap.so.serviceinstancebeans.RequestDetails;
51 import java.util.ArrayList;
52 import java.util.Arrays;
53 import java.util.Collection;
54 import java.util.List;
56 import static org.mockito.ArgumentMatchers.any;
57 import static org.mockito.ArgumentMatchers.eq;
58 import static org.mockito.ArgumentMatchers.isA;
59 import static org.mockito.Mockito.doNothing;
60 import static org.mockito.Mockito.doReturn;
61 import static org.mockito.Mockito.times;
62 import static org.mockito.Mockito.verify;
63 import static org.onap.so.bpmn.servicedecomposition.tasks.BaseBBInputSetupTestHelper.prepareConfigurationResourceKeys;
64 import static org.onap.so.bpmn.servicedecomposition.tasks.BaseBBInputSetupTestHelper.prepareLookupKeyMap;
66 @RunWith(Parameterized.class)
67 public class BBInputSetupPopulateMethodsTest {
68 private static final String RESOURCE_PATH = "src/test/resources/__files/ExecuteBuildingBlock/";
70 private String resourceId;
71 private String requestAction;
72 private Service service;
73 private String vnfType;
75 protected ObjectMapper mapper = new ObjectMapper();
79 private BBInputSetup SPY_bbInputSetup = new BBInputSetup();
82 private BBInputSetupUtils bbInputSetupUtils;
85 private BBInputSetupMapperLayer SPY_bbInputSetupMapperLayer;
88 public ExpectedException expectedException = ExpectedException.none();
90 public BBInputSetupPopulateMethodsTest(String vnfType) {
91 this.vnfType = vnfType;
96 MockitoAnnotations.initMocks(this);
99 @Parameterized.Parameters
100 public static Collection input() {
101 return Arrays.asList(new Object[] {"vnfType", null});
107 requestAction = "createInstance";
108 service = Mockito.mock(Service.class);
112 public void test_getGBBMacro_populateL3Network_shouldBeCalled() throws Exception {
114 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
115 GeneralBuildingBlock.class);
116 Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
118 ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
119 RequestDetails requestDetails = mapper
120 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
121 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
122 ExecuteBuildingBlock.class);
123 executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
124 BuildingBlock buildingBlock = executeBB.getBuildingBlock();
125 buildingBlock.setBpmnFlowName(AssignFlows.NETWORK_MACRO.toString())
126 .setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
128 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
129 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
130 doReturn(service).when(bbInputSetupUtils)
131 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
133 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
135 verify(SPY_bbInputSetup, times(1)).populateL3Network(any(String.class), isA(ModelInfo.class),
136 isA(Service.class), any(String.class), isA(ServiceInstance.class), any(), any(String.class), any());
140 public void test_getGBBMacro_populateGenericVnf_shouldBeCalled() throws Exception {
142 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
143 GeneralBuildingBlock.class);
144 RequestDetails requestDetails = mapper
145 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
146 InfraActiveRequests request = Mockito.mock(InfraActiveRequests.class);
147 GenericVnf aaiVnf = new GenericVnf();
148 aaiVnf.setModelCustomizationId("modelCustId");
149 Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
151 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
152 ExecuteBuildingBlock.class);
153 BuildingBlock buildingBlock = executeBB.getBuildingBlock();
154 buildingBlock.setBpmnFlowName(AssignFlows.VNF.toString()).setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
156 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
157 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
158 doReturn(request).when(bbInputSetupUtils).getInfraActiveRequest(executeBB.getRequestId());
159 doReturn(service).when(bbInputSetupUtils)
160 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
161 doNothing().when(bbInputSetupUtils).updateInfraActiveRequestVnfId(request,
162 lookupKeyMap.get(ResourceKey.GENERIC_VNF_ID));
163 doReturn(aaiVnf).when(bbInputSetupUtils).getAAIGenericVnf(any(String.class));
166 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
168 verify(SPY_bbInputSetup, times(1)).populateGenericVnf(isA(ModelInfo.class), any(String.class),
169 isA(org.onap.so.serviceinstancebeans.Platform.class),
170 isA(org.onap.so.serviceinstancebeans.LineOfBusiness.class), isA(Service.class), any(String.class),
171 isA(ServiceInstance.class), any(), any(), any(String.class), eq(vnfType), any(), any(String.class),
172 any(String.class), eq(false));
176 public void test_getGBBMacro_populateVfModule_shouldBeCalled() throws Exception {
178 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockWithVnf.json"),
179 GeneralBuildingBlock.class);
180 RequestDetails requestDetails = mapper
181 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
182 GenericVnf aaiVnf = new GenericVnf();
183 aaiVnf.setModelCustomizationId("modelCustId");
184 Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
185 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, null);
187 ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
188 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
189 ExecuteBuildingBlock.class);
190 executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
191 BuildingBlock buildingBlock = executeBB.getBuildingBlock();
192 buildingBlock.setBpmnFlowName(AssignFlows.VF_MODULE.toString()).setKey("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
194 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
195 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
196 doReturn(service).when(bbInputSetupUtils)
197 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
198 doReturn("vnfId").when(SPY_bbInputSetup).getVnfId(executeBB, lookupKeyMap);
199 doReturn(aaiVnf).when(bbInputSetupUtils).getAAIGenericVnf(any(String.class));
201 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
203 verify(SPY_bbInputSetup, times(1)).populateVfModule(isA(ModelInfo.class), isA(Service.class), any(String.class),
204 isA(ServiceInstance.class), any(), any(String.class), any(), any(String.class), any(),
205 isA(CloudConfiguration.class), Mockito.anyBoolean(), isA(ServiceModel.class));
209 public void test_getGBBMacro_populateVolumeGroup_shouldBeCalled() throws Exception {
211 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockWithVnf.json"),
212 GeneralBuildingBlock.class);
213 RequestDetails requestDetails = mapper
214 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
215 GenericVnf aaiVnf = new GenericVnf();
216 aaiVnf.setModelCustomizationId("modelCustId");
217 Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
218 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, null);
220 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
221 ExecuteBuildingBlock.class);
222 BuildingBlock buildingBlock = executeBB.getBuildingBlock();
223 buildingBlock.setBpmnFlowName(AssignFlows.VOLUME_GROUP.toString())
224 .setKey("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
226 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
227 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
228 doReturn(service).when(bbInputSetupUtils)
229 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
230 doReturn("vnfId").when(SPY_bbInputSetup).getVnfId(executeBB, lookupKeyMap);
231 doReturn(aaiVnf).when(bbInputSetupUtils).getAAIGenericVnf(any(String.class));
233 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
235 verify(SPY_bbInputSetup, times(1)).populateVolumeGroup(isA(ModelInfo.class), isA(Service.class),
236 any(String.class), isA(ServiceInstance.class), any(), any(String.class), ArgumentMatchers.isNull(),
237 ArgumentMatchers.isNull(), eq(vnfType), any());
241 public void test_getGBBMacro_populateConfiguration_shouldBeCalled() throws Exception {
243 String requestAction = "createInstance";
244 Service service = Mockito.mock(Service.class);
245 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
246 GeneralBuildingBlock.class);
247 RequestDetails requestDetails = mapper
248 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
249 GenericVnf aaiVnf = new GenericVnf();
250 aaiVnf.setModelCustomizationId("modelCustId");
251 Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
253 ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
254 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
255 ExecuteBuildingBlock.class);
256 executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
257 BuildingBlock buildingBlock = executeBB.getBuildingBlock();
258 buildingBlock.setBpmnFlowName("AssignFabricConfigurationBB").setKey("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
260 Configuration configuration = new Configuration();
261 configuration.setConfigurationId("configurationId");
262 gBB.getServiceInstance().getConfigurations().add(configuration);
263 List<ConfigurationResourceCustomization> configurationCustList = new ArrayList<>();
264 ConfigurationResourceCustomization configurationCust = new ConfigurationResourceCustomization();
265 configurationCust.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
266 configurationCustList.add(configurationCust);
268 doReturn(configurationCustList).when(service).getConfigurationCustomizations();
269 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
270 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
271 doReturn(service).when(bbInputSetupUtils)
272 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
273 doNothing().when(SPY_bbInputSetup).populateConfiguration(isA(ModelInfo.class), isA(Service.class),
274 any(String.class), isA(ServiceInstance.class), any(), any(String.class), ArgumentMatchers.isNull(),
275 isA(ConfigurationResourceKeys.class), isA(RequestDetails.class));
277 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
279 verify(SPY_bbInputSetup, times(1)).populateConfiguration(isA(ModelInfo.class), isA(Service.class),
280 any(String.class), isA(ServiceInstance.class), any(), any(String.class), ArgumentMatchers.isNull(),
281 isA(ConfigurationResourceKeys.class), isA(RequestDetails.class));