diff options
Diffstat (limited to 'integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/sanity/OnboardingFlowsUi.java')
-rw-r--r-- | integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/sanity/OnboardingFlowsUi.java | 626 |
1 files changed, 626 insertions, 0 deletions
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 new file mode 100644 index 0000000000..24451d6d8d --- /dev/null +++ b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/sanity/OnboardingFlowsUi.java @@ -0,0 +1,626 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. 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. + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.sdc.frontend.ci.tests.execute.sanity; + +import com.aventstack.extentreports.ExtentTest; +import com.aventstack.extentreports.Status; +import org.onap.sdc.backend.ci.tests.data.providers.OnboardingDataProviders; +import org.onap.sdc.frontend.ci.tests.dataProvider.OnbordingDataProviders; +import org.onap.sdc.backend.ci.tests.datatypes.enums.XnfTypeEnum; +import org.onap.sdc.frontend.ci.tests.flow.CheckSoftwareVersionPropertyFlow; +import org.onap.sdc.frontend.ci.tests.flow.CreateResourceFlow; +import org.onap.sdc.frontend.ci.tests.flow.CreateVspFlow; +import org.onap.sdc.frontend.ci.tests.flow.ImportVspFlow; +import org.onap.sdc.frontend.ci.tests.flow.exception.UiTestFlowRuntimeException; +import org.onap.sdc.frontend.ci.tests.pages.*; +import org.onap.sdc.frontend.ci.tests.utilities.FileHandling; +import org.onap.sdc.frontend.ci.tests.utilities.GeneralUIUtils; +import org.onap.sdc.frontend.ci.tests.utilities.OnboardingUiUtils; +import org.onap.sdc.frontend.ci.tests.utilities.ServiceUIUtils; +import org.onap.sdc.backend.ci.tests.utils.Utils; +import org.onap.sdc.frontend.ci.tests.verificator.ServiceVerificator; +import org.openecomp.sdc.be.model.ComponentInstance; +import org.openecomp.sdc.be.model.Resource; +import org.openecomp.sdc.be.model.Service; +import org.onap.sdc.frontend.ci.tests.datatypes.CanvasElement; +import org.onap.sdc.frontend.ci.tests.datatypes.CanvasManager; +import org.onap.sdc.frontend.ci.tests.datatypes.DataTestIdEnum; +import org.onap.sdc.backend.ci.tests.datatypes.ResourceReqDetails; +import org.onap.sdc.backend.ci.tests.datatypes.ServiceReqDetails; +import org.onap.sdc.backend.ci.tests.datatypes.VendorLicenseModel; +import org.onap.sdc.backend.ci.tests.datatypes.VendorSoftwareProductObject; +import org.onap.sdc.backend.ci.tests.datatypes.enums.UserRoleEnum; +import org.onap.sdc.frontend.ci.tests.execute.setup.DriverFactory; +import org.onap.sdc.frontend.ci.tests.execute.setup.ExtentTestActions; +import org.onap.sdc.frontend.ci.tests.execute.setup.SetupCDTest; +import org.onap.sdc.frontend.ci.tests.pages.CompositionPage; +import org.onap.sdc.frontend.ci.tests.pages.DeploymentArtifactPage; +import org.onap.sdc.frontend.ci.tests.pages.GovernorOperationPage; +import org.onap.sdc.frontend.ci.tests.pages.HomePage; +import org.onap.sdc.frontend.ci.tests.pages.OpsOperationPage; +import org.onap.sdc.frontend.ci.tests.pages.ResourceCreatePage; +import org.onap.sdc.frontend.ci.tests.pages.ResourceGeneralPage; +import org.onap.sdc.frontend.ci.tests.pages.ServiceGeneralPage; +import org.onap.sdc.frontend.ci.tests.pages.TesterOperationPage; +import org.onap.sdc.frontend.ci.tests.pages.TopNavComponent; +import org.onap.sdc.frontend.ci.tests.pages.VspValidationPage; +import org.onap.sdc.frontend.ci.tests.pages.VspValidationResultsPage; +import org.onap.sdc.backend.ci.tests.utils.general.AtomicOperationUtils; +import org.onap.sdc.backend.ci.tests.utils.general.ElementFactory; +import org.onap.sdc.backend.ci.tests.utils.general.OnboardingUtils; +import org.onap.sdc.backend.ci.tests.utils.general.VendorLicenseModelRestUtils; +import org.onap.sdc.backend.ci.tests.utils.general.VendorSoftwareProductRestUtils; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.testng.AssertJUnit; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Optional; +import org.testng.annotations.Parameters; +import org.testng.annotations.Test; + +import java.io.File; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static org.testng.AssertJUnit.assertEquals; +import static org.testng.AssertJUnit.assertFalse; +import static org.testng.AssertJUnit.assertNotNull; +import static org.testng.AssertJUnit.assertTrue; +import static org.testng.AssertJUnit.fail; + +public class OnboardingFlowsUi extends SetupCDTest { + + private static final Logger LOGGER = LoggerFactory.getLogger(OnboardingFlowsUi.class); + private static final String NO_TESTS_ARE_AVAILABLE = "No Tests are Available"; + private static final String NEXT_BUTTON_IS_ENABLED_IT_SHOULD_HAVE_BEEN_ENABLED = + "Next Button is enabled, it should have been enabled"; + private static final String NEXT_BUTTON_IS_DISABLED_IT_SHOULD_HAVE_BEEN_ENABLED = + "Next Button is disabled, it should have been enabled"; + private static final String RESULTS_ARE_NOT_AVAILABLE = "Results are not available"; + private static final String THE_TESTS_ARE_ALREADY_SELECTED_THE_LIST_SHOULD_INITIALLY_BE_EMPTY = + "The tests are already selected, the list should initially be empty"; + private static final String THE_SELECTED_TESTS_ARE_NOT_POPULATED_IN_THE_LIST = + "The selected tests are not populated in the list"; + private static final String THE_SELECTED_TESTS_ARE_NOT_DELETED_FROM_THE_LIST = + "The selected tests are not deleted from the list"; + private static final String NEXT_BUTTON_IS_ENABLED_IT_SHOULD_HAVE_BEEN_DISABLED = + "Next Button is enabled, it should have been disabled"; + + protected static String filePath = FileHandling.getVnfRepositoryPath(); + private Boolean makeDistributionValue; + + @Parameters({"makeDistribution"}) + @BeforeMethod + public void beforeTestReadParams(@Optional("true") String makeDistributionReadValue) { + LOGGER.debug("makeDistribution parameter is '{}'", makeDistributionReadValue); + makeDistributionValue = Boolean.valueOf(makeDistributionReadValue); + } + + @Test + public void onboardVNFTestSanityOneFile() throws Exception { + String vnfFile = "1-VF-vUSP-vCCF-DB_v11.1.zip"; + ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource(); + ServiceReqDetails serviceReqDetails = ElementFactory.getDefaultService(); + runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, vnfFile); + } + + @Test + public void performanceTest() throws Exception { + LOGGER.debug("Start test"); + Long actualTestRunTime = Utils.getActionDuration(() -> { + try { + onboardVNFTestSanityOneFile(); + } catch (final Exception e) { + LOGGER.debug("An error has occurred during the performance test", e); + } + }); + long regularTestRunTime = 400L; + double factor = 1.5; + assertTrue("Expected test run time should be less from " + regularTestRunTime * factor + ", actual time is " + actualTestRunTime, regularTestRunTime * factor > actualTestRunTime); + } + + @Test + public void onboardVNFTestSanity() throws Exception { + List<String> fileNamesFromFolder = OnboardingUtils.getXnfNamesFileList(XnfTypeEnum.VNF); + String vnfFile = fileNamesFromFolder.get(0); + ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource(); + ServiceReqDetails serviceReqDetails = ElementFactory.getDefaultService(); + runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, vnfFile); + } + + @Test(dataProviderClass = OnboardingDataProviders.class, dataProvider = "Single_VNF") + public void onapOnboardVNFflow(String filePath, String vnfFile) throws Exception { + setLog(vnfFile); + ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource(); + ServiceReqDetails serviceReqDetails = ElementFactory.getDefaultService(); + runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, vnfFile); + } + + @Test(dataProviderClass = OnboardingDataProviders.class, dataProvider = "Single_VNF") + public void onapOnboardVSPValidationsSanityFlow(String filePath, String vnfFile) throws Exception { + setLog(vnfFile); + String vspName = createNewVSP(filePath, vnfFile); + if (OnboardingUiUtils.getVspValidationCongiguration()) { + goToVspScreen(true, vspName); + + //check links are available + checkVspValidationLinksVisibility(); + + VspValidationPage.navigateToVspValidationPageUsingNavbar(); + assertTrue(NEXT_BUTTON_IS_ENABLED_IT_SHOULD_HAVE_BEEN_DISABLED, + VspValidationPage.checkNextButtonDisabled()); + VspValidationResultsPage.navigateToVspValidationResultsPageUsingNavbar(); + GeneralUIUtils.ultimateWait(); + assertNotNull(GeneralUIUtils.findByText("No Test Performed")); + } else { + goToVspScreen(true, vspName); + + //check links are not available + checkVspValidationLinksInvisibility(); + } + } + + @Test(dataProviderClass = OnboardingDataProviders.class, dataProvider = "softwareInformationPnf") + public void onboardPNFSoftwareInformationFlow(final String rootFolder, final String pnfFile, + final List<String> softwareVersionList) { + setLog(pnfFile); + final String resourceName = ElementFactory.addRandomSuffixToName(ElementFactory.getResourcePrefix()); + runOnboardPnfSoftwareVersion(resourceName, rootFolder, pnfFile, softwareVersionList); + } + + @Test(dataProviderClass = OnboardingDataProviders.class, dataProvider = "Single_VNF") + public void onapOnboardVSPValidationsConfigurationChangeCheck(String filePath, String vnfFile) throws Exception { + setLog(vnfFile); + String vspName = createNewVSP(filePath, vnfFile); + if (OnboardingUiUtils.getVspValidationCongiguration()) { + goToVspScreen(true, vspName); + //check links are available + checkVspValidationLinksVisibility(); + + //change config + changeVspValidationConfig(false, vspName, OnboardingUiUtils.getVspValidationCongiguration()); + + //check links are not available + checkVspValidationLinksInvisibility(); + } else { + goToVspScreen(true, vspName); + //check links are not available + checkVspValidationLinksInvisibility(); + + changeVspValidationConfig(false, vspName, OnboardingUiUtils.getVspValidationCongiguration()); + + //check links are available + checkVspValidationLinksVisibility(); + } + } + + @Test(dataProviderClass = OnboardingDataProviders.class, dataProvider = "Single_VNF") + public void onapOnboardVSPCertificationQueryFlow(String filePath, String vnfFile) throws Exception { + setLog(vnfFile); + String vspName = createNewVSP(filePath, vnfFile); + if (!OnboardingUiUtils.getVspValidationCongiguration()) { + //change config to true to test the feature + changeVspValidationConfig(true, vspName, OnboardingUiUtils.getVspValidationCongiguration()); + } else { + goToVspScreen(true, vspName); + } + VspValidationPage.navigateToVspValidationPageUsingNavbar(); + assertTrue(NEXT_BUTTON_IS_ENABLED_IT_SHOULD_HAVE_BEEN_DISABLED, VspValidationPage.checkNextButtonDisabled()); + + if (VspValidationPage.checkCertificationQueryExists()) { + VspValidationPage.clickCertificationQueryAll(); + GeneralUIUtils.ultimateWait(); + assertTrue(NEXT_BUTTON_IS_DISABLED_IT_SHOULD_HAVE_BEEN_ENABLED, + !VspValidationPage.checkNextButtonDisabled()); + VspValidationPage.clickOnNextButton(); + GeneralUIUtils.ultimateWait(); + VspValidationPage.clickOnSubmitButton(); + GeneralUIUtils.waitForLoader(); + assertTrue(RESULTS_ARE_NOT_AVAILABLE, VspValidationResultsPage.checkResultsExist()); + } else { + assertNotNull(GeneralUIUtils.findByText("No Certifications Query are Available")); + } + + } + + @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "Single_Vsp_Test_Csar") + public void onapOnboardVSPComplianceCheckFlow(String filePath, String vnfFile) throws Exception { + setLog(vnfFile); + String vspName = createNewVSP(filePath, vnfFile); + if (!OnboardingUiUtils.getVspValidationCongiguration()) { + //change config to true to test the feature + changeVspValidationConfig(true, vspName, OnboardingUiUtils.getVspValidationCongiguration()); + } else { + goToVspScreen(true, vspName); + } + + VspValidationPage.navigateToVspValidationPageUsingNavbar(); + assertTrue(NEXT_BUTTON_IS_ENABLED_IT_SHOULD_HAVE_BEEN_ENABLED, VspValidationPage.checkNextButtonDisabled()); + if (VspValidationPage.checkComplianceCheckExists()) { + VspValidationPage.clickComplianceChecksAll(); + GeneralUIUtils.ultimateWait(); + assertFalse(NEXT_BUTTON_IS_DISABLED_IT_SHOULD_HAVE_BEEN_ENABLED, + VspValidationPage.checkNextButtonDisabled()); + VspValidationPage.clickOnNextButton(); + GeneralUIUtils.ultimateWait(); + VspValidationPage.loadVSPFile(filePath, vnfFile); + VspValidationPage.clickOnSubmitButton(); + GeneralUIUtils.ultimateWait(); + assertTrue(RESULTS_ARE_NOT_AVAILABLE, VspValidationResultsPage.checkResultsExist()); + } else { + assertNotNull(GeneralUIUtils.findByText(NO_TESTS_ARE_AVAILABLE)); + } + + } + + @Test(dataProviderClass = OnboardingDataProviders.class, dataProvider = "Single_VNF") + public void onapOnboardVSPComplianceCheckOperations(String filePath, String vnfFile) throws Exception { + setLog(vnfFile); + String vspName = createNewVSP(filePath, vnfFile); + if (!OnboardingUiUtils.getVspValidationCongiguration()) { + //change config to true to test the feature + changeVspValidationConfig(true, vspName, OnboardingUiUtils.getVspValidationCongiguration()); + } else { + goToVspScreen(true, vspName); + } + + VspValidationPage.navigateToVspValidationPageUsingNavbar(); + assertTrue(NEXT_BUTTON_IS_ENABLED_IT_SHOULD_HAVE_BEEN_ENABLED, VspValidationPage.checkNextButtonDisabled()); + if (VspValidationPage.checkComplianceCheckExists()) { + assertFalse(THE_TESTS_ARE_ALREADY_SELECTED_THE_LIST_SHOULD_INITIALLY_BE_EMPTY, + VspValidationPage.checkSelectedComplianceCheckExists()); + VspValidationPage.clickComplianceChecksAll(); + GeneralUIUtils.ultimateWait(); + assertTrue(THE_SELECTED_TESTS_ARE_NOT_POPULATED_IN_THE_LIST, + VspValidationPage.checkSelectedComplianceCheckExists()); + VspValidationPage.clickComplianceChecksAll(); + GeneralUIUtils.ultimateWait(); + assertFalse(THE_SELECTED_TESTS_ARE_NOT_DELETED_FROM_THE_LIST, + VspValidationPage.checkSelectedComplianceCheckExists()); + } else { + assertNotNull(GeneralUIUtils.findByText(NO_TESTS_ARE_AVAILABLE)); + } + + } + + @Test(dataProviderClass = OnboardingDataProviders.class, dataProvider = "Single_VNF") + public void onapOnboardVSPCertificationQueryOperations(String filePath, String vnfFile) throws Exception { + setLog(vnfFile); + String vspName = createNewVSP(filePath, vnfFile); + if (!OnboardingUiUtils.getVspValidationCongiguration()) { + //change config to true to test the feature + changeVspValidationConfig(true, vspName, OnboardingUiUtils.getVspValidationCongiguration()); + } else { + goToVspScreen(true, vspName); + } + + VspValidationPage.navigateToVspValidationPageUsingNavbar(); + assertTrue(NEXT_BUTTON_IS_ENABLED_IT_SHOULD_HAVE_BEEN_ENABLED, VspValidationPage.checkNextButtonDisabled()); + if (VspValidationPage.checkCertificationQueryExists()) { + assertFalse(THE_TESTS_ARE_ALREADY_SELECTED_THE_LIST_SHOULD_INITIALLY_BE_EMPTY, + VspValidationPage.checkSelectedCertificationQueryExists()); + VspValidationPage.clickCertificationQueryAll(); + GeneralUIUtils.ultimateWait(); + assertTrue(THE_SELECTED_TESTS_ARE_NOT_POPULATED_IN_THE_LIST, VspValidationPage.checkSelectedCertificationQueryExists()); + VspValidationPage.clickCertificationQueryAll(); + GeneralUIUtils.ultimateWait(); + assertFalse(THE_SELECTED_TESTS_ARE_NOT_DELETED_FROM_THE_LIST, + VspValidationPage.checkSelectedCertificationQueryExists()); + } else { + assertNotNull(GeneralUIUtils.findByText(NO_TESTS_ARE_AVAILABLE)); + } + + } + + private void checkVspValidationLinksVisibility() { + //check links are available + assertTrue("Validation Link is not available", GeneralUIUtils.isElementVisibleByTestId(DataTestIdEnum.VspValidationPage.VSP_VALIDATION_PAGE_NAVBAR.getValue())); + assertTrue("Validation Results Link is not available", GeneralUIUtils.isElementVisibleByTestId(DataTestIdEnum.VspValidationResultsPage.VSP_VALIDATION_RESULTS_PAGE_NAVBAR.getValue())); + } + + private void checkVspValidationLinksInvisibility() { + //check links not available + assertTrue("Validation Link is still available", GeneralUIUtils.isElementInvisibleByTestId(DataTestIdEnum.VspValidationPage.VSP_VALIDATION_PAGE_NAVBAR.getValue())); + assertTrue("Validation Results Link is still available", GeneralUIUtils.isElementInvisibleByTestId(DataTestIdEnum.VspValidationResultsPage.VSP_VALIDATION_RESULTS_PAGE_NAVBAR.getValue())); + } + + private void changeVspValidationConfig(boolean isCurrentScreenCatalogPage, String vspName, boolean vspConfig) throws Exception { + //change config + OnboardingUiUtils.putVspValidationCongiguration(!vspConfig); + assertTrue(String.format("Failed to set Congiguration to %s", !vspConfig), OnboardingUiUtils.getVspValidationCongiguration() != vspConfig); + + if (!isCurrentScreenCatalogPage) { + GeneralUIUtils.refreshWebpage(); + GeneralUIUtils.ultimateWait(); + } + + goToVspScreen(isCurrentScreenCatalogPage, vspName); + + //revert the config + OnboardingUiUtils.putVspValidationCongiguration(vspConfig); + assertEquals(String.format("Failed to revert Configuration to %s", vspConfig), vspConfig, + OnboardingUiUtils.getVspValidationCongiguration()); + } + + private void goToVspScreen(boolean isCurrentScreenCatalogPage, String vspName) { + if (isCurrentScreenCatalogPage) { + GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.MainMenuButtons.ONBOARD_BUTTON.getValue()); + } + GeneralUIUtils.clickOnElementByText(vspName); + GeneralUIUtils.ultimateWait(); + } + + private String createNewVSP(String filePath, String vnfFile) throws Exception { + ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource(); + return OnboardingUiUtils.createVSP(resourceReqDetails, vnfFile, filePath, getUser()).getName(); + } + + public void runOnboardPnfSoftwareVersion(final String resourceName, final String rootFolder, + final String pnfFile, final List<String> softwareVersionList) { + final ExtentTest extendTest = getExtendTest(); + + final String swVersionsToString = String.join(", ", softwareVersionList); + + extendTest.log(Status.INFO, + String.format("Creating VSP '%s' by onboarding package '%s' with software version '%s'", + resourceName, pnfFile, swVersionsToString) + ); + final WebDriver webDriver = DriverFactory.getDriver(); + final CreateVspFlow createVspFlow = new CreateVspFlow(webDriver, resourceName, pnfFile, rootFolder); + createVspFlow.run(new TopNavComponent(webDriver)); + + final ImportVspFlow importVspFlow = new ImportVspFlow(webDriver, resourceName); + final ResourceCreatePage resourceCreatePage = + (ResourceCreatePage) importVspFlow.run() + .orElseThrow(() -> new UiTestFlowRuntimeException("Missing expected return ResourceCreatePage")); + + final CreateResourceFlow createResourceFlow = new CreateResourceFlow(webDriver, resourceName); + createResourceFlow.run(resourceCreatePage); + + final CheckSoftwareVersionPropertyFlow checkSoftwareVersionPropertyFlow = + new CheckSoftwareVersionPropertyFlow(webDriver, softwareVersionList); + checkSoftwareVersionPropertyFlow.run(); + + extendTest.log(Status.INFO, + String.format("Successfully onboarded the package '%s' with software version '%s'", + pnfFile, swVersionsToString) + ); + } + + private void runOnboardToDistributionFlow(ResourceReqDetails resourceReqDetails, ServiceReqDetails serviceMetadata, String filePath, String vnfFile) throws Exception { + getExtendTest().log(Status.INFO, "Going to create resource with category: " + resourceReqDetails.getCategories().get(0).getName() + + " subCategory: " + resourceReqDetails.getCategories().get(0).getSubcategories().get(0).getName() + + " and service category: " + serviceMetadata.getCategory()); + final String vspName = onboardAndCertify(resourceReqDetails, filePath, vnfFile); + + ServiceUIUtils.createService(serviceMetadata); + + ServiceGeneralPage.getLeftMenu().moveToCompositionScreen(); + Service containerObject = AtomicOperationUtils.getServiceObjectByNameAndVersion(UserRoleEnum.DESIGNER, serviceMetadata.getName(), "0.1"); + Resource instanceObject = AtomicOperationUtils.getResourceObjectByNameAndVersion(UserRoleEnum.DESIGNER, vspName, "1.0"); + ComponentInstance componentInstanceDetails = AtomicOperationUtils.addComponentInstanceToComponentContainer(instanceObject, containerObject, UserRoleEnum.DESIGNER, true).left().value(); + + GeneralUIUtils.clickOnAreaJS(DataTestIdEnum.LifeCyleChangeButtons.CERTIFY.getValue()); + + GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.DistributionChangeButtons.APPROVE_MESSAGE.getValue()) + .sendKeys("service " + serviceMetadata.getName() + " certified successfully"); + GeneralPageElements.clickOKButton(); + getExtendTest().log(Status.INFO, String.format("Successfully onboarded the package '%s'", vnfFile)); + } + + private void runDistributionFlow(final ServiceReqDetails serviceMetadata) throws Exception { + if (makeDistributionValue) { + reloginWithNewRole(UserRoleEnum.OPS); + GeneralUIUtils.findComponentAndClick(serviceMetadata.getName()); + OpsOperationPage.distributeService(); + OpsOperationPage.displayMonitor(); + + final List<WebElement> rowsFromMonitorTable = OpsOperationPage.getRowsFromMonitorTable(); + AssertJUnit.assertEquals(1, rowsFromMonitorTable.size()); + + OpsOperationPage.waitUntilArtifactsDistributed(0); + } + } + + private String onboardAndCertify(ResourceReqDetails resourceReqDetails, String filePath, String vnfFile) throws Exception { + VendorSoftwareProductObject onboardAndValidate = OnboardingUiUtils.onboardAndValidate(resourceReqDetails, filePath, vnfFile, getUser()); + String vspName = onboardAndValidate.getName(); + + DeploymentArtifactPage.getLeftPanel().moveToCompositionScreen(); + ExtentTestActions.addScreenshot(Status.INFO, "TopologyTemplate_" + vnfFile, "The topology template for " + vnfFile + " is as follows : "); + + DeploymentArtifactPage.clickCertifyButton(vspName); + return vspName; + } + + + @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "VNF_List") + public void onboardVNFTest(String filePath, String vnfFile) throws Exception { + setLog(vnfFile); + ResourceReqDetails resourceReqDetails = ElementFactory.getRandomCategoryResource(); + ServiceReqDetails serviceReqDetails = ElementFactory.getRandomCategoryService(); + runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, vnfFile); + } + + @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "VNF_List") + public void onboardVNFShotFlow(String filePath, String vnfFile) throws Exception { + setLog(vnfFile); + ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource(); + onboardAndCertify(resourceReqDetails, filePath, vnfFile); + } + + @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "randomVNF_List") + public void onboardRandomVNFsTest(String filePath, String vnfFile) throws Exception { + setLog(vnfFile); + LOGGER.debug("Vnf File name is: {}", vnfFile); + ResourceReqDetails resourceReqDetails = ElementFactory.getRandomCategoryResource(); + ServiceReqDetails serviceReqDetails = ElementFactory.getRandomCategoryService(); + runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, vnfFile); + } + + + @Test + public void onboardUpdateVNFTest() throws Exception { + List<String> fileNamesFromFolder = FileHandling.getZipFileNamesFromFolder(filePath); + String vnfFile = fileNamesFromFolder.get(0); + ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource(); + VendorSoftwareProductObject vsp = OnboardingUiUtils.onboardAndValidate(resourceReqDetails, filePath, vnfFile, getUser()); + String vspName = vsp.getName(); + ResourceGeneralPage.clickCertifyButton(vspName); + + // create service + ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService(); + ServiceUIUtils.createService(serviceMetadata); + + ServiceGeneralPage.getLeftMenu().moveToCompositionScreen(); + CompositionPage.searchForElement(vspName); + CanvasManager serviceCanvasManager = CanvasManager.getCanvasManager(); + CanvasElement vfElement = serviceCanvasManager.createElementOnCanvas(vspName); + assertNotNull(vfElement); + ServiceVerificator.verifyNumOfComponentInstances(serviceMetadata, "0.1", 1, getUser()); + + if (!HomePage.navigateToHomePage()) { + fail("Could not go to the home page"); + } + + ///update flow + String updatedVnfFile = fileNamesFromFolder.get(1); + + getExtendTest().log(Status.INFO, String.format("Going to update the VNF with %s......", updatedVnfFile)); + // update VendorSoftwareProduct + OnboardingUiUtils.updateVnfAndValidate(filePath, vsp, updatedVnfFile, getUser()); + ResourceGeneralPage.clickCertifyButton(vspName); + + // replace exiting VFI in service with new updated + + GeneralUIUtils.findComponentAndClick(serviceMetadata.getName()); + ServiceGeneralPage.getLeftMenu().moveToCompositionScreen(); + serviceCanvasManager = CanvasManager.getCanvasManager(); + CompositionPage.changeComponentVersion(serviceCanvasManager, vfElement, "2.0"); + ServiceVerificator.verifyNumOfComponentInstances(serviceMetadata, "0.1", 1, getUser()); + + ServiceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName()); + + reloginWithNewRole(UserRoleEnum.TESTER); + GeneralUIUtils.findComponentAndClick(serviceMetadata.getName()); + TesterOperationPage.certifyComponent(serviceMetadata.getName()); + + reloginWithNewRole(UserRoleEnum.GOVERNOR); + GeneralUIUtils.findComponentAndClick(serviceMetadata.getName()); + GovernorOperationPage.approveService(serviceMetadata.getName()); + + + reloginWithNewRole(UserRoleEnum.OPS); + GeneralUIUtils.findComponentAndClick(serviceMetadata.getName()); + OpsOperationPage.distributeService(); + OpsOperationPage.displayMonitor(); + + List<WebElement> rowsFromMonitorTable = OpsOperationPage.getRowsFromMonitorTable(); + AssertJUnit.assertEquals(1, rowsFromMonitorTable.size()); + + OpsOperationPage.waitUntilArtifactsDistributed(0); + getExtendTest().log(Status.INFO, String.format("Onboarding %s test is passed ! ", vnfFile)); + } + + + @Test + public void threeVMMSCsInServiceTest() throws Exception { + String pathFile = FileHandling.getFilePath("VmmscArtifacts"); + final String[] list = new File(pathFile).list(); + assertNotNull("Did not find vMMSCs", list); + assertFalse("Did not find vMMSCs", list.length == 0); + List<String> vmmscList = Arrays.stream(list).filter(e -> e.contains("vmmsc") && e.endsWith(".zip")) + .collect(Collectors.toList()); + assertFalse("Did not find vMMSCs", vmmscList.isEmpty()); + + Map<String, String> vspNames = new HashMap<>(); + for (String vnfFile : vmmscList) { + String msg = String.format("Going to onboard the VNF %s", vnfFile); + getExtendTest().log(Status.INFO, msg); + LOGGER.info(msg); + + VendorLicenseModel vendorLicenseModel = VendorLicenseModelRestUtils.createVendorLicense(getUser()); + ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource(); + VendorSoftwareProductObject createVendorSoftwareProduct = VendorSoftwareProductRestUtils + .createVendorSoftwareProduct(resourceReqDetails, vnfFile, pathFile, getUser(), vendorLicenseModel); + + getExtendTest().log(Status.INFO, String.format("Searching for onboarded %s", vnfFile)); + HomePage.showVspRepository(); + getExtendTest().log(Status.INFO, String.format("Going to import %s......", vnfFile.substring(0, vnfFile.indexOf(".")))); + OnboardingUiUtils.importVSP(createVendorSoftwareProduct); + + ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen(); + DeploymentArtifactPage.verifyArtifactsExistInTable(pathFile, vnfFile); + + String vspName = createVendorSoftwareProduct.getName(); + DeploymentArtifactPage.clickCertifyButton(vspName); + vspNames.put(vnfFile, vspName); + } + + // create service + ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService(); + ServiceUIUtils.createService(serviceMetadata); + ServiceGeneralPage.getLeftMenu().moveToCompositionScreen(); + CanvasManager serviceCanvasManager = CanvasManager.getCanvasManager(); + + for (String vsp : vspNames.values()) { + CompositionPage.searchForElement(vsp); + CanvasElement vfElement = serviceCanvasManager.createElementOnCanvas(vsp); + assertNotNull(vfElement); + } + ServiceVerificator.verifyNumOfComponentInstances(serviceMetadata, "0.1", vspNames.values().size(), getUser()); + File imageFilePath = GeneralUIUtils.takeScreenshot(null, SetupCDTest.getScreenshotFolder(), "Info_" + getExtendTest().getModel().getName()); + final String absolutePath = new File(SetupCDTest.getReportFolder()).toURI().relativize(imageFilePath.toURI()).getPath(); + SetupCDTest.getExtendTest().log(Status.INFO, "Three kinds of vMMSC are in canvas now." + getExtendTest().addScreenCaptureFromPath(absolutePath)); + + ServiceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName()); + + reloginWithNewRole(UserRoleEnum.TESTER); + GeneralUIUtils.findComponentAndClick(serviceMetadata.getName()); + TesterOperationPage.certifyComponent(serviceMetadata.getName()); + + reloginWithNewRole(UserRoleEnum.GOVERNOR); + GeneralUIUtils.findComponentAndClick(serviceMetadata.getName()); + GovernorOperationPage.approveService(serviceMetadata.getName()); + + reloginWithNewRole(UserRoleEnum.OPS); + GeneralUIUtils.findComponentAndClick(serviceMetadata.getName()); + OpsOperationPage.distributeService(); + OpsOperationPage.displayMonitor(); + + List<WebElement> rowsFromMonitorTable = OpsOperationPage.getRowsFromMonitorTable(); + AssertJUnit.assertEquals(1, rowsFromMonitorTable.size()); + + OpsOperationPage.waitUntilArtifactsDistributed(0); + } + + + @Override + protected UserRoleEnum getRole() { + return UserRoleEnum.DESIGNER; + } + +} |