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);
119 executeBB.setRequestDetails(requestDetails);
120 BuildingBlock buildingBlock = executeBB.getBuildingBlock();
121 buildingBlock.setBpmnFlowName(AssignFlows.NETWORK_MACRO.toString())
122 .setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
124 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
125 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
126 doReturn(service).when(bbInputSetupUtils)
127 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
129 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
131 verify(SPY_bbInputSetup, times(1)).populateL3Network(any(BBInputSetupParameter.class));
135 public void test_getGBBMacro_populateGenericVnf_shouldBeCalled() throws Exception {
137 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
138 GeneralBuildingBlock.class);
139 RequestDetails requestDetails = mapper
140 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
141 InfraActiveRequests request = Mockito.mock(InfraActiveRequests.class);
142 GenericVnf aaiVnf = new GenericVnf();
143 aaiVnf.setModelCustomizationId("modelCustId");
144 Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
146 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
147 ExecuteBuildingBlock.class);
148 BuildingBlock buildingBlock = executeBB.getBuildingBlock();
149 buildingBlock.setBpmnFlowName(AssignFlows.VNF.toString()).setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
151 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
152 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
153 doReturn(request).when(bbInputSetupUtils).getInfraActiveRequest(executeBB.getRequestId());
154 doReturn(service).when(bbInputSetupUtils)
155 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
156 doNothing().when(bbInputSetupUtils).updateInfraActiveRequestVnfId(request,
157 lookupKeyMap.get(ResourceKey.GENERIC_VNF_ID));
158 doReturn(aaiVnf).when(bbInputSetupUtils).getAAIGenericVnf(any(String.class));
161 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
163 ArgumentCaptor<BBInputSetupParameter> argument = ArgumentCaptor.forClass(BBInputSetupParameter.class);
164 verify(SPY_bbInputSetup, times(1)).populateGenericVnf(argument.capture());
166 assertEquals(argument.getValue().getIsReplace(), false);
167 assertEquals(argument.getValue().getVnfType(), vnfType);
171 public void test_getGBBMacro_populateVfModule_shouldBeCalled() throws Exception {
173 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockWithVnf.json"),
174 GeneralBuildingBlock.class);
175 RequestDetails requestDetails = mapper
176 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
177 GenericVnf aaiVnf = new GenericVnf();
178 aaiVnf.setModelCustomizationId("modelCustId");
179 Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
180 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, null);
182 ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
183 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
184 ExecuteBuildingBlock.class);
185 executeBB.setConfigurationResourceKeys(configResourceKeys);
186 executeBB.setRequestDetails(requestDetails);
187 BuildingBlock buildingBlock = executeBB.getBuildingBlock();
188 buildingBlock.setBpmnFlowName(AssignFlows.VF_MODULE.toString()).setKey("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
190 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
191 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
192 doReturn(service).when(bbInputSetupUtils)
193 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
194 doReturn("vnfId").when(SPY_bbInputSetup).getVnfId(executeBB, lookupKeyMap);
195 doReturn(aaiVnf).when(bbInputSetupUtils).getAAIGenericVnf(any(String.class));
197 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
199 verify(SPY_bbInputSetup, times(1)).populateVfModule(any(BBInputSetupParameter.class));
203 public void test_getGBBMacro_populateVolumeGroup_shouldBeCalled() throws Exception {
205 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockWithVnf.json"),
206 GeneralBuildingBlock.class);
207 RequestDetails requestDetails = mapper
208 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
209 GenericVnf aaiVnf = new GenericVnf();
210 aaiVnf.setModelCustomizationId("modelCustId");
211 Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
212 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, null);
214 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
215 ExecuteBuildingBlock.class);
216 BuildingBlock buildingBlock = executeBB.getBuildingBlock();
217 buildingBlock.setBpmnFlowName(AssignFlows.VOLUME_GROUP.toString())
218 .setKey("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
220 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
221 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
222 doReturn(service).when(bbInputSetupUtils)
223 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
224 doReturn("vnfId").when(SPY_bbInputSetup).getVnfId(executeBB, lookupKeyMap);
225 doReturn(aaiVnf).when(bbInputSetupUtils).getAAIGenericVnf(any(String.class));
227 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
229 verify(SPY_bbInputSetup, times(1)).populateVolumeGroup(any(BBInputSetupParameter.class));
233 public void test_getGBBMacro_populateConfiguration_shouldBeCalled() throws Exception {
235 String requestAction = "createInstance";
236 Service service = Mockito.mock(Service.class);
237 GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
238 GeneralBuildingBlock.class);
239 RequestDetails requestDetails = mapper
240 .readValue(new File(RESOURCE_PATH + "RequestDetailsInput_serviceMacro.json"), RequestDetails.class);
241 GenericVnf aaiVnf = new GenericVnf();
242 aaiVnf.setModelCustomizationId("modelCustId");
243 Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
245 ConfigurationResourceKeys configResourceKeys = prepareConfigurationResourceKeys();
246 ExecuteBuildingBlock executeBB = mapper.readValue(new File(RESOURCE_PATH + "ExecuteBuildingBlockSimple.json"),
247 ExecuteBuildingBlock.class);
248 executeBB.setConfigurationResourceKeys(configResourceKeys);
249 executeBB.setRequestDetails(requestDetails);
250 BuildingBlock buildingBlock = executeBB.getBuildingBlock();
251 buildingBlock.setBpmnFlowName("AssignFabricConfigurationBB").setKey("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
253 Configuration configuration = new Configuration();
254 configuration.setConfigurationId("configurationId");
255 gBB.getServiceInstance().getConfigurations().add(configuration);
256 List<ConfigurationResourceCustomization> configurationCustList = new ArrayList<>();
257 ConfigurationResourceCustomization configurationCust = new ConfigurationResourceCustomization();
258 configurationCust.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa9");
259 configurationCustList.add(configurationCust);
261 doReturn(configurationCustList).when(service).getConfigurationCustomizations();
262 doReturn(gBB).when(SPY_bbInputSetup).getGBBALaCarteService(executeBB, requestDetails, lookupKeyMap,
263 requestAction, lookupKeyMap.get(ResourceKey.SERVICE_INSTANCE_ID));
264 doReturn(service).when(bbInputSetupUtils)
265 .getCatalogServiceByModelUUID(gBB.getServiceInstance().getModelInfoServiceInstance().getModelUuid());
266 doNothing().when(SPY_bbInputSetup).populateConfiguration(any(BBInputSetupParameter.class));
268 SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
270 verify(SPY_bbInputSetup, times(1)).populateConfiguration(any(BBInputSetupParameter.class));