d7cfaf94f7d9b2bfd300202c8fe5af2cf27b817e
[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).setRequestDetails(requestDetails);
119         BuildingBlock buildingBlock = executeBB.getBuildingBlock();
120         buildingBlock.setBpmnFlowName(AssignFlows.NETWORK_MACRO.toString())
121                 .setKey("ab153b6e-c364-44c0-bef6-1f2982117f04");
122
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());
127         // when
128         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
129         // then
130         verify(SPY_bbInputSetup, times(1)).populateL3Network(any(BBInputSetupParameter.class));
131     }
132
133     @Test
134     public void test_getGBBMacro_populateGenericVnf_shouldBeCalled() throws Exception {
135         // given
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();
144
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");
149
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));
158
159         // when
160         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
161         // then
162         ArgumentCaptor<BBInputSetupParameter> argument = ArgumentCaptor.forClass(BBInputSetupParameter.class);
163         verify(SPY_bbInputSetup, times(1)).populateGenericVnf(argument.capture());
164
165         assertEquals(argument.getValue().getIsReplace(), false);
166         assertEquals(argument.getValue().getVnfType(), vnfType);
167     }
168
169     @Test
170     public void test_getGBBMacro_populateVfModule_shouldBeCalled() throws Exception {
171         // given
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);
180
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");
187
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));
194         // when
195         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
196         // then
197         verify(SPY_bbInputSetup, times(1)).populateVfModule(any(BBInputSetupParameter.class));
198     }
199
200     @Test
201     public void test_getGBBMacro_populateVolumeGroup_shouldBeCalled() throws Exception {
202         // given
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);
211
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");
217
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));
224         // when
225         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
226         // then
227         verify(SPY_bbInputSetup, times(1)).populateVolumeGroup(any(BBInputSetupParameter.class));
228     }
229
230     @Test
231     public void test_getGBBMacro_populateConfiguration_shouldBeCalled() throws Exception {
232         // given
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();
242
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");
249
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);
257
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));
264         // when
265         SPY_bbInputSetup.getGBBMacro(executeBB, requestDetails, lookupKeyMap, requestAction, resourceId, vnfType);
266         // then
267         verify(SPY_bbInputSetup, times(1)).populateConfiguration(any(BBInputSetupParameter.class));
268     }
269 }