a74d78e04b75d901f20d9235f199f21cfc235a5c
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
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 package org.onap.so.bpmn.servicedecomposition.tasks;
21
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;
30 import java.io.File;
31 import java.util.ArrayList;
32 import java.util.Arrays;
33 import java.util.Collection;
34 import java.util.List;
35 import java.util.Map;
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;
60
61 @RunWith(Parameterized.class)
62 public class BBInputSetupPopulateMethodsTest {
63     private static final String RESOURCE_PATH = "src/test/resources/__files/ExecuteBuildingBlock/";
64
65     private String resourceId;
66     private String requestAction;
67     private Service service;
68     private String vnfType;
69
70     protected ObjectMapper mapper = new ObjectMapper();
71
72     @Spy
73     @InjectMocks
74     private BBInputSetup SPY_bbInputSetup = new BBInputSetup();
75
76     @Mock
77     private BBInputSetupUtils bbInputSetupUtils;
78
79     @Spy
80     private BBInputSetupMapperLayer SPY_bbInputSetupMapperLayer;
81
82     @Rule
83     public ExpectedException expectedException = ExpectedException.none();
84
85     public BBInputSetupPopulateMethodsTest(String vnfType) {
86         this.vnfType = vnfType;
87     }
88
89     @Before
90     public void setup() {
91         MockitoAnnotations.initMocks(this);
92     }
93
94     @Parameterized.Parameters
95     public static Collection input() {
96         return Arrays.asList(new Object[] {"vnfType", null});
97     }
98
99     @Before
100     public void init() {
101         resourceId = "123";
102         requestAction = "createInstance";
103         service = Mockito.mock(Service.class);
104     }
105
106     @Test
107     public void test_getGBBMacro_populateL3Network_shouldBeCalled() throws Exception {
108         // given
109         GeneralBuildingBlock gBB = mapper.readValue(new File(RESOURCE_PATH + "GeneralBuildingBlockExpected.json"),
110                 GeneralBuildingBlock.class);
111         Map<ResourceKey, String> lookupKeyMap = prepareLookupKeyMap();
112
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");
123
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());
128         // when
129         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
130         // then
131         verify(SPY_bbInputSetup, times(1)).populateL3Network(any(BBInputSetupParameter.class));
132     }
133
134     @Test
135     public void test_getGBBMacro_populateGenericVnf_shouldBeCalled() throws Exception {
136         // given
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();
145
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");
150
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));
159
160         // when
161         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
162         // then
163         ArgumentCaptor<BBInputSetupParameter> argument = ArgumentCaptor.forClass(BBInputSetupParameter.class);
164         verify(SPY_bbInputSetup, times(1)).populateGenericVnf(argument.capture());
165
166         assertEquals(argument.getValue().getIsReplace(), false);
167         assertEquals(argument.getValue().getVnfType(), vnfType);
168     }
169
170     @Test
171     public void test_getGBBMacro_populateVfModule_shouldBeCalled() throws Exception {
172         // given
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);
181
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");
189
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));
196         // when
197         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
198         // then
199         verify(SPY_bbInputSetup, times(1)).populateVfModule(any(BBInputSetupParameter.class));
200     }
201
202     @Test
203     public void test_getGBBMacro_populateVolumeGroup_shouldBeCalled() throws Exception {
204         // given
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);
213
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");
219
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));
226         // when
227         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
228         // then
229         verify(SPY_bbInputSetup, times(1)).populateVolumeGroup(any(BBInputSetupParameter.class));
230     }
231
232     @Test
233     public void test_getGBBMacro_populateConfiguration_shouldBeCalled() throws Exception {
234         // given
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();
244
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");
252
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);
260
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));
267         // when
268         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
269         // then
270         verify(SPY_bbInputSetup, times(1)).populateConfiguration(any(BBInputSetupParameter.class));
271     }
272 }