diff options
author | 2022-04-13 11:21:15 +0100 | |
---|---|---|
committer | 2022-04-21 09:48:05 +0000 | |
commit | 30ff812c65389f5ca4c91d9774d425e81ef62049 (patch) | |
tree | b7d293c23621df6c1084b9ff7dbde9c7d7d888ac /openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/test | |
parent | 225dabdf0812d1a3d9eb3a96740507744bb2b807 (diff) |
Check if VLM is used before deleting
Checks if the VLM is in use by any VSP before allowing to delete it.
Add unit tests for the delete method, considering the restriction.
Applies minor refactors with related code.
Change-Id: I4ff6ddf3959a4ca92ab68b29c8913fc6f0ebdb3c
Issue-ID: SDC-3966
Signed-off-by: andre.schmid <andre.schmid@est.tech>
Diffstat (limited to 'openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/test')
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 |