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 static org.junit.Assert.assertEquals;
23 import static org.mockito.ArgumentMatchers.any;
24 import static org.mockito.Mockito.doNothing;
25 import static org.mockito.Mockito.doReturn;
26 import static org.mockito.Mockito.times;
27 import static org.mockito.Mockito.verify;
28 import static org.onap.so.bpmn.servicedecomposition.tasks.BaseBBInputSetupTestHelper.prepareConfigurationResourceKeys;
29 import static org.onap.so.bpmn.servicedecomposition.tasks.BaseBBInputSetupTestHelper.prepareLookupKeyMap;
31 import java.util.ArrayList;
32 import java.util.Arrays;
33 import java.util.Collection;
34 import java.util.List;
36 import org.junit.Before;
37 import org.junit.Rule;
38 import org.junit.Test;
39 import org.junit.rules.ExpectedException;
40 import org.junit.runner.RunWith;
41 import org.junit.runners.Parameterized;
42 import org.mockito.ArgumentCaptor;
43 import org.mockito.InjectMocks;
44 import org.mockito.Mock;
45 import org.mockito.Mockito;
46 import org.mockito.MockitoAnnotations;
47 import org.mockito.Spy;
48 import org.onap.aai.domain.yang.GenericVnf;
49 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
50 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
51 import org.onap.so.bpmn.servicedecomposition.entities.ConfigurationResourceKeys;
52 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
53 import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
54 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
55 import org.onap.so.db.catalog.beans.ConfigurationResourceCustomization;
56 import org.onap.so.db.catalog.beans.Service;
57 import org.onap.so.db.request.beans.InfraActiveRequests;
58 import org.onap.so.serviceinstancebeans.RequestDetails;
59 import com.fasterxml.jackson.databind.ObjectMapper;
61 @RunWith(Parameterized.class)
62 public class BBInputSetupPopulateMethodsTest {
63 private static final String RESOURCE_PATH = "src/test/resources/__files/ExecuteBuildingBlock/";
65 private String resourceId;
66 private String requestAction;
67 private Service service;
68 private String vnfType;
70 protected ObjectMapper mapper = new ObjectMapper();
74 private BBInputSetup SPY_bbInputSetup = new BBInputSetup();
77 private BBInputSetupUtils bbInputSetupUtils;
80 private BBInputSetupMapperLayer SPY_bbInputSetupMapperLayer;
83 public ExpectedException expectedException = ExpectedException.none();
85 public BBInputSetupPopulateMethodsTest(String vnfType) {
86 this.vnfType = vnfType;
91 MockitoAnnotations.initMocks(this);
94 @Parameterized.Parameters
95 public static Collection input() {
96 return Arrays.asList(new Object[] {"vnfType", null});
102 requestAction = "createInstance";
103 service = Mockito.mock(Service.class);
107 public void test_getGBBMacro_populateL3Network_shouldBeCalled() throws Exception {
109 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
110 GeneralBuildingBlock.class);
111 Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
113 ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
114 RequestDetails requestDetails = mapper
115 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
116 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
117 ExecuteBuildingBlock.class);
118 executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
119 BuildingBlock buildingBlock = executeBB.getBuildingBlock();
120 buildingBlock.setBpmnFlowName(AssignFlows.NETWORK_MACRO.toString())
121 .setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
123 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
124 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
125 doReturn(service).when(bbInputSetupUtils)
126 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
128 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
130 verify(SPY_bbInputSetup, times(1)).populateL3Network(any(BBInputSetupParameter.class));
134 public void test_getGBBMacro_populateGenericVnf_shouldBeCalled() throws Exception {
136 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
137 GeneralBuildingBlock.class);
138 RequestDetails requestDetails = mapper
139 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
140 InfraActiveRequests request = Mockito.mock(InfraActiveRequests.class);
141 GenericVnf aaiVnf = new GenericVnf();
142 aaiVnf.setModelCustomizationId("modelCustId");
143 Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
145 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
146 ExecuteBuildingBlock.class);
147 BuildingBlock buildingBlock = executeBB.getBuildingBlock();
148 buildingBlock.setBpmnFlowName(AssignFlows.VNF.toString()).setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
150 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
151 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
152 doReturn(request).when(bbInputSetupUtils).getInfraActiveRequest(executeBB.getRequestId());
153 doReturn(service).when(bbInputSetupUtils)
154 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
155 doNothing().when(bbInputSetupUtils).updateInfraActiveRequestVnfId(request,
156 lookupKeyMap.get(ResourceKey.GENERIC_VNF_ID));
157 doReturn(aaiVnf).when(bbInputSetupUtils).getAAIGenericVnf(any(String.class));
160 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
162 ArgumentCaptor<BBInputSetupParameter> argument = ArgumentCaptor.forClass(BBInputSetupParameter.class);
163 verify(SPY_bbInputSetup, times(1)).populateGenericVnf(argument.capture());
165 assertEquals(argument.getValue().getIsReplace(), false);
166 assertEquals(argument.getValue().getVnfType(), vnfType);
170 public void test_getGBBMacro_populateVfModule_shouldBeCalled() throws Exception {
172 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockWithVnf.json"),
173 GeneralBuildingBlock.class);
174 RequestDetails requestDetails = mapper
175 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
176 GenericVnf aaiVnf = new GenericVnf();
177 aaiVnf.setModelCustomizationId("modelCustId");
178 Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
179 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, null);
181 ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
182 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
183 ExecuteBuildingBlock.class);
184 executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
185 BuildingBlock buildingBlock = executeBB.getBuildingBlock();
186 buildingBlock.setBpmnFlowName(AssignFlows.VF_MODULE.toString()).setKey("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
188 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
189 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
190 doReturn(service).when(bbInputSetupUtils)
191 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
192 doReturn("vnfId").when(SPY_bbInputSetup).getVnfId(executeBB, lookupKeyMap);
193 doReturn(aaiVnf).when(bbInputSetupUtils).getAAIGenericVnf(any(String.class));
195 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
197 verify(SPY_bbInputSetup, times(1)).populateVfModule(any(BBInputSetupParameter.class));
201 public void test_getGBBMacro_populateVolumeGroup_shouldBeCalled() throws Exception {
203 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockWithVnf.json"),
204 GeneralBuildingBlock.class);
205 RequestDetails requestDetails = mapper
206 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
207 GenericVnf aaiVnf = new GenericVnf();
208 aaiVnf.setModelCustomizationId("modelCustId");
209 Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
210 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, null);
212 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
213 ExecuteBuildingBlock.class);
214 BuildingBlock buildingBlock = executeBB.getBuildingBlock();
215 buildingBlock.setBpmnFlowName(AssignFlows.VOLUME_GROUP.toString())
216 .setKey("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
218 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
219 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
220 doReturn(service).when(bbInputSetupUtils)
221 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
222 doReturn("vnfId").when(SPY_bbInputSetup).getVnfId(executeBB, lookupKeyMap);
223 doReturn(aaiVnf).when(bbInputSetupUtils).getAAIGenericVnf(any(String.class));
225 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
227 verify(SPY_bbInputSetup, times(1)).populateVolumeGroup(any(BBInputSetupParameter.class));
231 public void test_getGBBMacro_populateConfiguration_shouldBeCalled() throws Exception {
233 String requestAction = "createInstance";
234 Service service = Mockito.mock(Service.class);
235 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
236 GeneralBuildingBlock.class);
237 RequestDetails requestDetails = mapper
238 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
239 GenericVnf aaiVnf = new GenericVnf();
240 aaiVnf.setModelCustomizationId("modelCustId");
241 Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
243 ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
244 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
245 ExecuteBuildingBlock.class);
246 executeBB.setConfigurationResourceKeys(configResourceKeys).setRequestDetails(requestDetails);
247 BuildingBlock buildingBlock = executeBB.getBuildingBlock();
248 buildingBlock.setBpmnFlowName("AssignFabricConfigurationBB").setKey("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
250 Configuration configuration = new Configuration();
251 configuration.setConfigurationId("configurationId");
252 gBB.getServiceInstance().getConfigurations().add(configuration);
253 List<ConfigurationResourceCustomization> configurationCustList = new ArrayList<>();
254 ConfigurationResourceCustomization configurationCust = new ConfigurationResourceCustomization();
255 configurationCust.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
256 configurationCustList.add(configurationCust);
258 doReturn(configurationCustList).when(service).getConfigurationCustomizations();
259 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
260 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
261 doReturn(service).when(bbInputSetupUtils)
262 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
263 doNothing().when(SPY_bbInputSetup).populateConfiguration(any(BBInputSetupParameter.class));
265 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
267 verify(SPY_bbInputSetup, times(1)).populateConfiguration(any(BBInputSetupParameter.class));