diff options
Diffstat (limited to 'openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/test/java/org/openecomp/sdcrests/vendorlicense/rest/services/VendorLicenseModelsImplTest.java')
1 files changed, 199 insertions, 0 deletions
diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/test/java/org/openecomp/sdcrests/vendorlicense/rest/services/VendorLicenseModelsImplTest.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/test/java/org/openecomp/sdcrests/vendorlicense/rest/services/VendorLicenseModelsImplTest.java new file mode 100644 index 0000000000..48cb42d160 --- /dev/null +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/test/java/org/openecomp/sdcrests/vendorlicense/rest/services/VendorLicenseModelsImplTest.java @@ -0,0 +1,199 @@ +/* + * - + * ============LICENSE_START======================================================= + * Copyright (C) 2022 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdcrests.vendorlicense.rest.services; + + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.Status; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.openecomp.core.util.UniqueValueUtil; +import org.openecomp.sdc.activitylog.ActivityLogManager; +import org.openecomp.sdc.common.errors.CoreException; +import org.openecomp.sdc.datatypes.model.ItemType; +import org.openecomp.sdc.itempermissions.PermissionsManager; +import org.openecomp.sdc.notification.dtos.Event; +import org.openecomp.sdc.notification.services.NotificationPropagationManager; +import org.openecomp.sdc.vendorlicense.VendorLicenseConstants; +import org.openecomp.sdc.vendorlicense.VendorLicenseManager; +import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; +import org.openecomp.sdc.versioning.AsdcItemManager; +import org.openecomp.sdc.versioning.VersioningManager; +import org.openecomp.sdc.versioning.dao.types.VersionStatus; +import org.openecomp.sdc.versioning.types.Item; +import org.openecomp.sdcrests.vendorlicense.rest.exception.VendorLicenseModelExceptionSupplier; + +class VendorLicenseModelsImplTest { + + @Mock + private PermissionsManager permissionsManager; + @Mock + private NotificationPropagationManager notifier; + @Mock + private AsdcItemManager asdcItemManager; + @Mock + private VersioningManager versioningManager; + @Mock + private VendorLicenseManager vendorLicenseManager; + @Mock + private ActivityLogManager activityLogManager; + @Mock + private UniqueValueUtil uniqueValueUtil; + @Mock + private VendorSoftwareProductInfoDao vendorSoftwareProductInfoDao; + + @InjectMocks + private VendorLicenseModelsImpl vendorLicenseModels; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + } + + @Test + void deleteLicenseModelSuccessTest() { + //given + final String vlmId = "vlmId"; + final String vlmName = "vlmName"; + final String userId = "userId"; + + final Item vlmItem = new Item(); + vlmItem.setId(vlmId); + vlmItem.setType(ItemType.vlm.getName()); + vlmItem.setName(vlmName); + when(asdcItemManager.get(vlmId)).thenReturn(vlmItem); + + final VspDetails vspDetailsThatDontUseVlm1 = new VspDetails(); + vspDetailsThatDontUseVlm1.setVendorId("otherVendorId"); + final VspDetails vspDetailsThatDontUseVlm2 = new VspDetails(); + vspDetailsThatDontUseVlm2.setVendorId("otherVendorId"); + final List<VspDetails> vspDetailsList = List.of(vspDetailsThatDontUseVlm1, vspDetailsThatDontUseVlm2); + when(vendorSoftwareProductInfoDao.list(null)).thenReturn(vspDetailsList); + + //when + final Response response = vendorLicenseModels.deleteLicenseModel(vlmId, userId); + //then + assertEquals(Status.OK.getStatusCode(), response.getStatus()); + verify(asdcItemManager).delete(vlmItem); + verify(permissionsManager).deleteItemPermissions(vlmItem.getId()); + verify(uniqueValueUtil).deleteUniqueValue(VendorLicenseConstants.UniqueValues.VENDOR_NAME, vlmItem.getName()); + verify(notifier).notifySubscribers(any(Event.class), eq(userId)); + } + + @Test + void deleteLicenseModel_cantDeleteVlmInUseTest() { + //given + final String vlmId = "vlmId"; + final String vlmName = "vlmName"; + final String userId = "userId"; + + final Item vlmItem = new Item(); + vlmItem.setId(vlmId); + vlmItem.setType(ItemType.vlm.getName()); + vlmItem.setName(vlmName); + when(asdcItemManager.get(vlmId)).thenReturn(vlmItem); + + final VspDetails vspDetailsThatUsesVlm = new VspDetails(); + vspDetailsThatUsesVlm.setName("VspThatUsesVlm"); + vspDetailsThatUsesVlm.setVendorId(vlmId); + final VspDetails vspDetailsThatDontUseVlm = new VspDetails(); + vspDetailsThatDontUseVlm.setName("VspThatDontUseVlm"); + vspDetailsThatDontUseVlm.setVendorId("otherVendorId"); + final List<VspDetails> vspDetailsList = List.of(vspDetailsThatUsesVlm, vspDetailsThatDontUseVlm); + when(vendorSoftwareProductInfoDao.list(null)).thenReturn(vspDetailsList); + + //when + final CoreException actualException = assertThrows(CoreException.class, () -> vendorLicenseModels.deleteLicenseModel(vlmId, userId)); + //then + final CoreException expectedException = + VendorLicenseModelExceptionSupplier.cantDeleteUsedVlm(vlmId, List.of(vspDetailsThatUsesVlm.getName())).get(); + assertEquals(expectedException.code().id(), actualException.code().id()); + assertEquals(expectedException.code().message(), actualException.code().message()); + assertEquals(expectedException.code().category(), actualException.code().category()); + verify(asdcItemManager, never()).delete(vlmItem); + verify(permissionsManager, never()).deleteItemPermissions(vlmItem.getId()); + verify(uniqueValueUtil, never()).deleteUniqueValue(VendorLicenseConstants.UniqueValues.VENDOR_NAME, vlmItem.getName()); + verify(notifier, never()).notifySubscribers(any(Event.class), eq(userId)); + } + + @Test + void deleteLicenseModel_cantDeleteCertifiedTest() { + //given + final String vlmId = "vlmId"; + final String vlmName = "vlmName"; + final String userId = "userId"; + + final Item vlmItem = new Item(); + vlmItem.setId(vlmId); + vlmItem.setType(ItemType.vlm.getName()); + vlmItem.setName(vlmName); + vlmItem.setVersionStatusCounters(Map.of(VersionStatus.Certified, 1)); + when(asdcItemManager.get(vlmId)).thenReturn(vlmItem); + when(vendorSoftwareProductInfoDao.list(null)).thenReturn(Collections.emptyList()); + + //when + final CoreException actualException = assertThrows(CoreException.class, () -> vendorLicenseModels.deleteLicenseModel(vlmId, userId)); + //then + final CoreException expectedException = VendorLicenseModelExceptionSupplier.cantDeleteCertifiedVlm(vlmId).get(); + assertEquals(expectedException.code().id(), actualException.code().id()); + assertEquals(expectedException.code().message(), actualException.code().message()); + assertEquals(expectedException.code().category(), actualException.code().category()); + verify(asdcItemManager, never()).delete(vlmItem); + verify(permissionsManager, never()).deleteItemPermissions(vlmItem.getId()); + verify(uniqueValueUtil, never()).deleteUniqueValue(VendorLicenseConstants.UniqueValues.VENDOR_NAME, vlmItem.getName()); + verify(notifier, never()).notifySubscribers(any(Event.class), eq(userId)); + } + + @Test + void deleteLicenseModel_incorrectItemTypeTest() { + //given + final String vlmId = "vlmId"; + + final Item vlmItem = new Item(); + vlmItem.setId(vlmId); + vlmItem.setType("incorrectType"); + when(asdcItemManager.get(vlmId)).thenReturn(vlmItem); + + //when/then + final CoreException actualException = assertThrows(CoreException.class, () -> vendorLicenseModels.deleteLicenseModel(vlmId, "userId")); + + final CoreException expectedException = VendorLicenseModelExceptionSupplier.couldNotFindVlm(vlmId).get(); + assertEquals(expectedException.code().id(), actualException.code().id()); + assertEquals(expectedException.code().message(), actualException.code().message()); + } + +}
\ No newline at end of file |