1 package org.openecomp.sdc.vendorsoftwareproduct.impl;
3 import static org.mockito.Matchers.anyObject;
4 import static org.mockito.Mockito.doReturn;
5 import static org.mockito.Mockito.never;
6 import static org.mockito.Mockito.verify;
8 import org.mockito.InjectMocks;
9 import org.mockito.Mock;
10 import org.mockito.MockitoAnnotations;
11 import org.mockito.Spy;
12 import org.openecomp.sdc.common.errors.CoreException;
13 import org.openecomp.sdc.logging.api.Logger;
14 import org.openecomp.sdc.logging.api.LoggerFactory;
15 import org.openecomp.sdc.vendorsoftwareproduct.NetworkManager;
16 import org.openecomp.sdc.vendorsoftwareproduct.dao.NicDao;
17 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
18 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NetworkEntity;
19 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity;
20 import org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductErrorCodes;
21 import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager;
22 import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse;
23 import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireResponse;
24 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityType;
25 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData;
26 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.NetworkType;
27 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Nic;
28 import org.openecomp.sdc.versioning.dao.types.Version;
29 import org.openecomp.sdc.versioning.errors.VersioningErrorCodes;
30 import org.testng.Assert;
31 import org.testng.annotations.BeforeMethod;
32 import org.testng.annotations.Test;
34 import java.util.ArrayList;
35 import java.util.Arrays;
36 import java.util.Collection;
38 public class NicManagerImplTest {
40 private final Logger log = (Logger) LoggerFactory.getLogger(this.getClass().getName());
42 private static final String NIC_NOT_EXIST_MSG =
43 "Vendor Software Product NIC with Id nic1 does not exist for Vendor Software Product with " +
44 "id VSP_ID and version 0.1";
46 private static final String USER = "nicTestUser";
47 private static final String VSP_ID = "VSP_ID";
48 private static final Version VERSION = new Version(0, 1);
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 testListWhenNone() {
74 Collection<NicEntity> nics = nicManager.listNics(VSP_ID, VERSION, COMPONENT_ID, USER);
75 Assert.assertEquals(nics.size(), 0);
79 public void testList() {
80 doReturn(Arrays.asList(
81 createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID),
82 createNic(VSP_ID, VERSION, COMPONENT_ID, NIC2_ID, NETWORK2_ID)))
83 .when(nicDao).list(anyObject());
85 NetworkEntity network1 = NetworkManagerImplTest.createNetwork(VSP_ID, VERSION, NETWORK1_ID);
86 NetworkEntity network2 = NetworkManagerImplTest.createNetwork(VSP_ID, VERSION, NETWORK2_ID);
87 doReturn(Arrays.asList(network1, network2))
88 .when(networkManagerMock).listNetworks(VSP_ID, VERSION, USER);
90 Collection<NicEntity> nics = nicManager.listNics(VSP_ID, VERSION, COMPONENT_ID, USER);
91 Assert.assertEquals(nics.size(), 2);
92 for (NicEntity nic : nics) {
93 Assert.assertEquals(nic.getNicCompositionData().getNetworkName(),
94 NIC1_ID.equals(nic.getId())
95 ? network1.getNetworkCompositionData().getName()
96 : network2.getNetworkCompositionData().getName());
101 public void testCreate() {
102 NicEntity nicEntity = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
103 Nic nic = nicEntity.getNicCompositionData();
104 nic.setNetworkType(NetworkType.Internal);
105 nicEntity.setNicCompositionData(nic);
106 doReturn(true).when(vspInfoDao).isManual(anyObject(),anyObject());
107 Collection<NicEntity> nicEntities = new ArrayList<>();
108 doReturn(nicEntities).when(nicDao).list(anyObject());
109 doReturn(nicEntity).when(compositionEntityDataManagerMock).createNic(anyObject());
111 NicEntity created = nicManager.createNic(nicEntity,USER);
112 Assert.assertNotNull(created);
116 public void testCreateWithIncorrectNicNameFormat() {
117 NicEntity nicEntity = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
118 Nic nic = nicEntity.getNicCompositionData();
119 nic.setNetworkType(NetworkType.Internal);
120 nicEntity.setNicCompositionData(nic);
121 doReturn(true).when(vspInfoDao).isManual(anyObject(),anyObject());
122 Collection<NicEntity> nicEntities = new ArrayList<>();
124 NicEntity nicEntityDiffName = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
125 Nic newNameNic = nicEntityDiffName.getNicCompositionData();
126 newNameNic.setName(NIC1_ID + "_Name/*");
127 nicEntityDiffName.setNicCompositionData(newNameNic);
128 nicEntities.add(nicEntityDiffName);
129 doReturn(nicEntities).when(nicDao).list(anyObject());
130 doReturn(nicEntity).when(compositionEntityDataManagerMock).createNic(anyObject());
133 NicEntity created = nicManager.createNic(nicEntity,USER);
134 } catch (CoreException exception) {
135 log.debug("",exception);
136 Assert.assertEquals(VendorSoftwareProductErrorCodes.NIC_NAME_FORMAT_NOT_ALLOWED,
137 exception.code().id());
142 public void testCreateWithDupNicName() {
143 NicEntity nicEntity = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
144 Nic nic = nicEntity.getNicCompositionData();
145 nic.setNetworkType(NetworkType.Internal);
146 nicEntity.setNicCompositionData(nic);
147 doReturn(true).when(vspInfoDao).isManual(anyObject(),anyObject());
148 Collection<NicEntity> nicEntities = new ArrayList<>();
150 NicEntity nicEntityDiffName = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
151 Nic newNameNic = nicEntityDiffName.getNicCompositionData();
152 newNameNic.setName(NIC1_ID + "_Name");
153 nicEntityDiffName.setNicCompositionData(newNameNic);
154 nicEntities.add(nicEntityDiffName);
155 doReturn(nicEntities).when(nicDao).list(anyObject());
156 doReturn(nicEntity).when(compositionEntityDataManagerMock).createNic(anyObject());
159 NicEntity created = nicManager.createNic(nicEntity,USER);
160 } catch (CoreException exception) {
161 log.debug("",exception);
162 Assert.assertEquals("Invalid request, NIC with name "+ nic.getName() +
163 " already exist for component with ID "+ nicEntity.getComponentId() +".",
164 exception.code().message());
165 Assert.assertEquals(VendorSoftwareProductErrorCodes.DUPLICATE_NIC_NAME_NOT_ALLOWED,
166 exception.code().id());
171 public void testCreateWithExternalNetworkType() {
172 NicEntity nicEntity = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
173 Nic nic = nicEntity.getNicCompositionData();
174 nic.setNetworkType(NetworkType.External);
175 nicEntity.setNicCompositionData(nic);
176 doReturn(true).when(vspInfoDao).isManual(anyObject(),anyObject());
177 Collection<NicEntity> nicEntities = new ArrayList<>();
178 doReturn(nicEntities).when(nicDao).list(anyObject());
179 doReturn(nicEntity).when(compositionEntityDataManagerMock).createNic(anyObject());
182 NicEntity created = nicManager.createNic(nicEntity,USER);
183 } catch (CoreException exception) {
184 log.debug("",exception);
185 Assert.assertEquals("Invalid request,NetworkId not allowed for External Networks",
186 exception.code().message());
187 Assert.assertEquals(VendorSoftwareProductErrorCodes.NETWORKID_NOT_ALLOWED_FOR_EXTERNAL_NETWORK,
188 exception.code().id());
193 public void testCreateWithNetworkDesc() {
194 NicEntity nicEntity = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
195 Nic nic = nicEntity.getNicCompositionData();
196 nic.setNetworkType(NetworkType.Internal);
197 nic.setNetworkDescription(NIC1_ID);
198 nicEntity.setNicCompositionData(nic);
199 doReturn(true).when(vspInfoDao).isManual(anyObject(),anyObject());
200 Collection<NicEntity> nicEntities = new ArrayList<>();
201 doReturn(nicEntities).when(nicDao).list(anyObject());
202 doReturn(nicEntity).when(compositionEntityDataManagerMock).createNic(anyObject());
205 NicEntity created = nicManager.createNic(nicEntity,USER);
206 } catch (CoreException exception) {
207 log.debug("",exception);
208 Assert.assertEquals("Invalid request, Network Description not allowed for Internal Networks",
209 exception.code().message());
210 Assert.assertEquals(VendorSoftwareProductErrorCodes
211 .NETWORK_DESCRIPTION_NOT_ALLOWED_FOR_INTERNAL_NETWORK,exception.code().id());
216 public void testDeleteNic() {
217 NicEntity nicEntity = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
218 doReturn(true).when(vspInfoDao).isManual(anyObject(),anyObject());
219 doReturn(nicEntity).when(nicDao).get(anyObject());
221 nicManager.deleteNic(VSP_ID,new Version(0,1),COMPONENT_ID,NIC1_ID,USER);
226 public void testUpdateNicQuestionnaire() {
227 NicEntity nicEntity = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
229 doReturn(nicEntity).when(nicDao).get(anyObject());
231 nicManager.updateNicQuestionnaire(VSP_ID,new Version(0,1),COMPONENT_ID,NIC1_ID,"Ques",USER);
235 // @Test(dependsOnMethods = "testListWhenNone")
236 // public void testCreate() {
237 // NIC1_ID = testCreate(VSP_ID, COMPONENT_ID, NETWORK1_ID, NETWORK1_ID.getNetworkCompositionData().getName());
240 /* @Test(dependsOnMethods = {"testCreate"})
241 public void testCreateWithExistingName_negative() {
242 NicEntity nic = new NicEntity(VSP_ID, null, COMPONENT_ID, null);
243 Nic nicData = new Nic();
244 nicData.setName("nic1 name");
245 nic.setNicCompositionData(nicData);
246 testCreate_negative(nic, USER, UniqueValueUtil.UNIQUE_VALUE_VIOLATION);
249 // @Test(dependsOnMethods = {"testCreate"})
250 // public void testCreateWithExistingNameUnderOtherComponent() {
251 // ComponentEntity component12 = new ComponentEntity(VSP_ID, null, null);
252 // ComponentData compData12 = new ComponentData();
253 // compData12.setName("comp12 name");
254 // compData12.setDescription("comp12 desc");
255 // component12.setComponentCompositionData(compData12);
257 // String component12Id = nicManager.createComponent(component12, USER).getId();
258 // testCreate(VSP_ID, component12Id, NETWORK1_ID, NETWORK1_ID.getNetworkCompositionData().getName());
261 // @Test(dependsOnMethods = {"testCreate"})
262 // public void testCreateWithExistingNameUnderOtherVsp() {
263 // testCreate(vsp2Id, component21Id, network2.getId(), network2.getNetworkCompositionData().getName());
267 public void testCreateOnUploadVsp_negative() {
269 testCreate_negative(new NicEntity(VSP_ID, VERSION, COMPONENT_ID, null), USER,
270 VendorSoftwareProductErrorCodes.ADD_NIC_NOT_ALLOWED_IN_HEAT_ONBOARDING);
274 public void testUpdateNonExistingNicId_negative() {
275 doReturn(null).when(nicDao).get(anyObject());
277 testUpdate_negative(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, USER,
278 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
282 public void testUpdateOnUploadVsp() {
283 doReturn(createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID))
284 .when(nicDao).get(anyObject());
286 doReturn(new CompositionEntityValidationData(CompositionEntityType.nic, NIC1_ID))
287 .when(compositionEntityDataManagerMock)
288 .validateEntity(anyObject(), anyObject(), anyObject());
290 NicEntity nicEntity = new NicEntity(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID);
291 Nic nicData = new Nic();
292 nicData.setName(NIC1_ID + " name");
293 nicData.setDescription(NIC1_ID + " desc updated");
294 nicData.setNetworkId(NETWORK1_ID);
295 nicEntity.setNicCompositionData(nicData);
297 CompositionEntityValidationData validationData =
298 nicManager.updateNic(nicEntity, USER);
299 Assert.assertTrue(validationData == null || validationData.getErrors() == null);
300 verify(nicDao).update(nicEntity);
304 public void testIllegalUpdateOnUploadVsp() {
305 doReturn(createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID))
306 .when(nicDao).get(anyObject());
308 CompositionEntityValidationData toBeReturned =
309 new CompositionEntityValidationData(CompositionEntityType.nic, NIC1_ID);
310 toBeReturned.setErrors(Arrays.asList("error1", "error2"));
311 doReturn(toBeReturned)
312 .when(compositionEntityDataManagerMock)
313 .validateEntity(anyObject(), anyObject(), anyObject());
315 NicEntity nicEntity = new NicEntity(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID);
316 Nic nicData = new Nic();
317 nicData.setName(NIC1_ID + "_name_updated");
318 nicData.setDescription(NIC1_ID + " desc updated");
319 nicData.setNetworkId(NETWORK1_ID);
320 nicEntity.setNicCompositionData(nicData);
322 CompositionEntityValidationData validationData = nicManager.updateNic(nicEntity, USER);
323 Assert.assertNotNull(validationData);
324 Assert.assertEquals(validationData.getErrors().size(), 2);
326 verify(nicDao, never()).update(nicEntity);
330 public void testUpdateIncorrectNameFormat() {
331 doReturn(createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID))
332 .when(nicDao).get(anyObject());
334 CompositionEntityValidationData toBeReturned =
335 new CompositionEntityValidationData(CompositionEntityType.nic, NIC1_ID);
336 toBeReturned.setErrors(Arrays.asList("error1", "error2"));
337 doReturn(toBeReturned)
338 .when(compositionEntityDataManagerMock)
339 .validateEntity(anyObject(), anyObject(), anyObject());
340 doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject());
342 NicEntity nicEntity = new NicEntity(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID);
343 Nic nicData = new Nic();
344 nicData.setName(NIC1_ID + "_name_updated/*");
345 nicData.setDescription(NIC1_ID + " desc updated");
346 nicData.setNetworkId(NETWORK1_ID);
347 nicEntity.setNicCompositionData(nicData);
350 nicManager.updateNic(nicEntity, USER);
353 catch (CoreException ex) {
355 Assert.assertEquals(VendorSoftwareProductErrorCodes.NIC_NAME_FORMAT_NOT_ALLOWED,
362 public void testGetNonExistingNicId_negative() {
363 testGet_negative(VSP_ID, VERSION, COMPONENT_ID, "non existing nic id", USER,
364 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
369 public void testGet() {
370 NicEntity expected = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID);
371 doReturn(expected).when(nicDao).get(anyObject());
372 String compositionSchema = "schema string";
373 doReturn(compositionSchema).when(nicManager).getNicCompositionSchema(anyObject());
375 CompositionEntityResponse<Nic> response =
376 nicManager.getNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, USER);
377 Assert.assertEquals(response.getId(), expected.getId());
378 Assert.assertEquals(response.getData(), expected.getNicCompositionData());
379 Assert.assertEquals(response.getSchema(), compositionSchema);
383 @Test(dependsOnMethods = {"testUpdateOnUploadVsp", "testList"})
384 public void testCreateWithRemovedName() {
385 testCreate(VSP_ID, COMPONENT_ID);
389 public void testDeleteNonExistingNicId_negative() {
390 testDelete_negative(VSP_ID, COMPONENT_ID, "non existing nic id", USER, VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
393 @Test(dependsOnMethods = "testList")
394 public void testDeleteNonExistingComponentId_negative() {
395 testDelete_negative(VSP_ID, "non existing component id", NIC1_ID, USER, VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
399 @Test(dependsOnMethods = "testList")
400 public void testDelete() {
401 nicManager.deleteNic(VSP_ID, COMPONENT_ID, NIC1_ID, USER);
402 NicEntity actual = vendorSoftwareProductDao.getNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID);
403 Assert.assertNull(actual);
407 public void testDeleteOnUploadVsp_negative() {
408 testDelete_negative(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, USER,
409 VendorSoftwareProductErrorCodes.DELETE_NIC_NOT_ALLOWED);
412 @Test(expectedExceptions = CoreException.class,
413 expectedExceptionsMessageRegExp = NIC_NOT_EXIST_MSG)
414 public void testGetNonExistingNicQuestionnaire() throws Exception {
415 nicManager.getNicQuestionnaire(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, USER);
419 public void testGetQuestionnaire() throws Exception {
420 NicEntity nic = new NicEntity(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID);
421 nic.setQuestionnaireData("{}");
422 doReturn(nic).when(nicDao).getQuestionnaireData(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID);
424 String schema = "schema string";
425 doReturn(schema).when(nicManager).getNicQuestionnaireSchema(anyObject());
427 QuestionnaireResponse questionnaire =
428 nicManager.getNicQuestionnaire(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, USER);
429 Assert.assertNotNull(questionnaire);
430 Assert.assertEquals(questionnaire.getData(), nic.getQuestionnaireData());
431 Assert.assertEquals(questionnaire.getSchema(), schema);
432 Assert.assertNull(questionnaire.getErrorMessage());
435 @Test(expectedExceptions = CoreException.class,
436 expectedExceptionsMessageRegExp = NIC_NOT_EXIST_MSG)
437 public void testUpdateNonExistingNicQuestionnaire() throws Exception {
438 doReturn(null).when(nicDao).get(anyObject());
440 .updateNicQuestionnaire(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, "questionnaire data", USER);
444 public void testUpdateQuestionnaire() throws Exception {
448 private void testCreate_negative(NicEntity nic, String user, String expectedErrorCode) {
450 nicManager.createNic(nic, user);
452 } catch (CoreException exception) {
453 log.debug("",exception);
454 Assert.assertEquals(exception.code().id(), expectedErrorCode);
458 private void testGet_negative(String vspId, Version version, String componentId, String nicId,
459 String user, String expectedErrorCode) {
461 nicManager.getNic(vspId, version, componentId, nicId, user);
463 } catch (CoreException exception) {
464 log.debug("",exception);
465 Assert.assertEquals(exception.code().id(), expectedErrorCode);
469 private void testUpdate_negative(String vspId, Version version, String componentId, String nicId,
470 String user, String expectedErrorCode) {
472 nicManager.updateNic(new NicEntity(vspId, version, componentId, nicId), user);
474 } catch (CoreException exception) {
475 log.debug("",exception);
476 Assert.assertEquals(exception.code().id(), expectedErrorCode);
480 private void testDelete_negative(String vspId, Version version, String componentId, String nicId,
482 String expectedErrorCode) {
484 nicManager.deleteNic(vspId, version, componentId, nicId, user);
486 } catch (CoreException exception) {
487 log.debug("",exception);
488 Assert.assertEquals(exception.code().id(), expectedErrorCode);
492 static NicEntity createNic(String vspId, Version version, String compId, String nicId,
494 NicEntity nicEntity = new NicEntity(vspId, version, compId, nicId);
495 Nic nicData = new Nic();
496 nicData.setName(nicId + "_name");
497 nicData.setDescription(nicId + " desc");
498 nicData.setNetworkId(networkId);
499 nicEntity.setNicCompositionData(nicData);