aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/api/openecomp-sdc-rest-webapp
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/api/openecomp-sdc-rest-webapp')
-rw-r--r--openecomp-be/api/openecomp-sdc-rest-webapp/openecomp-sdc-common-rest/src/main/resources/errorCodesToResponseStatusMapping.json2
-rw-r--r--openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/exception/VendorLicenseModelExceptionSupplier.java87
-rw-r--r--openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/services/VendorLicenseModelsImpl.java107
-rw-r--r--openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/test/java/org/openecomp/sdcrests/vendorlicense/rest/services/VendorLicenseModelsImplTest.java199
4 files changed, 372 insertions, 23 deletions
diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/openecomp-sdc-common-rest/src/main/resources/errorCodesToResponseStatusMapping.json b/openecomp-be/api/openecomp-sdc-rest-webapp/openecomp-sdc-common-rest/src/main/resources/errorCodesToResponseStatusMapping.json
index 5b2e808781..3d2a48107f 100644
--- a/openecomp-be/api/openecomp-sdc-rest-webapp/openecomp-sdc-common-rest/src/main/resources/errorCodesToResponseStatusMapping.json
+++ b/openecomp-be/api/openecomp-sdc-rest-webapp/openecomp-sdc-common-rest/src/main/resources/errorCodesToResponseStatusMapping.json
@@ -19,6 +19,8 @@
"PACKAGE_NOT_FOUND": "NOT_FOUND",
"PACKAGE_INVALID": "BAD_REQUEST",
"VENDOR_LICENSE_MODEL_NOT_FOUND": "NOT_FOUND",
+ "VLM_IS_IN_USE_DELETE_ERROR": "FORBIDDEN",
+ "VLM_IS_CERTIFIED_DELETE_ERROR": "FORBIDDEN",
"VENDOR_LICENSE_ENTITY_NOT_FOUND": "NOT_FOUND",
"VERSIONABLE_SUB_ENTITY_NOT_FOUND": "NOT_FOUND",
"FEATURE_GROUP_NOT_EXIST_FOR_VSP": "NOT_FOUND",
diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/exception/VendorLicenseModelExceptionSupplier.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/exception/VendorLicenseModelExceptionSupplier.java
new file mode 100644
index 0000000000..330a2dd4d1
--- /dev/null
+++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/exception/VendorLicenseModelExceptionSupplier.java
@@ -0,0 +1,87 @@
+/*
+ * -
+ * ============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.exception;
+
+import static org.openecomp.sdc.vendorlicense.errors.VendorLicenseErrorCodes.VLM_IS_CERTIFIED_DELETE_ERROR;
+import static org.openecomp.sdc.vendorlicense.errors.VendorLicenseErrorCodes.VLM_IS_IN_USE_DELETE_ERROR;
+
+import java.util.List;
+import java.util.function.Supplier;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import org.openecomp.sdc.common.errors.CoreException;
+import org.openecomp.sdc.common.errors.ErrorCode;
+import org.openecomp.sdc.common.errors.ErrorCode.ErrorCodeBuilder;
+import org.openecomp.sdc.vendorlicense.errors.VendorLicenseModelNotFoundErrorBuilder;
+
+/**
+ * Supplies exceptions happened for a Vendor License Model operation .
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public class VendorLicenseModelExceptionSupplier {
+
+ /**
+ * Provides a could not find Vendor License Model exception.
+ *
+ * @param vlmId the Vendor License Model id
+ * @return a Supplier for the exception
+ */
+ public static Supplier<CoreException> couldNotFindVlm(final String vlmId) {
+ final ErrorCode errorCode = new VendorLicenseModelNotFoundErrorBuilder(vlmId).build();
+ return () -> new CoreException((errorCode));
+ }
+
+ /**
+ * Provides a cannot delete used Vendor License Model exception.
+ *
+ * @param vmlId the Vendor License Model id
+ * @param vspNameList the list of VSP names that uses the VLM
+ * @return a Supplier for the exception
+ */
+ public static Supplier<CoreException> cantDeleteUsedVlm(final String vmlId, final List<String> vspNameList) {
+ final String errorMsg = String.format(
+ "Vendor License Model '%s' is in use by %s Vendor Software Product(s) and cannot be deleted.",
+ vmlId, String.join(", ", vspNameList)
+ );
+ final ErrorCode errorCode = new ErrorCodeBuilder()
+ .withId(VLM_IS_IN_USE_DELETE_ERROR)
+ .withMessage(errorMsg)
+ .build();
+ return () -> new CoreException((errorCode));
+ }
+
+ /**
+ * Provides a cannot delete certified Vendor License Model exception.
+ *
+ * @param vmlId the Vendor License Model id
+ * @return a Supplier for the exception
+ */
+ public static Supplier<CoreException> cantDeleteCertifiedVlm(final String vmlId) {
+ final String errorMsg = String.format("Vendor License Model '%s' has been certified and cannot be deleted.", vmlId);
+ final ErrorCode errorCode = new ErrorCodeBuilder()
+ .withId(VLM_IS_CERTIFIED_DELETE_ERROR)
+ .withMessage(errorMsg)
+ .build();
+ return () -> new CoreException((errorCode));
+ }
+
+}
diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/services/VendorLicenseModelsImpl.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/services/VendorLicenseModelsImpl.java
index 0255b14753..f4e638c07b 100644
--- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/services/VendorLicenseModelsImpl.java
+++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/services/VendorLicenseModelsImpl.java
@@ -23,10 +23,12 @@ import static org.openecomp.sdc.versioning.VersioningNotificationConstansts.VERS
import static org.openecomp.sdc.versioning.VersioningNotificationConstansts.VERSION_NAME;
import static org.openecomp.sdcrests.vendorlicense.types.VendorLicenseModelActionRequestDto.VendorLicenseModelAction.Submit;
+import java.util.Collection;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
-import java.util.Objects;
import java.util.function.Predicate;
+import java.util.stream.Collectors;
import javax.inject.Named;
import javax.ws.rs.core.Response;
import org.openecomp.core.dao.UniqueValueDaoFactory;
@@ -35,8 +37,6 @@ import org.openecomp.sdc.activitylog.ActivityLogManager;
import org.openecomp.sdc.activitylog.ActivityLogManagerFactory;
import org.openecomp.sdc.activitylog.dao.type.ActivityLogEntity;
import org.openecomp.sdc.activitylog.dao.type.ActivityType;
-import org.openecomp.sdc.common.errors.CoreException;
-import org.openecomp.sdc.common.errors.ErrorCode;
import org.openecomp.sdc.common.errors.Messages;
import org.openecomp.sdc.datatypes.model.ItemType;
import org.openecomp.sdc.healing.factory.HealingManagerFactory;
@@ -52,6 +52,9 @@ import org.openecomp.sdc.vendorlicense.VendorLicenseConstants;
import org.openecomp.sdc.vendorlicense.VendorLicenseManager;
import org.openecomp.sdc.vendorlicense.VendorLicenseManagerFactory;
import org.openecomp.sdc.vendorlicense.dao.types.VendorLicenseModelEntity;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDaoFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
import org.openecomp.sdc.versioning.AsdcItemManager;
import org.openecomp.sdc.versioning.AsdcItemManagerFactory;
import org.openecomp.sdc.versioning.VersioningManager;
@@ -67,6 +70,7 @@ import org.openecomp.sdcrests.item.types.ItemCreationDto;
import org.openecomp.sdcrests.item.types.ItemDto;
import org.openecomp.sdcrests.item.types.VersionDto;
import org.openecomp.sdcrests.vendorlicense.rest.VendorLicenseModels;
+import org.openecomp.sdcrests.vendorlicense.rest.exception.VendorLicenseModelExceptionSupplier;
import org.openecomp.sdcrests.vendorlicense.rest.mapping.MapVendorLicenseModelEntityToDto;
import org.openecomp.sdcrests.vendorlicense.rest.mapping.MapVendorLicenseModelRequestDtoToVendorLicenseModelEntity;
import org.openecomp.sdcrests.vendorlicense.types.VendorLicenseModelActionRequestDto;
@@ -86,13 +90,55 @@ public class VendorLicenseModelsImpl implements VendorLicenseModels {
private static final String SUBMIT_ITEM_ACTION = "Submit_Item";
private static final String SUBMIT_HEALED_VERSION_ERROR = "VLM Id %s: Error while submitting version %s created based on Certified version %s for healing purpose.";
private static final Logger LOGGER = LoggerFactory.getLogger(VendorLicenseModelsImpl.class);
- private PermissionsManager permissionsManager = PermissionsManagerFactory.getInstance().createInterface();
- private NotificationPropagationManager notifier = NotificationPropagationManagerFactory.getInstance().createInterface();
- private AsdcItemManager asdcItemManager = AsdcItemManagerFactory.getInstance().createInterface();
- private VersioningManager versioningManager = VersioningManagerFactory.getInstance().createInterface();
- private VendorLicenseManager vendorLicenseManager = VendorLicenseManagerFactory.getInstance().createInterface();
- private ActivityLogManager activityLogManager = ActivityLogManagerFactory.getInstance().createInterface();
- private UniqueValueUtil uniqueValueUtil = new UniqueValueUtil(UniqueValueDaoFactory.getInstance().createInterface());
+
+ private final PermissionsManager permissionsManager;
+ private final NotificationPropagationManager notifier;
+ private final AsdcItemManager asdcItemManager;
+ private final VersioningManager versioningManager;
+ private final VendorLicenseManager vendorLicenseManager;
+ private final ActivityLogManager activityLogManager;
+ private final UniqueValueUtil uniqueValueUtil;
+ private final VendorSoftwareProductInfoDao vendorSoftwareProductInfoDao;
+
+ public VendorLicenseModelsImpl() {
+ this.permissionsManager = PermissionsManagerFactory.getInstance().createInterface();
+ this.notifier = NotificationPropagationManagerFactory.getInstance().createInterface();
+ this.asdcItemManager = AsdcItemManagerFactory.getInstance().createInterface();
+ this.versioningManager = VersioningManagerFactory.getInstance().createInterface();
+ this.vendorLicenseManager = VendorLicenseManagerFactory.getInstance().createInterface();
+ this.activityLogManager = ActivityLogManagerFactory.getInstance().createInterface();
+ this.uniqueValueUtil = new UniqueValueUtil(UniqueValueDaoFactory.getInstance().createInterface());
+ this.vendorSoftwareProductInfoDao = VendorSoftwareProductInfoDaoFactory.getInstance().createInterface();
+ }
+
+ /**
+ * Test purpose constructor.
+ * @param permissionsManager the {@link PermissionsManager} instance
+ * @param notifier the {@link NotificationPropagationManager} instance
+ * @param asdcItemManager the {@link AsdcItemManager} instance
+ * @param versioningManager the {@link VersioningManager} instance
+ * @param vendorLicenseManager the {@link VendorLicenseManager} instance
+ * @param activityLogManager the {@link ActivityLogManager} instance
+ * @param uniqueValueUtil the {@link UniqueValueUtil} instance
+ * @param vendorSoftwareProductInfoDao the {@link VendorSoftwareProductInfoDao} instance
+ */
+ VendorLicenseModelsImpl(final PermissionsManager permissionsManager,
+ final NotificationPropagationManager notifier,
+ final AsdcItemManager asdcItemManager,
+ final VersioningManager versioningManager,
+ final VendorLicenseManager vendorLicenseManager,
+ final ActivityLogManager activityLogManager,
+ final UniqueValueUtil uniqueValueUtil,
+ final VendorSoftwareProductInfoDao vendorSoftwareProductInfoDao) {
+ this.permissionsManager = permissionsManager;
+ this.notifier = notifier;
+ this.asdcItemManager = asdcItemManager;
+ this.versioningManager = versioningManager;
+ this.vendorLicenseManager = vendorLicenseManager;
+ this.activityLogManager = activityLogManager;
+ this.uniqueValueUtil = uniqueValueUtil;
+ this.vendorSoftwareProductInfoDao = vendorSoftwareProductInfoDao;
+ }
@Override
public Response listLicenseModels(String versionStatus, String itemStatus, String user) {
@@ -158,21 +204,28 @@ public class VendorLicenseModelsImpl implements VendorLicenseModels {
}
@Override
- public Response deleteLicenseModel(String vlmId, String user) {
- Item vlm = asdcItemManager.get(vlmId);
- if (!vlm.getType().equals(ItemType.vlm.name())) {
- throw new CoreException((new ErrorCode.ErrorCodeBuilder().withMessage(String.format("Vlm with id %s does not exist.", vlmId)).build()));
+ public Response deleteLicenseModel(final String vlmId, final String user) {
+ final Item vlm = asdcItemManager.get(vlmId);
+ if (vlm == null || !ItemType.vlm.getName().equals(vlm.getType())) {
+ throw VendorLicenseModelExceptionSupplier.couldNotFindVlm(vlmId).get();
}
- Integer certifiedVersionsCounter = vlm.getVersionStatusCounters().get(VersionStatus.Certified);
- if (Objects.isNull(certifiedVersionsCounter) || certifiedVersionsCounter == 0) {
- asdcItemManager.delete(vlm);
- permissionsManager.deleteItemPermissions(vlmId);
- uniqueValueUtil.deleteUniqueValue(VendorLicenseConstants.UniqueValues.VENDOR_NAME, vlm.getName());
- notifyUsers(vlmId, vlm.getName(), null, null, user, NotificationEventTypes.DELETE);
- return Response.ok().build();
- } else {
- return Response.status(Response.Status.FORBIDDEN).entity(new Exception(Messages.DELETE_VLM_ERROR.getErrorMessage())).build();
+
+ final List<String> vlmUsedByAnyVsp = findVspsUsingVlm(vlm.getId());
+ if (!vlmUsedByAnyVsp.isEmpty()) {
+ throw VendorLicenseModelExceptionSupplier.cantDeleteUsedVlm(vlmId, vlmUsedByAnyVsp).get();
}
+
+ final Integer certifiedVersionsCounter = vlm.getVersionStatusCounters().get(VersionStatus.Certified);
+ final boolean wasVlmAtLeastOnceCertified = certifiedVersionsCounter != null && certifiedVersionsCounter > 0;
+ if (wasVlmAtLeastOnceCertified) {
+ throw VendorLicenseModelExceptionSupplier.cantDeleteCertifiedVlm(vlmId).get();
+ }
+
+ asdcItemManager.delete(vlm);
+ permissionsManager.deleteItemPermissions(vlmId);
+ uniqueValueUtil.deleteUniqueValue(VendorLicenseConstants.UniqueValues.VENDOR_NAME, vlm.getName());
+ notifyUsers(vlmId, vlm.getName(), null, null, user, NotificationEventTypes.DELETE);
+ return Response.ok().build();
}
@Override
@@ -189,6 +242,14 @@ public class VendorLicenseModelsImpl implements VendorLicenseModels {
return Response.ok().build();
}
+ private List<String> findVspsUsingVlm(final String vlmId) {
+ final Collection<VspDetails> vspDetailsList = vendorSoftwareProductInfoDao.list(null);
+ return vspDetailsList.stream()
+ .filter(vspDetails -> vlmId.equals(vspDetails.getVendorId()))
+ .map(VspDetails::getName)
+ .collect(Collectors.toList());
+ }
+
private void submit(String vlmId, Version version, String message, String user) {
vendorLicenseManager.validate(vlmId, version);
versioningManager.submit(vlmId, version, message);
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