From aea64ba99fa9c9b51112b30aeb0872c4cdb89759 Mon Sep 17 00:00:00 2001 From: "andre.schmid" Date: Wed, 18 Aug 2021 14:34:33 +0100 Subject: Validate the Resource Model before importing VSP Validates the Resource Model selected during the Import VSP. This model must be aligned with one of the models that the imported VSP relates to. Fix VSP package retrieval to get the exact version from the VSP chosen during the Import VSP process. Introduces a client in the Catalog to retrieve from the Onboarding backend a VSP information using its Id and version Id. Change-Id: Ic8fb52b6daadc0e7203c81a9c15c3e46d5b9fffb Issue-ID: SDC-3675 Signed-off-by: andre.schmid --- .../model/config/ModelOperationsSpringConfig.java | 1 + .../mapper/VendorSoftwareProductMapperTest.java | 80 +++++++++++++++ .../model/operations/impl/CsarOperationTest.java | 112 +++++++++++++++++++++ .../test/resources/application-context-test.xml | 3 +- .../config/catalog-model/configuration.yaml | 1 - .../src/test/resources/config/configuration.yaml | 1 - 6 files changed, 195 insertions(+), 3 deletions(-) create mode 100644 catalog-model/src/test/java/org/openecomp/sdc/be/model/mapper/VendorSoftwareProductMapperTest.java create mode 100644 catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/CsarOperationTest.java (limited to 'catalog-model/src/test') diff --git a/catalog-model/src/test/java/org/openecomp/sdc/be/model/config/ModelOperationsSpringConfig.java b/catalog-model/src/test/java/org/openecomp/sdc/be/model/config/ModelOperationsSpringConfig.java index 929441cf01..28e17b5075 100644 --- a/catalog-model/src/test/java/org/openecomp/sdc/be/model/config/ModelOperationsSpringConfig.java +++ b/catalog-model/src/test/java/org/openecomp/sdc/be/model/config/ModelOperationsSpringConfig.java @@ -26,6 +26,7 @@ import org.springframework.context.annotation.PropertySource; @Configuration @ComponentScan({"org.openecomp.sdc.be.dao.cassandra", "org.openecomp.sdc.be.model.cache", + "org.openecomp.sdc.be.client", "org.openecomp.sdc.be.model.jsonjanusgraph.operations", "org.openecomp.sdc.be.model.jsonjanusgraph.utils", "org.openecomp.sdc.be.model.jsonjanusgraph.config", diff --git a/catalog-model/src/test/java/org/openecomp/sdc/be/model/mapper/VendorSoftwareProductMapperTest.java b/catalog-model/src/test/java/org/openecomp/sdc/be/model/mapper/VendorSoftwareProductMapperTest.java new file mode 100644 index 0000000000..92b4c82376 --- /dev/null +++ b/catalog-model/src/test/java/org/openecomp/sdc/be/model/mapper/VendorSoftwareProductMapperTest.java @@ -0,0 +1,80 @@ +/* + * - + * ============LICENSE_START======================================================= + * Copyright (C) 2021 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.sdc.be.model.mapper; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.ArrayList; +import java.util.List; +import org.junit.jupiter.api.Test; +import org.openecomp.sdc.be.model.VendorSoftwareProduct; +import org.openecomp.sdc.be.model.dto.VendorSoftwareProductDto; + +class VendorSoftwareProductMapperTest { + + @Test + void mapFromSuccess() { + final var vendorSoftwareProductDto = new VendorSoftwareProductDto(); + vendorSoftwareProductDto.setName("name"); + vendorSoftwareProductDto.setDescription("description"); + vendorSoftwareProductDto.setCategory("category"); + vendorSoftwareProductDto.setSubCategory("subcategory"); + vendorSoftwareProductDto.setVendorName("vendorName"); + vendorSoftwareProductDto.setVendorId("vendorId"); + vendorSoftwareProductDto.setSelectedModelList(List.of("model1", "model2")); + vendorSoftwareProductDto.setOnboardingMethod("onboardingMethod"); + vendorSoftwareProductDto.setId("id"); + vendorSoftwareProductDto.setVersionId("versionId"); + vendorSoftwareProductDto.setOnboardingOrigin("onboardingOrigin"); + vendorSoftwareProductDto.setNetworkPackageName("packageName"); + final VendorSoftwareProduct vendorSoftwareProduct = VendorSoftwareProductMapper.mapFrom(vendorSoftwareProductDto); + assertVendorSoftwareProduct(vendorSoftwareProduct, vendorSoftwareProductDto); + } + + @Test + void mapFromNullModelListShouldReturnEmptyModelList() { + final var vendorSoftwareProductDto = new VendorSoftwareProductDto(); + vendorSoftwareProductDto.setSelectedModelList(null); + final VendorSoftwareProduct vendorSoftwareProduct = VendorSoftwareProductMapper.mapFrom(vendorSoftwareProductDto); + assertVendorSoftwareProduct(vendorSoftwareProduct, vendorSoftwareProductDto); + } + + private void assertVendorSoftwareProduct(final VendorSoftwareProduct vendorSoftwareProduct, + final VendorSoftwareProductDto vendorSoftwareProductDto) { + assertEquals(vendorSoftwareProduct.getId(), vendorSoftwareProductDto.getId(), "id should be equals"); + assertEquals(vendorSoftwareProduct.getName(), vendorSoftwareProductDto.getName(), "name should be equals"); + assertEquals(vendorSoftwareProduct.getDescription(), vendorSoftwareProductDto.getDescription(), "description should be equals"); + assertEquals(vendorSoftwareProduct.getCategory(), vendorSoftwareProductDto.getCategory(), "category should be equals"); + assertEquals(vendorSoftwareProduct.getSubCategory(), vendorSoftwareProductDto.getSubCategory(), "subCategory should be equals"); + assertEquals(vendorSoftwareProduct.getVendorName(), vendorSoftwareProductDto.getVendorName(), "vendorName should be equals"); + assertEquals(vendorSoftwareProduct.getVendorId(), vendorSoftwareProductDto.getVendorId(), "vendorId should be equals"); + assertEquals(vendorSoftwareProduct.getOnboardingMethod(), vendorSoftwareProductDto.getOnboardingMethod(), "onboardingMethod should be equals"); + assertEquals(vendorSoftwareProduct.getOnboardingOrigin(), vendorSoftwareProductDto.getOnboardingOrigin(), "onboardingOrigin should be equals"); + assertEquals(vendorSoftwareProduct.getVersionId(), vendorSoftwareProductDto.getVersionId(), "versionId should be equals"); + assertEquals(vendorSoftwareProduct.getNetworkPackageName(), vendorSoftwareProductDto.getNetworkPackageName(), "networkPackageName should be equals"); + if (vendorSoftwareProductDto.getSelectedModelList() == null) { + assertTrue(vendorSoftwareProduct.getModelList().isEmpty(), "modelList should be an empty list"); + } else { + assertEquals(vendorSoftwareProduct.getModelList(), vendorSoftwareProductDto.getSelectedModelList(), "modelList should be equals"); + } + } +} \ No newline at end of file diff --git a/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/CsarOperationTest.java b/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/CsarOperationTest.java new file mode 100644 index 0000000000..fbed5936da --- /dev/null +++ b/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/CsarOperationTest.java @@ -0,0 +1,112 @@ +/* + * - + * ============LICENSE_START======================================================= + * Copyright (C) 2021 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.sdc.be.model.operations.impl; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.when; + +import fj.data.Either; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +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.sdc.be.client.onboarding.api.OnboardingClient; +import org.openecomp.sdc.be.model.User; +import org.openecomp.sdc.be.model.VendorSoftwareProduct; +import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; + +class CsarOperationTest { + + @Mock + private OnboardingClient onboardingClient; + + @InjectMocks + private CsarOperation csarOperation; + + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + } + + @Test + void findVspLatestPackageSuccessTest() { + final var csarUuid = "csarUuid"; + var user = new User("userId"); + final Map csarFileMap = new HashMap<>(); + csarFileMap.put("test", "test".getBytes(StandardCharsets.UTF_8)); + when(onboardingClient.findLatestPackage(csarUuid, user.getUserId())).thenReturn(Either.left(csarFileMap)); + final Either, StorageOperationStatus> vspLatestPackage = csarOperation.findVspLatestPackage(csarUuid, user); + assertTrue(vspLatestPackage.isLeft()); + final Map actualCsarFileMap = vspLatestPackage.left().value(); + assertEquals(csarFileMap, actualCsarFileMap); + } + + @Test + void findVspLatestPackage_csarNotFoundTest() { + //given + final var vspId = "vspId"; + var user = new User("userId"); + //when + when(onboardingClient.findLatestPackage(vspId, user.getUserId())).thenReturn(Either.right(StorageOperationStatus.CSAR_NOT_FOUND)); + final Either, StorageOperationStatus> vspLatestPackage = csarOperation.findVspLatestPackage(vspId, user); + //then + assertTrue(vspLatestPackage.isRight()); + final StorageOperationStatus storageOperationStatus = vspLatestPackage.right().value(); + assertEquals(StorageOperationStatus.CSAR_NOT_FOUND, storageOperationStatus); + } + + @Test + void findVspSuccessTest() { + //given + final var vspId = "vspId"; + final var vspVersionId = "vspVersionId"; + var user = new User("userId"); + var vendorSoftwareProduct = new VendorSoftwareProduct(); + vendorSoftwareProduct.setId(vspId); + vendorSoftwareProduct.setVersionId(vspVersionId); + //when + when(onboardingClient.findVendorSoftwareProduct(vspId, vspVersionId, user.getUserId())).thenReturn(Optional.of(vendorSoftwareProduct)); + final Optional vspOptional = csarOperation.findVsp(vspId, vspVersionId, user); + //then + assertTrue(vspOptional.isPresent()); + assertEquals(vendorSoftwareProduct, vspOptional.get()); + } + + @Test + void findVsp_vspNotFoundTest() { + //given + final var vspId = "vspId"; + final var vspVersionId = "vspVersionId"; + var user = new User("userId"); + //when + when(onboardingClient.findVendorSoftwareProduct(vspId, vspVersionId, user.getUserId())).thenReturn(Optional.empty()); + final Optional vspOptional = csarOperation.findVsp(vspId, vspVersionId, user); + //then + assertTrue(vspOptional.isEmpty()); + } +} \ No newline at end of file diff --git a/catalog-model/src/test/resources/application-context-test.xml b/catalog-model/src/test/resources/application-context-test.xml index dc9d5ba7bf..7f4ada2696 100644 --- a/catalog-model/src/test/resources/application-context-test.xml +++ b/catalog-model/src/test/resources/application-context-test.xml @@ -3,13 +3,14 @@ xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> - +