From c8bc4d451d6a517b3eeff53c5bf0a49f3840b07c Mon Sep 17 00:00:00 2001 From: Piotr Marcinkiewicz Date: Wed, 26 May 2021 09:45:45 +0200 Subject: [PATCH] Add test cases for Helm validation Issue-ID: SDC-3185 Signed-off-by: Piotr Marcinkiewicz Signed-off-by: Tomasz Wrobel Signed-off-by: Joanna Jeremicz Change-Id: Ic68907aa385e5a735d0948ca2177e6aac12b2e7b --- .../environments/integration-test.json | 7 ++- .../data/providers/OnboardingDataProviders.java | 24 ++++++- .../ci/tests/datatypes/enums/XnfTypeEnum.java | 1 + .../onap/sdc/backend/ci/tests/sanity/Onboard.java | 28 +++++++-- .../ci/tests/utils/general/FileHandling.java | 6 ++ .../ci/tests/utils/general/OnboardingUtils.java | 13 +++- .../general/VendorSoftwareProductRestUtils.java | 10 +++ .../tests/dataProvider/OnbordingDataProviders.java | 35 +++++++---- .../ci/tests/execute/sanity/OnboardingFlowsUi.java | 56 +++++++++++++++++ .../frontend/ci/tests/pages/VspValidationPage.java | 69 ++++++++++++++++++++- .../frontend/ci/tests/utilities/FileHandling.java | 14 +++++ .../resources/Files/CNFs/helm-package-valid.zip | Bin 1151 -> 2423 bytes .../resources/Files/CNFs/helm-package-valid_expect | 1 + .../helm_validator/invalid/one_error_two_files.zip | Bin 0 -> 2028 bytes .../invalid/one_error_two_files_expect | 1 + .../package_invalid_nil_pointer_render_error.zip | Bin 0 -> 1197 bytes ...package_invalid_nil_pointer_render_error_expect | 1 + .../Files/CNFs/helm_validator/package_valid.zip | Bin 0 -> 1130 bytes .../Files/CNFs/helm_validator/valid_two_files.zip | Bin 0 -> 2004 bytes .../with_warnings/one_warning_two_files.zip | Bin 0 -> 2104 bytes .../with_warnings/one_warning_two_files_expect | 1 + .../ci/testSuites/backend/helmValidatorTests.xml | 6 ++ .../ci/testSuites/backend/onapApiSanity.xml | 7 ++- .../ci/testSuites/frontend/helmValidatorTests.xml | 7 +++ .../attachments/SoftwareProductAttachmentsView.jsx | 2 + 25 files changed, 266 insertions(+), 23 deletions(-) create mode 100644 integration-tests/src/test/resources/Files/CNFs/helm-package-valid_expect create mode 100644 integration-tests/src/test/resources/Files/CNFs/helm_validator/invalid/one_error_two_files.zip create mode 100644 integration-tests/src/test/resources/Files/CNFs/helm_validator/invalid/one_error_two_files_expect create mode 100644 integration-tests/src/test/resources/Files/CNFs/helm_validator/invalid/package_invalid_nil_pointer_render_error.zip create mode 100644 integration-tests/src/test/resources/Files/CNFs/helm_validator/invalid/package_invalid_nil_pointer_render_error_expect create mode 100644 integration-tests/src/test/resources/Files/CNFs/helm_validator/package_valid.zip create mode 100644 integration-tests/src/test/resources/Files/CNFs/helm_validator/valid_two_files.zip create mode 100644 integration-tests/src/test/resources/Files/CNFs/helm_validator/with_warnings/one_warning_two_files.zip create mode 100644 integration-tests/src/test/resources/Files/CNFs/helm_validator/with_warnings/one_warning_two_files_expect diff --git a/integration-tests/environments/integration-test.json b/integration-tests/environments/integration-test.json index e71e53b01d..3402113ed2 100644 --- a/integration-tests/environments/integration-test.json +++ b/integration-tests/environments/integration-test.json @@ -40,11 +40,12 @@ "vnfRepoHost": "10.0.14.1" }, "HelmValidator": { - "validator_enabled": false, + "validator_enabled": true, "helm_version": "v3", "deployable": true, - "lintable": false, - "strict_lintable": false + "lintable": true, + "strict_lintable": false, + "validator_url": "http://helm-validator:8080/validate" } }, "override_attributes": { diff --git a/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/data/providers/OnboardingDataProviders.java b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/data/providers/OnboardingDataProviders.java index 314e37d2fc..16c9521ac6 100644 --- a/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/data/providers/OnboardingDataProviders.java +++ b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/data/providers/OnboardingDataProviders.java @@ -22,6 +22,7 @@ package org.onap.sdc.backend.ci.tests.data.providers; import static org.testng.Assert.fail; +import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -82,7 +83,28 @@ public final class OnboardingDataProviders { private static Object[][] invalidCnfList() { final List fileNamesFromFolder = OnboardingUtils.getInvalidXnfNamesFileList(XnfTypeEnum.CNF); LOGGER.debug(String.format("There are %s package file(s) to test", fileNamesFromFolder.size())); - return provideData(fileNamesFromFolder, FileHandling.getXnfRepositoryPath(XnfTypeEnum.CNF)); + return provideData(fileNamesFromFolder, FileHandling.getXnfRepositoryPath(XnfTypeEnum.CNF) + File.separator + OnboardingUtils.INVALID_XNFS_SUBPATH); + } + + @DataProvider(name = "CNF_Helm_Validator_List", parallel = true) + private static Object[][] cnfForHelmValidatorList() { + final List fileNamesFromFolder = OnboardingUtils.getXnfNamesFileList(XnfTypeEnum.CNF_HELM); + LOGGER.debug(String.format("There are %s package file(s) to test", fileNamesFromFolder.size())); + return provideData(fileNamesFromFolder, FileHandling.getXnfRepositoryPath(XnfTypeEnum.CNF_HELM)); + } + + @DataProvider(name = "CNF_With_Warning_Helm_Validator_List", parallel = true) + private static Object[][] cnfWithWarningForHelmValidatorList() { + final List fileNamesFromFolder = OnboardingUtils.getXnfNamesWithWarningsFileList(XnfTypeEnum.CNF_HELM); + LOGGER.debug(String.format("There are %s package file(s) to test", fileNamesFromFolder.size())); + return provideData(fileNamesFromFolder, FileHandling.getXnfRepositoryPath(XnfTypeEnum.CNF_HELM) + File.separator + OnboardingUtils.WITH_WARNINGS_XNFS_SUBPATH); + } + + @DataProvider(name = "Invalid_CNF_Helm_Validator_List", parallel = true) + private static Object[][] invalidCnfForHelmValidatorList() { + final List fileNamesFromFolder = OnboardingUtils.getInvalidXnfNamesFileList(XnfTypeEnum.CNF_HELM); + LOGGER.debug(String.format("There are %s package file(s) to test", fileNamesFromFolder.size())); + return provideData(fileNamesFromFolder, FileHandling.getXnfRepositoryPath(XnfTypeEnum.CNF_HELM) + File.separator + OnboardingUtils.INVALID_XNFS_SUBPATH); } @DataProvider(name = "Single_VNF", parallel = true) diff --git a/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/datatypes/enums/XnfTypeEnum.java b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/datatypes/enums/XnfTypeEnum.java index 7d7ebcd278..152612a77f 100644 --- a/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/datatypes/enums/XnfTypeEnum.java +++ b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/datatypes/enums/XnfTypeEnum.java @@ -28,6 +28,7 @@ import lombok.Getter; public enum XnfTypeEnum { CNF("CNF"), + CNF_HELM("CNF_HELM"), ETSI("ETSI"), PNF("PNF"), VFC("VFC"), diff --git a/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/sanity/Onboard.java b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/sanity/Onboard.java index d67390e304..a3323b98d3 100644 --- a/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/sanity/Onboard.java +++ b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/sanity/Onboard.java @@ -8,9 +8,9 @@ * 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. @@ -53,11 +53,11 @@ public class Onboard extends ComponentBaseTest { private String makeToscaValidationValue; @Rule public static final TestName name = new TestName(); - + @Parameters({ "makeDistribution" }) @BeforeMethod public void beforeTestReadParams(@Optional("true") String makeDistributionReadValue) { - makeDistributionValue = makeDistributionReadValue; + makeDistributionValue = makeDistributionReadValue; logger.info("makeDistributionReadValue - > " + makeDistributionValue); } @@ -67,7 +67,7 @@ public class Onboard extends ComponentBaseTest { makeToscaValidationValue = makeToscaValidationReadValue; logger.info("makeToscaValidationReadValue - > " + makeToscaValidationValue); } - + @Test(dataProviderClass = OnboardingDataProviders.class, dataProvider = "VNF_List") public void onboardVNFShotFlow(String filePath, String vnfFile) throws Exception { @@ -93,6 +93,24 @@ public class Onboard extends ComponentBaseTest { assertThrows(() -> runOnboardToDistributionFlow(filePath, cnfFile, ResourceTypeEnum.VF)); } + @Test(dataProviderClass = OnboardingDataProviders.class, dataProvider = "CNF_Helm_Validator_List") + public void onboardCNFWithHelmValidatorFlow(String filePath, String cnfFile) throws Exception { + setLog(cnfFile); + runOnboardToDistributionFlow(filePath, cnfFile, ResourceTypeEnum.VF); + } + + @Test(dataProviderClass = OnboardingDataProviders.class, dataProvider = "CNF_With_Warning_Helm_Validator_List") + public void onboardCNFWithHelmValidatorFlowWithWarning(String filePath, String cnfFile) throws Exception { + setLog(cnfFile); + runOnboardToDistributionFlow(filePath, cnfFile, ResourceTypeEnum.VF); + } + + @Test(dataProviderClass = OnboardingDataProviders.class, dataProvider = "Invalid_CNF_Helm_Validator_List") + public void onboardCNFWithHelmValidatorShouldFailTest(String filePath, String cnfFile) { + setLog(cnfFile); + assertThrows(() -> runOnboardToDistributionFlow(filePath, cnfFile, ResourceTypeEnum.VF)); + } + private void runOnboardToDistributionFlow(String packageFilePath, String packageFileName, ResourceTypeEnum resourceTypeEnum) throws Exception { ExtentTestActions.log(Status.INFO, String.format("Going to onboard the %s %s", resourceTypeEnum.getValue(), packageFileName)); User user = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER); diff --git a/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/utils/general/FileHandling.java b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/utils/general/FileHandling.java index 766c88734d..dcb3ecb14b 100644 --- a/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/utils/general/FileHandling.java +++ b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/utils/general/FileHandling.java @@ -3,6 +3,7 @@ * SDC * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2021 Nokia. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -135,6 +136,7 @@ public class FileHandling { private static EnumMap XNF_REPOSITORY_PATHS_MAP = new EnumMap<>(Map.of( XnfTypeEnum.PNF, getPnfRepositoryPath(), XnfTypeEnum.CNF, getCnfRepositoryPath(), + XnfTypeEnum.CNF_HELM, getCnfRepositoryForHelmValidatorPath(), XnfTypeEnum.VNF, getVnfRepositoryPath(), XnfTypeEnum.ETSI, getEtsiRepositoryPath(), XnfTypeEnum.VFC, getVfcRepositoryPath() @@ -152,6 +154,10 @@ public class FileHandling { return getFilePath("CNFs"); } + private static String getCnfRepositoryForHelmValidatorPath() { + return getFilePath("CNFs/helm_validator"); + } + private static String getEtsiRepositoryPath() { return getFilePath("ETSI"); } private static String getVfcRepositoryPath() { return getFilePath("VFCs"); } diff --git a/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/utils/general/OnboardingUtils.java b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/utils/general/OnboardingUtils.java index 22c314494f..6630345559 100644 --- a/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/utils/general/OnboardingUtils.java +++ b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/utils/general/OnboardingUtils.java @@ -24,6 +24,7 @@ package org.onap.sdc.backend.ci.tests.utils.general; import static org.onap.sdc.backend.ci.tests.utils.general.FileHandling.filterFileNamesListFromFolder; import java.io.File; +import java.nio.file.Paths; import org.onap.sdc.backend.ci.tests.datatypes.enums.XnfTypeEnum; import org.onap.sdc.backend.ci.tests.datatypes.http.HttpHeaderEnum; import org.onap.sdc.backend.ci.tests.datatypes.http.HttpRequest; @@ -109,7 +110,8 @@ public class OnboardingUtils { "1-2017389vtsbc4vf-(VOIP)_v11.0.zip" ); - private static final String INVALID_XNFS_SUBPATH = "invalid"; + public static final String INVALID_XNFS_SUBPATH = "invalid"; + public static final String WITH_WARNINGS_XNFS_SUBPATH = "with_warnings"; public static String handleFilename(String heatFileName) { final String namePrefix = String.format("%sVF%s", ElementFactory.getResourcePrefix(), "Onboarded-"); @@ -204,6 +206,15 @@ public class OnboardingUtils { return FileHandling.getZipFileNamesFromFolder(filepath); } + /** + * @return + * The method returns names list of XNF packages with warnings from Files directory under sdc repository + */ + public static List getXnfNamesWithWarningsFileList(XnfTypeEnum xnfTypeEnum) { + String filepath = FileHandling.getXnfRepositoryPath(xnfTypeEnum) + File.separator + WITH_WARNINGS_XNFS_SUBPATH; + return FileHandling.getZipFileNamesFromFolder(filepath); + } + /** * @param vnfNamesFileList * @return divide List according to day of month, if day of month is even as get first half part of the List, else - second diff --git a/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/utils/general/VendorSoftwareProductRestUtils.java b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/utils/general/VendorSoftwareProductRestUtils.java index 96d6416236..1eea8f320d 100644 --- a/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/utils/general/VendorSoftwareProductRestUtils.java +++ b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/utils/general/VendorSoftwareProductRestUtils.java @@ -23,6 +23,8 @@ package org.onap.sdc.backend.ci.tests.utils.general; import com.aventstack.extentreports.Status; import com.clearspring.analytics.util.Pair; import com.google.gson.Gson; +import java.nio.file.Files; +import java.nio.file.Path; import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; @@ -58,6 +60,7 @@ import java.util.Iterator; import java.util.Map; import static org.testng.AssertJUnit.assertEquals; +import static org.testng.AssertJUnit.assertTrue; public class VendorSoftwareProductRestUtils { @@ -129,6 +132,13 @@ public class VendorSoftwareProductRestUtils { RestResponse validateUpload = validateUpload(createNewVspPair.right, user); assertEquals("did not succeed to validate upload process, reason: " + validateUpload.getResponse(), 200, validateUpload.getErrorCode().intValue()); + Path expectPath = FileSystems.getDefault().getPath(filepath + File.separator + heatFileName.substring(0, heatFileName.indexOf('.')) + "_expect"); + + if(Files.exists(expectPath)) { + String content = Files.readString(expectPath); + assertTrue(validateUpload.getResponse().contains(content.trim().replaceAll("[\n\r]", ""))); + } + return createNewVspPair.right; } diff --git a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/dataProvider/OnbordingDataProviders.java b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/dataProvider/OnbordingDataProviders.java index 3a9fd4d9a3..41b247c338 100644 --- a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/dataProvider/OnbordingDataProviders.java +++ b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/dataProvider/OnbordingDataProviders.java @@ -24,6 +24,8 @@ package org.onap.sdc.frontend.ci.tests.dataProvider; import org.onap.sdc.backend.ci.tests.datatypes.enums.XnfTypeEnum; import org.onap.sdc.backend.ci.tests.utils.general.OnboardingUtils; import org.onap.sdc.frontend.ci.tests.utilities.FileHandling; +import org.openecomp.sdc.logging.api.Logger; +import org.openecomp.sdc.logging.api.LoggerFactory; import org.testng.Assert; import org.testng.annotations.DataProvider; @@ -33,6 +35,7 @@ import java.util.Collections; import java.util.List; public class OnbordingDataProviders { + private static final Logger LOGGER = LoggerFactory.getLogger(OnbordingDataProviders.class); private static final String VSP_VGW_CSAR = "vsp-vgw.csar"; private static final int NUMBER_OF_RANDOMLY_ONBOARD_VNF = 3; @@ -44,34 +47,44 @@ public class OnbordingDataProviders { int randomElementNumber = NUMBER_OF_RANDOMLY_ONBOARD_VNF; //how many VNFs to onboard randomly List fileNamesFromFolder = OnboardingUtils.getVnfNamesFileListExcludeToscaParserFailure(); List newRandomFileNamesFromFolder = getRandomElements(randomElementNumber, fileNamesFromFolder); - System.out.println(String.format("There are %s zip file(s) to test", newRandomFileNamesFromFolder.size())); return provideData(newRandomFileNamesFromFolder, filepath); } @DataProvider(name = "VNF_List", parallel = true) private static Object[][] VnfList() throws Exception { - List fileNamesFromFolder = OnboardingUtils.getXnfNamesFileList(XnfTypeEnum.VNF); - - System.out.println(String.format("There are %s zip file(s) to test", fileNamesFromFolder.size())); return provideData(fileNamesFromFolder, filepath); } @DataProvider(name = "CNF_List", parallel = true) private static Object[][] cnfList() { - List fileNamesFromFolder = OnboardingUtils.getXnfNamesFileList(XnfTypeEnum.CNF); - - System.out.println(String.format("There are %s zip file(s) to test", fileNamesFromFolder.size())); return provideData(fileNamesFromFolder, FileHandling.getCnfRepositoryPath()); } + @DataProvider(name = "CNF_Helm_Validator_List", parallel = true) + private static Object[][] cnfForHelmValidatorList() { + List fileNamesFromFolder = OnboardingUtils.getXnfNamesFileList(XnfTypeEnum.CNF_HELM); + return provideData(fileNamesFromFolder, FileHandling.getCnfForHelmValidatorRepositoryPath()); + } + + @DataProvider(name = "CNF_With_Warning_Helm_Validator_List", parallel = true) + private static Object[][] cnfWithWarningForHelmValidatorList() { + List fileNamesFromFolder = OnboardingUtils.getXnfNamesWithWarningsFileList(XnfTypeEnum.CNF_HELM); + Object[][] objects = provideData(fileNamesFromFolder, + FileHandling.getCnfWithWarningForHelmValidatorRepositoryPath()); + return objects; + } + + @DataProvider(name = "Invalid_CNF_Helm_Validator_List", parallel = true) + private static Object[][] invalidCnfForHelmValidatorList() { + List fileNamesFromFolder = OnboardingUtils.getInvalidXnfNamesFileList(XnfTypeEnum.CNF_HELM); + return provideData(fileNamesFromFolder, FileHandling.getInvalidCnfForHelmValidatorRepositoryPath()); + } + @DataProvider(name = "Invalid_CNF_List", parallel = true) private static Object[][] invalidCnfList() { - List fileNamesFromFolder = OnboardingUtils.getInvalidXnfNamesFileList(XnfTypeEnum.CNF); - - System.out.println(String.format("There are %s zip file(s) to test", fileNamesFromFolder.size())); return provideData(fileNamesFromFolder, FileHandling.getCnfRepositoryPath()); } @@ -106,7 +119,7 @@ public class OnbordingDataProviders { // -----------------------methods----------------------------------------- static Object[][] provideData(List fileNamesFromFolder, String filepath) { - + LOGGER.info(String.format("There are %s zip file(s) to test", fileNamesFromFolder.size())); Object[][] arObject = new Object[fileNamesFromFolder.size()][]; int index = 0; for (Object obj : fileNamesFromFolder) { diff --git a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/sanity/OnboardingFlowsUi.java b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/sanity/OnboardingFlowsUi.java index 693302aca1..5d1b3b3a60 100644 --- a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/sanity/OnboardingFlowsUi.java +++ b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/sanity/OnboardingFlowsUi.java @@ -473,6 +473,62 @@ public class OnboardingFlowsUi extends SetupCDTest { runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, cnfFile); } + @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "CNF_Helm_Validator_List") + public void onapOnboardVSPWithHelmValidationSuccessfulWithoutErrorsAndWarnings(String filePath, String cnfFile) throws Exception { + + setLog(cnfFile); + String vspName = createNewVSP(filePath, cnfFile); + goToVspScreen(true, vspName); + + boolean isVspAttachmentValidationPage = VspValidationPage.isVspAttachmentsValidationPage(); + if (!isVspAttachmentValidationPage) { + VspValidationPage.navigateToVspAttachmentsValidationPage(); + } + + assertTrue("Submit button should be enabled for correct helm chart", + VspValidationPage.isSubmitButtonEnabled()); + assertFalse("Attachment should not have any warnings for correct helm chart", + VspValidationPage.hasHelmAttachmentsAnyWarnings()); + assertFalse("Attachment should not have any error for correct helm chart", + VspValidationPage.hasHelmAttachmentsAnyError()); + } + + @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "CNF_With_Warning_Helm_Validator_List") + public void onapOnboardVSPWithHelmValidationSuccessfulWithWarnings(String filePath, String cnfFile) throws Exception { + setLog(cnfFile); + String vspName = createNewVSP(filePath, cnfFile); + goToVspScreen(true, vspName); + + boolean isVspAttachmentValidationPage = VspValidationPage.isVspAttachmentsValidationPage(); + if (!isVspAttachmentValidationPage) { + VspValidationPage.navigateToVspAttachmentsValidationPage(); + } + + assertTrue("Submit button should be enabled for helm chart with warning", + VspValidationPage.isSubmitButtonEnabled()); + assertTrue("Attachment should have warnings for helm chart with warning", + VspValidationPage.hasHelmAttachmentsAnyWarnings()); + assertFalse("Attachment should not have error for helm chart with warning", + VspValidationPage.hasHelmAttachmentsAnyError()); + } + + @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "Invalid_CNF_Helm_Validator_List") + public void onapOnboardVSPWithHelmValidationUnsuccessfulWithErrors(String filePath, String cnfFile) throws Exception { + setLog(cnfFile); + String vspName = createNewVSP(filePath, cnfFile); + goToVspScreen(true, vspName); + + boolean isVspAttachmentValidationPage = VspValidationPage.isVspAttachmentsValidationPage(); + if (!isVspAttachmentValidationPage) { + VspValidationPage.navigateToVspAttachmentsValidationPage(); + } + + assertFalse("Submit button should be disabled for helm chart with error", + VspValidationPage.isSubmitButtonEnabled()); + assertTrue("Attachment should have error for helm chart with error", + VspValidationPage.hasHelmAttachmentsAnyError()); + } + @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "Invalid_CNF_List") public void onboardCNFTestShouldFailForInvalidHelmPackage(String filePath, String cnfFile) { setLog(cnfFile); diff --git a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/pages/VspValidationPage.java b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/pages/VspValidationPage.java index 6d980ceb64..4b34e6804f 100644 --- a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/pages/VspValidationPage.java +++ b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/pages/VspValidationPage.java @@ -1,5 +1,6 @@ /** * Copyright (c) 2019 Vodafone Group + * Copyright (C) 2021 Nokia. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +23,7 @@ import org.onap.sdc.frontend.ci.tests.datatypes.DataTestIdEnum; import org.onap.sdc.frontend.ci.tests.execute.setup.SetupCDTest; import org.onap.sdc.frontend.ci.tests.utilities.GeneralUIUtils; import org.openqa.selenium.By; +import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebElement; import org.testng.Assert; @@ -30,6 +32,17 @@ import java.util.List; public class VspValidationPage extends GeneralPageElements { + private static final String ATTACHMENT_NAME_TEST_ID = ".//*[@data-test-id='validation-tree-node-name']"; + private static final String VALIDATION_ERROR_COUNT = ".//*[@data-test-id='validation-error-count']"; + private static final String VALIDATION_WARNING_COUNT = ".//*[@data-test-id='validation-warning-count']"; + private static final String SOFTWARE_PRODUCT_ATTACHMENTS = "navbar-group-item-SOFTWARE_PRODUCT_ATTACHMENTS"; + private static final String ATTACHMENTS_TAB_VALIDATION = "attachments-tab-validation"; + private static final String SDC_TAB_ACTIVE_CLASS_NAME = "sdc-tab-active"; + private static final String ATTACHMENTS_NODE_ID = "validation-tree-node"; + private static final String HELM_ATTACHMENT_EXTENSION = ".tgz"; + private static final String SUBMIT_BUTTON_ID = "vc-submit-btn"; + private static final int TWO_SECONDS_TIMEOUT = 2; + private VspValidationPage() { super(); } @@ -127,9 +140,63 @@ public class VspValidationPage extends GeneralPageElements { GeneralUIUtils.ultimateWait(); } + public static boolean isSubmitButtonEnabled() { + return !GeneralUIUtils.isElementDisabled(SUBMIT_BUTTON_ID); + } + + public static boolean hasHelmAttachmentsAnyWarnings() { + return GeneralUIUtils.getWebElementsListByTestID(ATTACHMENTS_NODE_ID) + .stream() + .filter(webElement -> hasAttachmentFileExtension(webElement, HELM_ATTACHMENT_EXTENSION)) + .anyMatch(VspValidationPage::elementHasWarningCount); + } + + public static boolean hasHelmAttachmentsAnyError() { + return GeneralUIUtils.getWebElementsListByTestID(ATTACHMENTS_NODE_ID) + .stream() + .filter(webElement -> hasAttachmentFileExtension(webElement, HELM_ATTACHMENT_EXTENSION)) + .anyMatch(VspValidationPage::elementHasErrorCount); + } + + public static boolean isVspAttachmentsValidationPage() { + WebElement webElementByTestID = GeneralUIUtils.getWebElementByTestID( + ATTACHMENTS_TAB_VALIDATION, TWO_SECONDS_TIMEOUT); + return webElementByTestID != null && webElementByTestID.getAttribute("class").contains( + SDC_TAB_ACTIVE_CLASS_NAME); + } + + public static void navigateToVspAttachmentsValidationPage() { + GeneralUIUtils.clickOnElementByTestId(SOFTWARE_PRODUCT_ATTACHMENTS); + GeneralUIUtils.clickOnElementByTestId(ATTACHMENTS_TAB_VALIDATION); + } + + private static boolean elementHasWarningCount(WebElement webElement) { + try { + webElement.findElement(By.xpath(VALIDATION_WARNING_COUNT)); + return true; + } catch (NoSuchElementException ex) { + return false; + } + } + + private static boolean elementHasErrorCount(WebElement webElement) { + try { + webElement.findElement(By.xpath(VALIDATION_ERROR_COUNT)); + return true; + } catch (NoSuchElementException ex) { + return false; + } + } + + private static boolean hasAttachmentFileExtension(WebElement webElement, String extension) { + return webElement + .findElement(By.xpath(ATTACHMENT_NAME_TEST_ID)) + .getText() + .endsWith(extension); + } + private static List getChildElements(WebElement webElement) throws Exception { return webElement.findElements(By.xpath(".//*")); } - } diff --git a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/utilities/FileHandling.java b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/utilities/FileHandling.java index 04b203798b..9ec9911f38 100644 --- a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/utilities/FileHandling.java +++ b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/utilities/FileHandling.java @@ -3,6 +3,7 @@ * SDC * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2021 Nokia. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -150,10 +151,23 @@ public class FileHandling { public static String getVnfRepositoryPath() { return getFilePath("VNFs"); } + public static String getCnfRepositoryPath() { return getFilePath("CNFs"); } + public static String getCnfForHelmValidatorRepositoryPath() { + return getFilePath("CNFs/helm_validator"); + } + + public static String getCnfWithWarningForHelmValidatorRepositoryPath() { + return getFilePath("CNFs/helm_validator/with_warnings"); + } + + public static String getInvalidCnfForHelmValidatorRepositoryPath() { + return getFilePath("CNFs/helm_validator/invalid"); + } + public static String getUpdateVSPVnfRepositoryPath() { return getFilePath("UpdateVSP"); } diff --git a/integration-tests/src/test/resources/Files/CNFs/helm-package-valid.zip b/integration-tests/src/test/resources/Files/CNFs/helm-package-valid.zip index 349a9ee0b21e55a1ffd4c2fd2ff1e8a4301ba92b..a28a7c2b59c6da16b20446afae3cfb4f5c4bb6a1 100644 GIT binary patch literal 2423 zcmb7`2T+sQ7RM7p@4YBZT$C1ytbmlq0|bRoA`qk#q!)>ivY{_cd`5JniAw+}8tJ`@ z1PHyuqwK06f;4Fn0xTG^3H#8vJG0|E_ug;r%s1bed+z-H|L;H{AbNfPGi6}ydn^I} z3lJRuzygp2c>3H93{nj83WHg50GQBft#CT^KUXk{4FIHH1_1!a4&|HfwB6MD1C65)-ee-E%6b$*nB;v2`;`FlP7fJ1mCS3u9ebZ+vj zMkEsaJhdlLo>&YQGRTJ4-HCrZqYS-pgpxA3Zd|FjEh>=z!{FG495`&jj@8gIFh zbr|?uaGmZYb5tMSohz;7O;TB#oBW*~H0m3F&bB~t#X8I_JrDoZ+#v_EKhK-MVQ zip)>QTCGGoA)_l~Il?Wk%z;*4is$r<;ZNbgjp@_6#xZ_1jJX$kA<<(xT zkGtt$k|cBN-zQ2giZ0?Ds0APc06-y3%ogOXWM&FLREVHo@UnI?{(@H&5CGty;AN&~ zZfs;|Wv%ENhzK}F?2MNbyhODXKBLkK{|jQpiErUa3N zjRE@$3Ixv!c?hPuFD}LK<1X_-cw^ppb2HHwxw3OZP5K9bnd#|v){c4Clbsnx86FQS zgqSEW7R$)WnHi=i6e<89p$!N7a&7Lu!3`Qndn?Q@n4HJ4Q`t3m%#A*DW zrqZ$2@wmiXEF%9dg>`BnUrQXKQ4l?)cveb@fgWy%0QWBvnxIGsM3E46{iQx2J>B6q z5*mCkPLWXft`&Q;knNcz-L&01O;;s3B?XB0FnF_pb9EkC;19TJRpa^!Ui!!?K&K_qr|r~=AJ#tuJcHBvl}mZEeNtmz*=Ec~q`+$qJ_@sa zU2Jc<=>HR|=yrTJdwrBx@T0AQ1p>q2)L!()8=~%JMOo2AS8r={mmA5&y|a*9eL)_3 zG(3+vAj>wyTS(EbxpKAP2n@JaDW{6A5tGKiw%2Cw*@O)#&IMw%_ebsL>CCq#c1Cue z$Lhs58GM|2=l*cLHDy_-DLgFqH2YHzt!U1zG0jHUtUD+?Aw$4}xLrhtnz4AiG&p@@}i$C^-b~y;-*@=&Py*${+v&-gpI&Jp8W=Bhm#A!W8 zGGcR>m{$tvB+cZN;K6;$rh#$D=?Si#X=d!e@*HWJb8#Wn(oVdy(Hh8Ube`xCY zBc8|rdOhyHPrMa@kLAF?{X|0>{txO|C&SIdHdY{%Gbg_@CBqh z`j)Q%szvXuVUI2P_hFNkTrlrl(ACmi3SXHSRKA)On6k5s^AcDKSAEdXC9V7GgaK3u zK_jT|;^=A#zNd+bmk^WnJz%A3=Gk-iu?MX^_pHcX9yaEroJA2LIq(*X%Vp;24)NHS4=lJ` z8o1EMaFtn!fA%g#0?+UJhk1uvwMpu~%_TbAs_NdIh3v4s1+|QDFpgAZ=`x{iX1yug ztcr=#Z@!Muh?pet+|Sm*rs7PPTE>!9qXG|!YVZKz8*X=iAb<7x5t$_s1njP7W5F`VY{iraCUIRH%-75;ZaUls=RKLDlz)Bpeg literal 1151 zcmWIWW@Zs#U|`^2V2||-I>ol?ekqVw4aA%b3JhtPMa3n0CFxb6A-oLi{b@=G*6B(K z$ANTd1vdjD%L`@(1~4)C{j&rH=4acV^ZewKkIC=8Uwy-K;(_D;J>fjX*!;BF5Ax_#mD{KXwWch@m8 zFz^E1?(691>E;?7qL)>ip9gloBGBz1_k(CO_pg2y6c7+_%KMCO=%%26Pp8kH^XW17 z)%Vs6y~KEW$r3Sj@l>%XDbJoaiX3ne_7-ZqlOe#)vMP~BAi(SN8OGVurbULtEDE0# z$9j=<`gxr)FCDhk8k$M(d$?)ddX>tIS&=?;s+sNgxX=FFeobba2IBXg2Y z>1v%kp|fb3ZOojFFV8Q}}EsY?G=zJ02jW8BlB83>rz_6up50FVxl0`NeTVg>N-OtECLefDt h7h60c%=KYnAU;+Dyjj^mT3LWF5$GTeV9~+A002Imj3592 diff --git a/integration-tests/src/test/resources/Files/CNFs/helm-package-valid_expect b/integration-tests/src/test/resources/Files/CNFs/helm-package-valid_expect new file mode 100644 index 0000000000..8923fa7865 --- /dev/null +++ b/integration-tests/src/test/resources/Files/CNFs/helm-package-valid_expect @@ -0,0 +1 @@ +"third.tgz":[{"level":"WARNING","message":"WARNING: [HELM VALIDATOR]: [WARNING] templates/: directory not found"}] diff --git a/integration-tests/src/test/resources/Files/CNFs/helm_validator/invalid/one_error_two_files.zip b/integration-tests/src/test/resources/Files/CNFs/helm_validator/invalid/one_error_two_files.zip new file mode 100644 index 0000000000000000000000000000000000000000..fe7925fe250f8d56a450389f2be31b61b0817741 GIT binary patch literal 2028 zcmb7_cT|&C7>B=*0I7&!gc(|}Duz)CR0?PnBA`eZAtY=htl|KoVT2YmM9LDVKozQD zqm5t$D=P>H1u9F4B!DPG!~inHfPg|kNxmkuwzU8G-gCe6-GAP5f9E{UeQ{VQ3<qu-o9{9U5WdJ|{&;vrq6iQe~j7d!R_e6psApaKQM_Oi;kyLM%kz(T&00?Xv3IOXL zNTy7TNH-G>3|_>M0O+juGx8%-rPo#9*^mT!hV{ut!zIN?N4?K%wP%bds+MNhU{0KQ z=PvPb0RD+93kPvuJ#rcm7tG+rafS8K_^>R;XV(1`ldKCR`^ZqTIXdwHhpq085v^Nw zR`%wh-!+Poe-knF7J9^w(CPYogxTsoojOrX90P;Ox#Sfr_t+|Kd637p>Q_4s zHygQob_?&}wc;Nc|8O%!HNW;k`!)Yp_~HiDowLco4D%UP!H{$8Jv5d@+b@1AKKE(8 zsA(c>n*awZ=Yb;A;diwAyFs_S9uOhpv*7;_o}}#S^YXk;7w~K_x5wffq+awq!>K^$ z+#h-u`MfFGqn}ek#8kMTigr-82_?V0NW1s-nvG&HU*0%tJQqaJoveO2*-@`l?kbKV z)4BZ%O^7WqC@ub6RMsX?Bknzo!AIDMe+nF z$R;CM+Q=im<4Vh(2H6{=NJ_1Ny<+Bp{EN4uyTAFp-HK#jogz$OlTg2@EkeD&(ckf+ z$k(}rC-aC{W=$^o=@Si_!9PoIrQJ)>Rk)LjDiMLQc9N5_UUA4Pz4;6mlB7ekJ z=Q2Dpvc!BeyMof1u1x!C4iX-|$sEuI0322xjxZ#g%aNcg#ToYx=wlfEjBRM$#6nxt!O9$tW>~ki4z{*waflq* z^@NvK7o5{1(n@pun{cDbg_7*jgyg8Oz%UAhO!<$@ZN+7z8Hv#UO9&~H30ap}`O051 z`$=R*&Q;Ocf+RBE z!)D56cwRRxLr>fiid?c?6VHm%4|2iO3A2ZGo)1(ya3;N}bCW4y)A-UXveav1ry~iY zPJZzoZatpUJ!Va&y9nAIEW+1g5si4`_-0w=?Ipra2tvigb$~GfhIHIswkdGPo->s% z?-Dy8%LF#c?)J;N?t0S#P!m^F7-ae_pq?GqdAwc|I#?BcC32sP;28KB*28hPhJ5Im z_fxb{^e6ReuQdl4V7sM2L;lV?aJ%;ujd{X;t>cg;RSasPdpOSD585Y%Em9K{5-YQo zBTw)zHv?2^0B)tJyi`)0ujtn>e@k! zW{jkjRSLB?;cm;GdF^~yi_4E{&c}(NC70;AFD=?29fJl9ybDk-6!QTpiD~EFe5>07 zUE~&>ciL45?^Ny6Ia;g*CcdH3CCd}GDzsZgKVSu(n0p2*mUXNM~t: nil pointer evaluating interface {}.repository"},{"level":"WARNING","message":"WARNING: [HELM VALIDATOR]: [ERROR] templates/: template: mychartname/templates/test.yaml:2:18: executing \"mychartname/templates/test.yaml\" at <.Values.image.repository>: nil pointer evaluating interface {}.repository"}] diff --git a/integration-tests/src/test/resources/Files/CNFs/helm_validator/invalid/package_invalid_nil_pointer_render_error.zip b/integration-tests/src/test/resources/Files/CNFs/helm_validator/invalid/package_invalid_nil_pointer_render_error.zip new file mode 100644 index 0000000000000000000000000000000000000000..851ee27367e0193f617686ec44593f30ad2b34e8 GIT binary patch literal 1197 zcmWIWW@h1H0D)-FDM9Z-n6J-aVqgGaZ3Y>J{Jd1%oXoruT@a%vH7_N#NH?{pD8EQI zu^=-nwWv5VKTo&JNUtQlDl~+Xfw``(E@27p%!JYkZU#n{7t9O{U_!o|gF$d^Kmr5v z+lc7=%LXFvHrF3btZwYwb#Cd(E9P4i8!H$xSFAtbdroSz%C?;4i+vt%FP?O%jLA{o z`RS$_{<0)_`P)Bh^!nCqh+lE)yQyu&8lx?>Tf%PdGs$YYrWyP7`NIX@88{T(4l4%8 z_Ov~!+snqXk>jyK$0Q9#!LC4|?+HI9c$T}q-Lqwj$l@*A_fNQe?SHQP>tFJX_a^@T z920e3e3Q<%`OW*>g^t@lx4-j2zP(f7-{BOIuMU6yz5UnWe(rzUQ^PaPVJC%-2k2dD zd-tq0^+nL?o_y7~1KK)X8PyNHqAP;^FNVFiXt>|NBt$BBMTps>oP9w$6$e-sulpLJ z&d4vM=XYcNz5mI_*L|~}?%Mm#fPKT+f370y-`EQVx_pxlRCw{`zeK>&If({o3}U@y zr?PiTFyGvqJ~!8n=}p#uIqzT(D{=Oerr*!&A8K&!{_|eq#{B=s%-@K!Z~OIMCE|Jg z;sTdH$2}#=|NWQHxOm#9>ZVIW>ZkH*?wUC-(^|@`qUUbSXZ~;{Vo%U~gJx;hBL8`X715&H3yN>_)4lM}<=l^>Pusn@ z96hwol}1i#I{8yI<&@R2^i%w|igwl}ECFH*dImXLzhGdHdk&QSVvTBmN2opWksRfN$EPD@T6ZS!#9I zQC!=)=Yf;>KeJg0AdHs8V|zAoF&PTDWPcV-%uZIk5y92e8g;9~!{GJC3bn+|XyOf3QQ83b%;1kogAaaKqcNAo+xLR^6ev5*mH)s{v^V2OYhq(CFF X1ZRLZD;vmlOh9-9NM8nOWMBXQ{ulKl literal 0 HcmV?d00001 diff --git a/integration-tests/src/test/resources/Files/CNFs/helm_validator/invalid/package_invalid_nil_pointer_render_error_expect b/integration-tests/src/test/resources/Files/CNFs/helm_validator/invalid/package_invalid_nil_pointer_render_error_expect new file mode 100644 index 0000000000..b8d93186fb --- /dev/null +++ b/integration-tests/src/test/resources/Files/CNFs/helm_validator/invalid/package_invalid_nil_pointer_render_error_expect @@ -0,0 +1 @@ +"one-lint-one-render-error-apiVersion-v2.tgz":[{"level":"ERROR","message":"ERROR: [HELM VALIDATOR]: Error: template: mychartname/templates/test.yaml:2:18: executing \"mychartname/templates/test.yaml\" at <.Values.image.repository>: nil pointer evaluating interface {}.repository"},{"level":"WARNING","message":"WARNING: [HELM VALIDATOR]: [ERROR] templates/: template: mychartname/templates/test.yaml:2:18: executing \"mychartname/templates/test.yaml\" at <.Values.image.repository>: nil pointer evaluating interface {}.repository"}] diff --git a/integration-tests/src/test/resources/Files/CNFs/helm_validator/package_valid.zip b/integration-tests/src/test/resources/Files/CNFs/helm_validator/package_valid.zip new file mode 100644 index 0000000000000000000000000000000000000000..abe94e661630b40da340d2a9ac01e0761aae3c9e GIT binary patch literal 1130 zcmWIWW@h1H0D)-FDM9>NA^qJ<3=AMF$sog!oL^Lwnp~orSdbZ(T2!2wpQl@9q*sz& z6&k|Hz+6{XmvD}EW(`81dO#Xd~4Z7yHB7iaQXGR@=SMFZ@=6oZKn)~yQ877=vw(7N;p4@Bmo+-n z9`GCfw3FHScYE1zR$SI;S=lN) zZO7DO3u9gfE!!ik{sCWAJEtc;bKlMlXwbg~xXbZ1DS+m*05q`p5nJ zd?nJ758mbVaQzoA`&~c(0l)LV$?=csMI?Xz7r2pIAN9c0|Jhcfqz21xAM0g~-M?ku z*$gr$xZ?QS!`6FPmnY;F?a*}L?RJ|sb4~FDo4v;@5;QGazqf8lkX|eLi8;bXP4&sr zD2Jo5Q478l@9{`@rV!ouIOgMuxz{DNR=D2#FVnF6R>#smDn>gdYJ7hp*}A=SCsXKm z<=v`{Vr*WK++Hu9UTxRrabyaOS+UBA^>erOi6t9bo?WV}-5F=Mu>1V6*QeXtl)mqJ z^ziDot=mJl9QbQ0HEol~v^jy*i#Nu6$kvIyYO8(4`P{w-9hT-nrebmN`;Js@4V1rF z&M|f7gL_djvpI5eR~bF*-B@&_L$KcX9bZ%}aoeR>n zK;B*;<^`s1Uq?SrH`m}0y{zK=JaCHk=bM=T!e}Xa^|PRWfPhopXM9691qFOMeg2$J zkGZeDw`S-i#?wodh^dRGicLv*_PkN#fQzuVP~)8p0d|&Ei97-UUZ>A6&Ym_WK4i+Q zm_@TACP+?;3gIzv+J44ky~}^=E~oZ46E_jM%hfg-Ix_HEAjUHS4c^jt4_GLm1sTvt YEWs7v&B_LH3lk7-0@90sB?AKk0M4Px9smFU literal 0 HcmV?d00001 diff --git a/integration-tests/src/test/resources/Files/CNFs/helm_validator/valid_two_files.zip b/integration-tests/src/test/resources/Files/CNFs/helm_validator/valid_two_files.zip new file mode 100644 index 0000000000000000000000000000000000000000..508f3f8388386697eee16c5fc6249c99fab6a581 GIT binary patch literal 2004 zcmWIWW@Zs#-~hsm(uyDkDClNlVBld;U`Wm{DoRZ*G1MzbuL=#}Wnll}7@bhNczuG| ziuDPl72FJrEH9WD7{CN$H&e-9`ECw|n==Cv7?|Hi+|9piAn<iEl&=ASP+_kDM9P->6IUCZl5 zdOcHD+2u3m8)?+spMT6S;q0=F|99MDhuPnZ>+#CBEdEuX`8C!@q*<*lz(;|^#ChF$o6C`hv6vQEp&R^e$orXE`u z^EznR9%1#j%}Mi(UJ1Xs135R8g^IVJKe!`+(`FPiozQf2MVIJ<@2=a0QU-QK43eb=LhSGR55 z9=hegUsI`Rn?$C~39MecG3G<8FAFF3rfmzzZzXeI5Ng-CTo1^sA6&Ym_WK4i+Qn4}fqlj2w}a)eKcd^072CoCi=WLB42WKbl-v`+@gVc{=noD>xIE8e~0b09H&O4+MBKGKnxFDlFs-4yv$V zU`r#2MN0KWyveVCg$dMTqKXS-lR*)J>>p5sz`&NqE36EpMNfb?D;r2VGZ69vgJ(UM F2LSz{PT2qe literal 0 HcmV?d00001 diff --git a/integration-tests/src/test/resources/Files/CNFs/helm_validator/with_warnings/one_warning_two_files.zip b/integration-tests/src/test/resources/Files/CNFs/helm_validator/with_warnings/one_warning_two_files.zip new file mode 100644 index 0000000000000000000000000000000000000000..76530d43a1ec9b51be184a4eaaf8bdec0eb84ae6 GIT binary patch literal 2104 zcmb7_X;jl!8pi*Du(XO{cYq)aj)Yy7vbB{RR8lZRB0C9W*eWE1opx*zB|v0H7O6-8 z0TCCVfFfa+MGdQf5kUxxfFLT!qL$>}gc)0=-+b@6_uTvCJ@+~1`8_WRDGZeb#Q7^Y zIt~r|uTq2nU>~3g;E53t0r)7rsGy%Pt`dOQhP4+i;YRiDj*i<0K%h&)0I+*NQiP(o zDkMAcSuuu>zu|59 zpr1Ndq986GgMWd=_%jA$2DX`z=z!D{FU;8yda1cp7DQp9p~iov89fHL{)$?#aSCvs z7n8#KNvm_}%mUY-vwr!tN@>xP9CW?wz>XCG3$o9JE|a0JoPWp4PMS5%V$8eXAC6^f zd}`%hxXrz$x;D%k(MVS3zzjZG!0&VK#W1XuGJkdR7ah}DJz%wMW9WDKaKp+G-*#=6 zGeg^*Xoa{DorD`SnY_l_o)YgBbVaiaV)cSQ!*E&V_46O1J2jA%WEW#_l%U!_>EP zjTQ5Llg%r1`T1I{_q($?K4ZtUM{NgMImzaxXk&R_Y-?A1gNw>=taxq#XUY?PMLaC5 z%5WyFHliz8ifr@-5)|~cA)p8VD5RJ;Ov^PRlW%2#ol$=peUr-k)9A_&0FdAt-O1Yd zq=WrwSG^x2iG*FNr}J(8dH>DoHy6+-6zVau&k6Gz8nw+;Tl$ z=eX}b zjR+`Ziq6MYpyV%&dtsjCtB3J55(xp=SicBD2qEbIfKINc#>Mm1{!JxhR!Dgl=;-2I zpwGAnfS#%&ch|PG+g&XSlO8o4Rij!_?uJx9bZYJzrRz?dRDkWo44h=9o%FH3nOL={ zHa-yB`W+&OVTpO)kzL?9+D!=|JxY_SI#mCF6C5O+=%?6AIhWHj^MdD~s#qRkcHsC| z=?^rVduF7%m|mTMA-C|N`JK0Lu>Oe(?73d2Hbkk(0@>4WZprxOJRZ*hPxQ?7e^g1- zw3`bzb9|z&jG(lK%c@v6roblES9Z>p6vpGGOt?i0pvj_4a8g;I9K$MbojUh4t8k)E zeD&K+ueiYgk%H-iHL`c07}nX#Mg2PeAYkx@1UmES5;a8EzNh)0A#9$l;&5j1vidB^ z?pi`(?>rey4AQ2@gD>~g$i|I9(C9XZc$aJ5>lD_Zxilid z%4X{m6Z%MAl)&-xa+Bx?p@Zc$e7tf=X6?FaC7C}Skc;%7*J1IRnQ?Et(qr7!2&6NM zOT`QJZgQM*lO4w$PCVApx4HCPcfQPI=G2p;Uwvb$YTvI}Qum&?cz~U#S5Z|p)bVly z9^t1`LJPNMZ?OF~V(-v>wDulCntp1jd<0D)-NmW%U)5ow-yT6at_8#Za+0LLR&ALEpt3*dy-9Y#AzN`)HKK&ka<;i8F8$d>+8rB-rbbGksXsbD z^jS&pBPW(YsgVTMHg1)(87syl!nw3Hxl4I(AJD=xFTm%=9}<L4PXGV_ literal 0 HcmV?d00001 diff --git a/integration-tests/src/test/resources/Files/CNFs/helm_validator/with_warnings/one_warning_two_files_expect b/integration-tests/src/test/resources/Files/CNFs/helm_validator/with_warnings/one_warning_two_files_expect new file mode 100644 index 0000000000..6e895ae278 --- /dev/null +++ b/integration-tests/src/test/resources/Files/CNFs/helm_validator/with_warnings/one_warning_two_files_expect @@ -0,0 +1 @@ +"one_warning.tgz":[{"level":"WARNING","message":"WARNING: [HELM VALIDATOR]: [WARNING] templates/: directory not found"}] diff --git a/integration-tests/src/test/resources/ci/testSuites/backend/helmValidatorTests.xml b/integration-tests/src/test/resources/ci/testSuites/backend/helmValidatorTests.xml index e69785d397..01d4095153 100644 --- a/integration-tests/src/test/resources/ci/testSuites/backend/helmValidatorTests.xml +++ b/integration-tests/src/test/resources/ci/testSuites/backend/helmValidatorTests.xml @@ -5,6 +5,12 @@ + + + + + + diff --git a/integration-tests/src/test/resources/ci/testSuites/backend/onapApiSanity.xml b/integration-tests/src/test/resources/ci/testSuites/backend/onapApiSanity.xml index 97537986cb..8ce016d09f 100644 --- a/integration-tests/src/test/resources/ci/testSuites/backend/onapApiSanity.xml +++ b/integration-tests/src/test/resources/ci/testSuites/backend/onapApiSanity.xml @@ -5,7 +5,12 @@ - + + + + + + diff --git a/integration-tests/src/test/resources/ci/testSuites/frontend/helmValidatorTests.xml b/integration-tests/src/test/resources/ci/testSuites/frontend/helmValidatorTests.xml index ac44641767..2e171e970f 100644 --- a/integration-tests/src/test/resources/ci/testSuites/frontend/helmValidatorTests.xml +++ b/integration-tests/src/test/resources/ci/testSuites/frontend/helmValidatorTests.xml @@ -6,6 +6,13 @@ + + + + + + + diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsView.jsx index 7cb5753557..04a68412b7 100644 --- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsView.jsx @@ -141,6 +141,7 @@ class HeatScreenView extends Component { @@ -162,6 +163,7 @@ class HeatScreenView extends Component {