/*- * ============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.openecomp.sdc.ci.tests.utilities; import com.aventstack.extentreports.Status; import com.clearspring.analytics.util.Pair; import org.openecomp.sdc.be.model.User; import org.openecomp.sdc.ci.tests.datatypes.*; import org.openecomp.sdc.ci.tests.execute.devCI.ArtifactFromCsar; import org.openecomp.sdc.ci.tests.execute.setup.ArtifactsCorrelationManager; import org.openecomp.sdc.ci.tests.execute.setup.ExtentTestActions; import org.openecomp.sdc.ci.tests.pages.DeploymentArtifactPage; import org.openecomp.sdc.ci.tests.pages.HomePage; import org.openecomp.sdc.ci.tests.pages.ResourceGeneralPage; import org.openecomp.sdc.ci.tests.utils.general.VendorLicenseModelRestUtils; import org.openecomp.sdc.ci.tests.utils.general.VendorSoftwareProductRestUtils; import org.openecomp.sdc.ci.tests.verificator.VfVerificator; import org.openqa.selenium.WebElement; import org.testng.Assert; import java.io.File; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class OnboardingUiUtils { private static void importUpdateVSP(Pair vsp, boolean isUpdate) throws Exception{ String vspName = vsp.left; VendorSoftwareProductObject vspMetadata = vsp.right; boolean vspFound = HomePage.searchForVSP(vspName); if (vspFound){ List elemenetsFromTable = HomePage.getElemenetsFromTable(); // WebDriverWait wait = new WebDriverWait(GeneralUIUtils.getDriver(), 30); // WebElement findElement = wait.until(ExpectedConditions.visibilityOf(elemenetsFromTable.get(1))); // findElement.click(); elemenetsFromTable.get(1).click(); GeneralUIUtils.waitForLoader(); if (isUpdate){ GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.ImportVfRepository.UPDATE_VSP.getValue()); } else{ GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.ImportVfRepository.IMPORT_VSP.getValue()); } String lifeCycleState = ResourceGeneralPage.getLifeCycleState(); boolean needCheckout = lifeCycleState.equals(LifeCycleStateEnum.CHECKIN.getValue()) || lifeCycleState.equals(LifeCycleStateEnum.CERTIFIED.getValue()); if (needCheckout) { try { ResourceGeneralPage.clickCheckoutButton(); Assert.assertTrue(ResourceGeneralPage.getLifeCycleState().equals(LifeCycleStateEnum.CHECKOUT.getValue()), "Did not succeed to checkout"); } catch (Exception e) { ExtentTestActions.log(Status.ERROR, "Did not succeed to checkout"); e.printStackTrace(); } GeneralUIUtils.waitForLoader(); } //Metadata verification VfVerificator.verifyOnboardedVnfMetadata(vspName, vspMetadata); ExtentTestActions.log(Status.INFO, "Clicking create/update VNF"); String duration = GeneralUIUtils.getActionDuration(() -> waitUntilVnfCreated()); ExtentTestActions.log(Status.INFO, "Succeeded in importing/updating " + vspName, duration); } else{ Assert.fail("Did not find VSP named " + vspName); } } private static void waitUntilVnfCreated() { GeneralUIUtils.clickOnElementByTestIdWithoutWait(DataTestIdEnum.GeneralElementsEnum.CREATE_BUTTON.getValue()); GeneralUIUtils.waitForLoader(60*10); GeneralUIUtils.waitForAngular(); GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.GeneralElementsEnum.CHECKIN_BUTTON.getValue()); } public static void updateVSP(Pair vsp) throws Exception{ ExtentTestActions.log(Status.INFO, "Updating VSP " + vsp.left); importUpdateVSP(vsp, true); } public static void importVSP(Pair vsp) throws Exception{ ExtentTestActions.log(Status.INFO, "Importing VSP " + vsp.left); importUpdateVSP(vsp, false); } public static void updateVnfAndValidate(String filePath, Pair vsp, String updatedVnfFile, User user) throws Exception, Throwable { ExtentTestActions.log(Status.INFO, String.format("Going to update the VNF with %s......", updatedVnfFile)); System.out.println(String.format("Going to update the VNF with %s......", updatedVnfFile)); VendorSoftwareProductRestUtils.updateVendorSoftwareProductToNextVersion(vsp.right, user, filePath, updatedVnfFile); HomePage.showVspRepository(); updateVSP(vsp); ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen(); DeploymentArtifactPage.verifyArtifactsExistInTable(filePath, updatedVnfFile); } public static Pair onboardAndValidate(ResourceReqDetails resourceReqDetails, String filepath, String vnfFile, User user) throws Exception { ExtentTestActions.log(Status.INFO, String.format("Going to onboard the VNF %s", vnfFile)); System.out.println(String.format("Going to onboard the VNF %s", vnfFile)); AmdocsLicenseMembers amdocsLicenseMembers = VendorLicenseModelRestUtils.createVendorLicense(user); Pair createVendorSoftwareProduct = VendorSoftwareProductRestUtils.createVendorSoftwareProduct(resourceReqDetails, vnfFile, filepath, user, amdocsLicenseMembers); String vspName = createVendorSoftwareProduct.left; DownloadManager.downloadCsarByNameFromVSPRepository(vspName, createVendorSoftwareProduct.right.getVspId()); File latestFilefromDir = FileHandling.getLastModifiedFileNameFromDir(); ExtentTestActions.log(Status.INFO, String.format("Searching for onboarded %s", vnfFile)); HomePage.showVspRepository(); ExtentTestActions.log(Status.INFO,String.format("Going to import %s", vnfFile.substring(0, vnfFile.indexOf(".")))); importVSP(createVendorSoftwareProduct); ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen(); // Verify deployment artifacts Map combinedMap = ArtifactFromCsar.combineHeatArtifacstWithFolderArtifacsToMap(latestFilefromDir.getAbsolutePath()); LinkedList deploymentArtifacts = ((LinkedList) combinedMap.get("Deployment")); ArtifactsCorrelationManager.addVNFartifactDetails(vspName, deploymentArtifacts); List heatEnvFilesFromCSAR = deploymentArtifacts.stream().filter(e -> e.getType().equals("HEAT_ENV")). map(e -> e.getFileName()). collect(Collectors.toList()); validateDeploymentArtifactsVersion(deploymentArtifacts, heatEnvFilesFromCSAR); DeploymentArtifactPage.verifyArtifactsExistInTable(filepath, vnfFile); return createVendorSoftwareProduct; } public static void validateDeploymentArtifactsVersion(LinkedList deploymentArtifacts, List heatEnvFilesFromCSAR) { String artifactVersion; String artifactName; for(HeatMetaFirstLevelDefinition deploymentArtifact: deploymentArtifacts) { artifactVersion = "1"; if(deploymentArtifact.getType().equals("HEAT_ENV")) { continue; } else if(deploymentArtifact.getFileName().contains(".")) { artifactName = deploymentArtifact.getFileName().trim().substring(0, deploymentArtifact.getFileName().lastIndexOf(".")); } else { artifactName = deploymentArtifact.getFileName().trim(); } if (heatEnvFilesFromCSAR.contains(artifactName + ".env")){ artifactVersion = "2"; } ArtifactUIUtils.validateArtifactNameVersionType(artifactName, artifactVersion, deploymentArtifact.getType()); } } }