1 package org.openecomp.sdc.vendorsoftwareproduct.impl;
3 import org.mockito.InjectMocks;
4 import org.mockito.Mock;
5 import org.mockito.MockitoAnnotations;
6 import org.mockito.Spy;
7 import org.openecomp.sdc.common.errors.CoreException;
8 import org.openecomp.sdc.logging.api.Logger;
9 import org.openecomp.sdc.logging.api.LoggerFactory;
10 import org.openecomp.sdc.vendorsoftwareproduct.NetworkManager;
11 import org.openecomp.sdc.vendorsoftwareproduct.dao.NicDao;
12 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
13 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NetworkEntity;
14 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity;
15 import org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductErrorCodes;
16 import org.openecomp.sdc.vendorsoftwareproduct.CompositionEntityDataManager;
17 import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse;
18 import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireResponse;
19 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityType;
20 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData;
21 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.NetworkType;
22 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Nic;
23 import org.openecomp.sdc.versioning.dao.types.Version;
24 import org.openecomp.sdc.versioning.errors.VersioningErrorCodes;
25 import org.testng.Assert;
26 import org.testng.annotations.AfterMethod;
27 import org.testng.annotations.BeforeMethod;
28 import org.testng.annotations.Test;
30 import java.util.ArrayList;
31 import java.util.Arrays;
32 import java.util.Collection;
34 import static org.mockito.Matchers.anyObject;
35 import static org.mockito.Mockito.doReturn;
36 import static org.mockito.Mockito.never;
37 import static org.mockito.Mockito.verify;
39 public class NicManagerImplTest {
41 private final Logger log = (Logger) LoggerFactory.getLogger(this.getClass().getName());
43 private static final String NIC_NOT_EXIST_MSG =
44 "Vendor Software Product NIC with Id nic1 does not exist for Vendor Software Product with " +
45 "id VSP_ID and version version_id";
47 private static final String VSP_ID = "VSP_ID";
48 private static final Version VERSION = new Version("version_id");
49 private static final String COMPONENT_ID = "COMPONENT_ID";
50 private static final String NIC1_ID = "nic1";
51 private static final String NIC2_ID = "nic2";
52 private static final String NETWORK1_ID = "network1";
53 private static final String NETWORK2_ID = "network2";
56 private NicDao nicDao;
58 private CompositionEntityDataManager compositionEntityDataManagerMock;
60 private NetworkManager networkManagerMock;
62 private VendorSoftwareProductInfoDao vspInfoDao;
65 private NicManagerImpl nicManager;
68 public void setUp() throws Exception {
69 MockitoAnnotations.initMocks(this);
73 public void tearDown() {
78 public void testListWhenNone() {
79 Collection<NicEntity> nics = nicManager.listNics(VSP_ID, VERSION, COMPONENT_ID);
80 Assert.assertEquals(nics.size(), 0);
84 public void testList() {
85 doReturn(Arrays.asList(
86 createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID),
87 createNic(VSP_ID, VERSION, COMPONENT_ID, NIC2_ID, NETWORK2_ID)))
88 .when(nicDao).list(anyObject());
90 NetworkEntity network1 = NetworkManagerImplTest.createNetwork(VSP_ID, VERSION, NETWORK1_ID);
91 NetworkEntity network2 = NetworkManagerImplTest.createNetwork(VSP_ID, VERSION, NETWORK2_ID);
92 doReturn(Arrays.asList(network1, network2))
93 .when(networkManagerMock).listNetworks(VSP_ID, VERSION);
95 Collection<NicEntity> nics = nicManager.listNics(VSP_ID, VERSION, COMPONENT_ID);
96 Assert.assertEquals(nics.size(), 2);
97 for (NicEntity nic : nics) {
98 Assert.assertEquals(nic.getNicCompositionData().getNetworkName(),
99 NIC1_ID.equals(nic.getId())
100 ? network1.getNetworkCompositionData().getName()
101 : network2.getNetworkCompositionData().getName());
106 public void testCreate() {
107 NicEntity nicEntity = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
108 Nic nic = nicEntity.getNicCompositionData();
109 nic.setNetworkType(NetworkType.Internal);
110 nicEntity.setNicCompositionData(nic);
111 doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject());
112 Collection<NicEntity> nicEntities = new ArrayList<>();
113 doReturn(nicEntities).when(nicDao).list(anyObject());
114 doReturn(nicEntity).when(compositionEntityDataManagerMock).createNic(anyObject());
116 NicEntity created = nicManager.createNic(nicEntity);
117 Assert.assertNotNull(created);
121 public void testCreateWithIncorrectNicNameFormat() {
122 NicEntity nicEntity = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
123 Nic nic = nicEntity.getNicCompositionData();
124 nic.setNetworkType(NetworkType.Internal);
125 nicEntity.setNicCompositionData(nic);
126 doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject());
127 Collection<NicEntity> nicEntities = new ArrayList<>();
129 NicEntity nicEntityDiffName = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
130 Nic newNameNic = nicEntityDiffName.getNicCompositionData();
131 newNameNic.setName(NIC1_ID + "_Name/*");
132 nicEntityDiffName.setNicCompositionData(newNameNic);
133 nicEntities.add(nicEntityDiffName);
134 doReturn(nicEntities).when(nicDao).list(anyObject());
135 doReturn(nicEntity).when(compositionEntityDataManagerMock).createNic(anyObject());
138 NicEntity created = nicManager.createNic(nicEntity);
139 } catch (CoreException exception) {
140 log.debug("", exception);
141 Assert.assertEquals(VendorSoftwareProductErrorCodes.NIC_NAME_FORMAT_NOT_ALLOWED,
142 exception.code().id());
147 public void testCreateWithDupNicName() {
148 NicEntity nicEntity = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
149 Nic nic = nicEntity.getNicCompositionData();
150 nic.setNetworkType(NetworkType.Internal);
151 nicEntity.setNicCompositionData(nic);
152 doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject());
153 Collection<NicEntity> nicEntities = new ArrayList<>();
155 NicEntity nicEntityDiffName = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
156 Nic newNameNic = nicEntityDiffName.getNicCompositionData();
157 newNameNic.setName(NIC1_ID + "_Name");
158 nicEntityDiffName.setNicCompositionData(newNameNic);
159 nicEntities.add(nicEntityDiffName);
160 doReturn(nicEntities).when(nicDao).list(anyObject());
161 doReturn(nicEntity).when(compositionEntityDataManagerMock).createNic(anyObject());
164 NicEntity created = nicManager.createNic(nicEntity);
165 } catch (CoreException exception) {
166 log.debug("", exception);
167 Assert.assertEquals("Invalid request, NIC with name " + nic.getName() +
168 " already exist for component with ID " + nicEntity.getComponentId() + ".",
169 exception.code().message());
170 Assert.assertEquals(VendorSoftwareProductErrorCodes.DUPLICATE_NIC_NAME_NOT_ALLOWED,
171 exception.code().id());
176 public void testCreateWithExternalNetworkType() {
177 NicEntity nicEntity = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
178 Nic nic = nicEntity.getNicCompositionData();
179 nic.setNetworkType(NetworkType.External);
180 nicEntity.setNicCompositionData(nic);
181 doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject());
182 Collection<NicEntity> nicEntities = new ArrayList<>();
183 doReturn(nicEntities).when(nicDao).list(anyObject());
184 doReturn(nicEntity).when(compositionEntityDataManagerMock).createNic(anyObject());
187 NicEntity created = nicManager.createNic(nicEntity);
188 } catch (CoreException exception) {
189 log.debug("", exception);
190 Assert.assertEquals("Invalid request,NetworkId not allowed for External Networks",
191 exception.code().message());
193 .assertEquals(VendorSoftwareProductErrorCodes.NETWORKID_NOT_ALLOWED_FOR_EXTERNAL_NETWORK,
194 exception.code().id());
199 public void testCreateWithNetworkDesc() {
200 NicEntity nicEntity = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
201 Nic nic = nicEntity.getNicCompositionData();
202 nic.setNetworkType(NetworkType.Internal);
203 nic.setNetworkDescription(NIC1_ID);
204 nicEntity.setNicCompositionData(nic);
205 doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject());
206 Collection<NicEntity> nicEntities = new ArrayList<>();
207 doReturn(nicEntities).when(nicDao).list(anyObject());
208 doReturn(nicEntity).when(compositionEntityDataManagerMock).createNic(anyObject());
211 NicEntity created = nicManager.createNic(nicEntity);
212 } catch (CoreException exception) {
213 log.debug("", exception);
214 Assert.assertEquals("Invalid request, Network Description not allowed for Internal Networks",
215 exception.code().message());
216 Assert.assertEquals(VendorSoftwareProductErrorCodes
217 .NETWORK_DESCRIPTION_NOT_ALLOWED_FOR_INTERNAL_NETWORK, exception.code().id());
222 public void testDeleteNic() {
223 NicEntity nicEntity = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
224 doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject());
225 doReturn(nicEntity).when(nicDao).get(anyObject());
227 nicManager.deleteNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID);
232 public void testUpdateNicQuestionnaire() {
233 NicEntity nicEntity = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
235 doReturn(nicEntity).when(nicDao).get(anyObject());
236 doReturn("{}").when(nicManager).getNicCompositionSchema(anyObject());
239 .updateNicQuestionnaire(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, "Ques");
241 verify(nicDao).updateQuestionnaireData(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, "Ques");
244 // @Test(dependsOnMethods = "testListWhenNone")
245 // public void testCreate() {
246 // NIC1_ID = testCreate(VSP_ID, COMPONENT_ID, NETWORK1_ID, NETWORK1_ID.getNetworkCompositionData().getName());
249 /* @Test(dependsOnMethods = {"testCreate"})
250 public void testCreateWithExistingName_negative() {
251 NicEntity nic = new NicEntity(VSP_ID, null, COMPONENT_ID, null);
252 Nic nicData = new Nic();
253 nicData.setName("nic1 name");
254 nic.setNicCompositionData(nicData);
255 testCreate_negative(nic, UniqueValueUtil.UNIQUE_VALUE_VIOLATION);
258 // @Test(dependsOnMethods = {"testCreate"})
259 // public void testCreateWithExistingNameUnderOtherComponent() {
260 // ComponentEntity component12 = new ComponentEntity(VSP_ID, null, null);
261 // ComponentData compData12 = new ComponentData();
262 // compData12.setName("comp12 name");
263 // compData12.setDescription("comp12 desc");
264 // component12.setComponentCompositionData(compData12);
266 // String component12Id = nicManager.createComponent(component12).getId();
267 // testCreate(VSP_ID, component12Id, NETWORK1_ID, NETWORK1_ID.getNetworkCompositionData().getName());
270 // @Test(dependsOnMethods = {"testCreate"})
271 // public void testCreateWithExistingNameUnderOtherVsp() {
272 // testCreate(vsp2Id, component21Id, network2.getId(), network2.getNetworkCompositionData().getName());
276 public void testCreateOnUploadVsp_negative() {
278 testCreate_negative(new NicEntity(VSP_ID, VERSION, COMPONENT_ID, null),
279 VendorSoftwareProductErrorCodes.ADD_NIC_NOT_ALLOWED_IN_HEAT_ONBOARDING);
283 public void testUpdateNonExistingNicId_negative() {
284 doReturn(null).when(nicDao).get(anyObject());
286 testUpdate_negative(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID,
287 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
291 public void testUpdateOnUploadVsp() {
292 doReturn(createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID))
293 .when(nicDao).get(anyObject());
295 doReturn(new CompositionEntityValidationData(CompositionEntityType.nic, NIC1_ID))
296 .when(compositionEntityDataManagerMock)
297 .validateEntity(anyObject(), anyObject(), anyObject());
299 NicEntity nicEntity = new NicEntity(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID);
300 Nic nicData = new Nic();
301 nicData.setName(NIC1_ID + " name");
302 nicData.setDescription(NIC1_ID + " desc updated");
303 nicData.setNetworkId(NETWORK1_ID);
304 nicEntity.setNicCompositionData(nicData);
306 CompositionEntityValidationData validationData =
307 nicManager.updateNic(nicEntity);
308 Assert.assertTrue(validationData == null || validationData.getErrors() == null);
309 verify(nicDao).update(nicEntity);
313 public void testIllegalUpdateOnUploadVsp() {
314 doReturn(createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID))
315 .when(nicDao).get(anyObject());
317 CompositionEntityValidationData toBeReturned =
318 new CompositionEntityValidationData(CompositionEntityType.nic, NIC1_ID);
319 toBeReturned.setErrors(Arrays.asList("error1", "error2"));
320 doReturn(toBeReturned)
321 .when(compositionEntityDataManagerMock)
322 .validateEntity(anyObject(), anyObject(), anyObject());
324 NicEntity nicEntity = new NicEntity(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID);
325 Nic nicData = new Nic();
326 nicData.setName(NIC1_ID + "_name_updated");
327 nicData.setDescription(NIC1_ID + " desc updated");
328 nicData.setNetworkId(NETWORK1_ID);
329 nicEntity.setNicCompositionData(nicData);
331 CompositionEntityValidationData validationData = nicManager.updateNic(nicEntity);
332 Assert.assertNotNull(validationData);
333 Assert.assertEquals(validationData.getErrors().size(), 2);
335 verify(nicDao, never()).update(nicEntity);
339 public void testUpdateIncorrectNameFormat() {
340 doReturn(createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID))
341 .when(nicDao).get(anyObject());
343 CompositionEntityValidationData toBeReturned =
344 new CompositionEntityValidationData(CompositionEntityType.nic, NIC1_ID);
345 toBeReturned.setErrors(Arrays.asList("error1", "error2"));
346 doReturn(toBeReturned)
347 .when(compositionEntityDataManagerMock)
348 .validateEntity(anyObject(), anyObject(), anyObject());
349 doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject());
351 NicEntity nicEntity = new NicEntity(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID);
352 Nic nicData = new Nic();
353 nicData.setName(NIC1_ID + "_name_updated/*");
354 nicData.setDescription(NIC1_ID + " desc updated");
355 nicData.setNetworkId(NETWORK1_ID);
356 nicEntity.setNicCompositionData(nicData);
359 nicManager.updateNic(nicEntity);
361 } catch (CoreException ex) {
363 Assert.assertEquals(VendorSoftwareProductErrorCodes.NIC_NAME_FORMAT_NOT_ALLOWED,
370 public void testGetNonExistingNicId_negative() {
371 testGet_negative(VSP_ID, VERSION, COMPONENT_ID, "non existing nic id",
372 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
377 public void testGet() {
378 NicEntity expected = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
379 doReturn(expected).when(nicDao).get(anyObject());
380 String compositionSchema = "schema string";
381 doReturn(compositionSchema).when(nicManager).getNicCompositionSchema(anyObject());
383 CompositionEntityResponse<Nic> response =
384 nicManager.getNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID);
385 Assert.assertEquals(response.getId(), expected.getId());
386 Assert.assertEquals(response.getData(), expected.getNicCompositionData());
387 Assert.assertEquals(response.getSchema(), compositionSchema);
391 @Test(dependsOnMethods = {"testUpdateOnUploadVsp", "testList"})
392 public void testCreateWithRemovedName() {
393 testCreate(VSP_ID, COMPONENT_ID);
397 public void testDeleteNonExistingNicId_negative() {
398 testDelete_negative(VSP_ID, COMPONENT_ID, "non existing nic id", VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
401 @Test(dependsOnMethods = "testList")
402 public void testDeleteNonExistingComponentId_negative() {
403 testDelete_negative(VSP_ID, "non existing component id", NIC1_ID, VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
407 @Test(dependsOnMethods = "testList")
408 public void testDelete() {
409 nicManager.deleteNic(VSP_ID, COMPONENT_ID, NIC1_ID);
410 NicEntity actual = vendorSoftwareProductDao.getNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID);
411 Assert.assertNull(actual);
415 public void testDeleteOnUploadVsp_negative() {
416 testDelete_negative(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID,
417 VendorSoftwareProductErrorCodes.DELETE_NIC_NOT_ALLOWED);
420 @Test(expectedExceptions = CoreException.class,
421 expectedExceptionsMessageRegExp = NIC_NOT_EXIST_MSG)
422 public void testGetNonExistingNicQuestionnaire() throws Exception {
423 nicManager.getNicQuestionnaire(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID);
427 public void testGetQuestionnaire() throws Exception {
428 NicEntity nic = new NicEntity(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID);
429 nic.setQuestionnaireData("{}");
430 doReturn(nic).when(nicDao).getQuestionnaireData(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID);
432 String schema = "schema string";
433 doReturn(schema).when(nicManager).getNicQuestionnaireSchema(anyObject());
435 QuestionnaireResponse questionnaire =
436 nicManager.getNicQuestionnaire(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID);
437 Assert.assertNotNull(questionnaire);
438 Assert.assertEquals(questionnaire.getData(), nic.getQuestionnaireData());
439 Assert.assertEquals(questionnaire.getSchema(), schema);
440 Assert.assertNull(questionnaire.getErrorMessage());
443 @Test(expectedExceptions = CoreException.class,
444 expectedExceptionsMessageRegExp = NIC_NOT_EXIST_MSG)
445 public void testUpdateNonExistingNicQuestionnaire() throws Exception {
446 doReturn(null).when(nicDao).get(anyObject());
448 .updateNicQuestionnaire(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, "questionnaire data");
452 public void testUpdateQuestionnaire() throws Exception {
456 private void testCreate_negative(NicEntity nic, String expectedErrorCode) {
458 nicManager.createNic(nic);
460 } catch (CoreException exception) {
461 log.debug("", exception);
462 Assert.assertEquals(exception.code().id(), expectedErrorCode);
466 private void testGet_negative(String vspId, Version version, String componentId, String nicId,
467 String expectedErrorCode) {
469 nicManager.getNic(vspId, version, componentId, nicId);
471 } catch (CoreException exception) {
472 log.debug("", exception);
473 Assert.assertEquals(exception.code().id(), expectedErrorCode);
477 private void testUpdate_negative(String vspId, Version version, String componentId, String nicId,
478 String expectedErrorCode) {
480 nicManager.updateNic(new NicEntity(vspId, version, componentId, nicId));
482 } catch (CoreException exception) {
483 log.debug("", exception);
484 Assert.assertEquals(exception.code().id(), expectedErrorCode);
488 private void testDelete_negative(String vspId, Version version, String componentId, String nicId,
489 String expectedErrorCode) {
491 nicManager.deleteNic(vspId, version, componentId, nicId);
493 } catch (CoreException exception) {
494 log.debug("", exception);
495 Assert.assertEquals(exception.code().id(), expectedErrorCode);
499 static NicEntity createNic(String vspId, Version version, String compId, String nicId,
501 NicEntity nicEntity = new NicEntity(vspId, version, compId, nicId);
502 Nic nicData = new Nic();
503 nicData.setName(nicId + "_name");
504 nicData.setDescription(nicId + " desc");
505 nicData.setNetworkId(networkId);
506 nicEntity.setNicCompositionData(nicData);