diff options
Diffstat (limited to 'ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute')
8 files changed, 1615 insertions, 0 deletions
diff --git a/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/base/SetupCDTest.java b/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/base/SetupCDTest.java new file mode 100644 index 0000000000..42e9f137ec --- /dev/null +++ b/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/base/SetupCDTest.java @@ -0,0 +1,408 @@ +package org.openecomp.sdc.uici.tests.execute.base; + +import java.io.FileNotFoundException; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import org.apache.commons.lang.NotImplementedException; +import org.apache.log4j.Logger; +import org.apache.tinkerpop.gremlin.structure.Edge; +import org.apache.tinkerpop.gremlin.structure.Vertex; +import org.junit.rules.TestName; +import org.openecomp.sdc.uici.tests.datatypes.CleanTypeEnum; +import org.openecomp.sdc.uici.tests.datatypes.UserCredentials; +import org.openecomp.sdc.uici.tests.utilities.FileHandling; +import org.openecomp.sdc.uici.tests.utilities.GeneralUIUtils; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.testng.AssertJUnit; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.BeforeSuite; +import org.testng.annotations.Optional; +import org.testng.annotations.Parameters; + +import org.openecomp.sdc.be.model.User; +import org.openecomp.sdc.ci.tests.api.ComponentBaseTest; +import org.openecomp.sdc.ci.tests.config.Config; +import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum; +import org.openecomp.sdc.ci.tests.run.StartTest; +import org.openecomp.sdc.ci.tests.utils.Utils; +import org.openecomp.sdc.common.datastructure.FunctionalInterfaces; +import com.google.common.collect.Lists; +import com.thinkaurelius.titan.core.TitanGraph; + +public abstract class SetupCDTest extends ComponentBaseTest { + + private TitanSnapshot snapshot; + private static CleanTypeEnum cleanType; + + public SetupCDTest() { + super(new TestName(), SetupCDTest.class.getName()); + } + + public SetupCDTest(TestName name, String className) { + super(name, className); + } + + public static Logger logger = Logger.getLogger(SetupCDTest.class.getName()); + + /**************** CONSTANTS ****************/ + private static final String CREDENTIALS_FILE = "src/main/resources/ci/conf/credentials.yaml"; + public static final String SELENIUM_NODE_URL = "http://%s:%s/wd/hub"; + + /**************** PRIVATES ****************/ + public static Config config; + private Map<?, ?> credentialsYamlFileMap; + + private static String devUrl, cdUrl; + + /**************** + * BEFORE + * + * @throws FileNotFoundException + ****************/ + + @BeforeSuite(alwaysRun = true) + @Parameters({ "clean-type" }) + public void setEnvParameters(@Optional("PARTIAL") String cleanType) throws FileNotFoundException { + this.cleanType = CleanTypeEnum.findByName(cleanType); + System.out.println("setup before class"); + config = Utils.getConfig(); + loadCredentialsFile(); + setUrl(); + } + + @BeforeMethod(alwaysRun = true) + public void setBrowserBeforeTest() { + setBrowserBeforeTest(getRole()); + } + + /**************** AFTER ****************/ + @AfterMethod(alwaysRun = true) + public void quitAfterTest() { + System.out.println("closing browser"); + GeneralUIUtils.getDriver().quit(); + } + + @BeforeMethod(alwaysRun = true) + public void beforeState() throws Exception { + CleanTypeEnum cleanType = getCleanMode(); + switch (cleanType) { + case FULL: { + super.beforeState(null); + break; + } + case PARTIAL: { + takeTitanSnapshot(); + break; + } + case NONE: { + // No Clean Up + break; + } + default: { + throw new NotImplementedException("Enum Value:" + cleanType.name() + " Is not handled"); + } + } + + } + + @AfterMethod(alwaysRun = true) + public void afterState() throws Exception { + CleanTypeEnum cleanType = getCleanMode(); + switch (cleanType) { + case FULL: { + super.afterState(null); + break; + } + case PARTIAL: { + resetToOriginalSnapshot(); + break; + } + case NONE: { + // No Clean Up + break; + } + default: { + throw new NotImplementedException("Enum Value:" + cleanType.name() + " Is not handled"); + } + } + + } + + private void takeTitanSnapshot() { + List<Edge> edgeList = Lists.newArrayList(getTitanGraph().edges(null)); + List<Vertex> verList = Lists.newArrayList(getTitanGraph().vertices(null)); + setSnapshot(new TitanSnapshot(edgeList, verList)); + + } + + private static class TitanSnapshot { + List<Edge> edges; + List<Vertex> vertices; + + public List<Edge> getEdges() { + return edges; + } + + public List<Vertex> getVertices() { + return vertices; + } + + private TitanSnapshot(List<Edge> edges, List<Vertex> vertices) { + super(); + this.edges = edges; + this.vertices = vertices; + } + } + + private void resetToOriginalSnapshot() { + + List<Edge> joinedEdges = new ArrayList<>(); + List<Vertex> joinedVertices = new ArrayList<>(); + TitanSnapshot original = getSnapshot(); + takeTitanSnapshot(); + TitanSnapshot current = getSnapshot(); + + original.getEdges().stream().forEach(e -> addIfIdInList(e, current.getEdges(), joinedEdges, e2 -> e2.id())); + original.getVertices().stream() + .forEach(e -> addIfIdInList(e, current.getVertices(), joinedVertices, e2 -> e2.id())); + + List<Edge> edgesToRemove = removeFromList(current.getEdges(), joinedEdges, e2 -> e2.id()); + List<Vertex> verticesToRemove = removeFromList(current.getVertices(), joinedVertices, e2 -> e2.id()); + + List<Edge> edgesToAdd = removeFromList(original.getEdges(), joinedEdges, e2 -> e2.id()); + List<Vertex> verticesToAdd = removeFromList(original.getVertices(), joinedVertices, e2 -> e2.id()); + + if (edgesToAdd.isEmpty() && verticesToAdd.isEmpty()) { + edgesToRemove.stream().forEach(e -> e.remove()); + verticesToRemove.stream().forEach(v -> v.remove()); + } + + } + + private <Element, ID> List<Element> removeFromList(List<Element> listToRemoveFrom, List<Element> elementsToRemove, + Function<Element, ID> idGetter) { + Set<ID> idSet = new HashSet<>(); + // Fill The Set + elementsToRemove.stream().map(e -> idGetter.apply(e)).forEach(e2 -> idSet.add(e2)); + return listToRemoveFrom.stream().filter(p -> !idSet.contains(idGetter.apply(p))).collect(Collectors.toList()); + + } + + private <Element, ID> void addIfIdInList(Element e, List<Element> listToCheck, List<Element> listToAddTo, + Function<Element, ID> idGetter) { + Stream<Element> matchingElements = listToCheck.stream() + .filter(p -> idGetter.apply(e).equals(idGetter.apply(p))); + listToAddTo.addAll(matchingElements.collect(Collectors.toList())); + } + + /**************** MAIN ****************/ + public static void main(String[] args) { + System.out.println("---------------------"); + System.out.println("running test from CLI"); + System.out.println("---------------------"); + args = new String[] { "ui-ci.xml" }; + StartTest.main(args); + } + + /***********************************************************************************/ + + protected void setBrowserBeforeTest(UserRoleEnum role) { + System.out.println("setup before test"); + GeneralUIUtils.initDriver(); + setDevUrl(role); + loginWithUser(role); + } + + protected void setUrl() { + cdUrl = config.getUrl(); + setDevUrl(getRole()); + } + + private Map<String, String> loadCredentialsFile() { + final String credintialsFile = (System.getProperty("credentials.file") != null) + ? System.getProperty("credentials.file") : CREDENTIALS_FILE; + System.out.println("credentials file is : " + credintialsFile); + FunctionalInterfaces.swallowException( + () -> credentialsYamlFileMap = (Map<String, String>) FileHandling.parseYamlFile(credintialsFile)); + System.out.println(credentialsYamlFileMap.toString()); + return (Map<String, String>) credentialsYamlFileMap; + } + + protected UserCredentials getUserCredentialsFromFile(String userRole) throws Exception { + Map<String, String> credentialsMap = (Map<String, String>) credentialsYamlFileMap.get(userRole); + String user = (String) credentialsMap.get("username"); + String password = (String) credentialsMap.get("password"); + String firstname = (String) credentialsMap.get("firstname"); + String lastname = (String) credentialsMap.get("lastname"); + + return new UserCredentials(user, password, firstname, lastname); + } + + public void navigateToUrl(String url) throws InterruptedException { + WebDriver driver = GeneralUIUtils.getDriver(); + System.out.println("navigating to URL :" + url); + driver.navigate().to(url); + driver.manage().window().maximize(); + driver.manage().deleteAllCookies(); + } + + protected void loginToSystem(UserCredentials credentials) throws Exception { + + sendUserAndPasswordKeys(credentials); + WebElement submitButton = GeneralUIUtils.getDriver().findElement(By.name("btnSubmit")); + submitButton.click(); + WebElement buttonOK = GeneralUIUtils.getDriver().findElement(By.name("successOK")); + AssertJUnit.assertTrue(buttonOK.isDisplayed()); + buttonOK.click(); + System.out.println("Entering to design studio"); + Thread.sleep(2000); + WebElement enterToUserWorkspaceButton = GeneralUIUtils.getDriver() + .findElement(By.xpath("//button[@data-tests-id='Design Studio']")); + enterToUserWorkspaceButton.click(); + } + + private void sendUserAndPasswordKeys(UserCredentials userId) { + System.out.println("Login to system with user : " + userId.getUserId()); + WebElement userNameTextbox = GeneralUIUtils.getDriver().findElement(By.name("userid")); + userNameTextbox.sendKeys(userId.getUserId()); + WebElement passwordTextbox = GeneralUIUtils.getDriver().findElement(By.name("password")); + passwordTextbox.sendKeys(userId.getPassword()); + } + + public String getUrl() { + String url; + final CleanTypeEnum workMode = getCleanMode(); + switch (workMode) { + case FULL: { + url = devUrl; + break; + } + case PARTIAL: { + url = devUrl; + break; + } + case NONE: { + url = cdUrl; + break; + } + default: { + throw new NotImplementedException(workMode.name()); + } + + } + return url; + } + + public static void setDevUrl(UserRoleEnum role) { + String url = SetupCDTest.devUrl; + switch (role) { + case ADMIN: { + url = "http://localhost:8181/sdc1/proxy-admin1#/dashboard"; + break; + } + case DESIGNER: { + url = "http://localhost:8181/sdc1/proxy-designer1#/dashboard"; + // url = "http://localhost:9000/#/dashboard"; + break; + } + case GOVERNOR: { + url = "http://localhost:8181/sdc1/proxy-governor1#/dashboard"; + break; + } + case OPS: { + url = "http://localhost:8181/sdc1/proxy-ops1#/dashboard"; + break; + } + case TESTER: { + url = "http://localhost:8181/sdc1/proxy-tester1#/dashboard"; + break; + } + default: { + break; + } + } + SetupCDTest.devUrl = url; + } + + public static Config getConfig() { + return config; + } + + private User user; + + public void loginWithUser(UserRoleEnum role) { + + setUser(role); + String url = getUrl(); + System.out.println("URL is : " + url); + try { + navigateToUrl(url); + if (url.contains("https://www.e-access")) { + System.out.println("going to update designer user to mechIDs form..."); + UserCredentials credentials = getUserCredentialsFromFile(role.name().toLowerCase()); + loginToSystem(credentials); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + private void setUser(UserRoleEnum role) { + user = new User(); + user.setUserId(role.getUserId()); + user.setFirstName(role.getFirstName()); + user.setRole(role.name()); + } + + /** + * Current User Role + * + * @return + */ + public UserRoleEnum getRole() { + return UserRoleEnum.DESIGNER; + } + + /** + * To change clean type update configuration.<br> + * Do not override this method. + * + * @return + */ + protected final CleanTypeEnum getCleanMode() { + return cleanType; + } + + public User getUser() { + return user; + } + + protected void quitAndReLogin(UserRoleEnum role) { + quitAfterTest(); + setBrowserBeforeTest(role); + GeneralUIUtils.waitForLoader(30); + } + + public TitanSnapshot getSnapshot() { + return snapshot; + } + + public void setSnapshot(TitanSnapshot snapshot) { + this.snapshot = snapshot; + } + + public static TitanGraph getTitanGraph() { + return titanGraph; + } + +} diff --git a/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/service/ServiceBasicTests.java b/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/service/ServiceBasicTests.java new file mode 100644 index 0000000000..e42de862b7 --- /dev/null +++ b/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/service/ServiceBasicTests.java @@ -0,0 +1,147 @@ +package org.openecomp.sdc.uici.tests.execute.service; + +import static org.testng.AssertJUnit.assertTrue; + +import java.util.Arrays; + +import org.apache.http.HttpStatus; +import org.openecomp.sdc.uici.tests.datatypes.CanvasElement; +import org.openecomp.sdc.uici.tests.datatypes.CanvasManager; +import org.openecomp.sdc.uici.tests.datatypes.CreateAndUpdateStepsEnum; +import org.openecomp.sdc.uici.tests.datatypes.DataTestIdEnum; +import org.openecomp.sdc.uici.tests.datatypes.DataTestIdEnum.LeftPanelCanvasItems; +import org.openecomp.sdc.uici.tests.execute.base.SetupCDTest; +import org.openecomp.sdc.uici.tests.utilities.ArtifactUIUtils; +import org.openecomp.sdc.uici.tests.utilities.FileHandling; +import org.openecomp.sdc.uici.tests.utilities.GeneralUIUtils; +import org.openecomp.sdc.uici.tests.utilities.ResourceUIUtils; +import org.openecomp.sdc.uici.tests.utilities.RestCDUtils; +import org.openecomp.sdc.uici.tests.utilities.ServiceUIUtils; +import org.openecomp.sdc.uici.tests.verificator.ServiceVerificator; +import org.openecomp.sdc.uici.tests.verificator.VfVerificator; +import org.openqa.selenium.WebElement; +import org.testng.annotations.Test; + +import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails; +import org.openecomp.sdc.ci.tests.datatypes.ServiceReqDetails; +import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum; +import org.openecomp.sdc.common.api.ArtifactTypeEnum; + +public class ServiceBasicTests extends SetupCDTest { + + @Test + public void testCreateService() { + ServiceReqDetails createServiceInUI = ServiceUIUtils.createServiceInUI(getUser()); + ServiceVerificator.verifyServiceCreated(createServiceInUI, getUser()); + } + + @Test + public void testLinkTwoRI() { + + // create 1st VF + ResourceReqDetails resourceOne = ResourceUIUtils.createResourceInUI(getUser()); + assertTrue(RestCDUtils.getResource(resourceOne).getErrorCode() == HttpStatus.SC_OK); + // add LoadBalancer to resource + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.COMPOSITION); + CanvasManager canvasManager = CanvasManager.getCanvasManager(); + canvasManager.createElementOnCanvas(LeftPanelCanvasItems.OBJECT_STORAGE); + GeneralUIUtils.checkIn(); + + // create 2nd VF + ResourceReqDetails resourceTwo = ResourceUIUtils.createResourceInUI(getUser()); + assertTrue(RestCDUtils.getResource(resourceTwo).getErrorCode() == HttpStatus.SC_OK); + // add ObjectStorage to resource + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.COMPOSITION); + canvasManager = CanvasManager.getCanvasManager(); + canvasManager.createElementOnCanvas(LeftPanelCanvasItems.LOAD_BALANCER); + GeneralUIUtils.checkIn(); + + // create service + ServiceReqDetails createServiceInUI = ServiceUIUtils.createServiceInUI(getUser()); + // Verify Service is Created + ServiceVerificator.verifyServiceCreated(createServiceInUI, getUser()); + + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.COMPOSITION); + canvasManager = CanvasManager.getCanvasManager(); + + // adding two resource instances + CanvasElement vfOne = canvasManager.createElementOnCanvas(resourceOne.getName()); + + CanvasElement vfTwo = canvasManager.createElementOnCanvas(resourceTwo.getName()); + // link elements + canvasManager.linkElements(vfOne, vfTwo); + + // check results + ServiceVerificator.verifyServiceCreated(createServiceInUI, getUser()); + ServiceVerificator.verifyLinkCreated(createServiceInUI, getUser()); + + } + + /** + * This method tests the following: <br> + * 1. Import of VF <br> + * 2. Certification Of Vf <br> + * 3. Adding deployment artifact to VF <br> + * 4. Creation of Service <br> + * 5. Adding Vf instance to Service <br> + * 6. Service Certification <br> + * 7. Approving Service to distribution by Governor <br> + * 8. Making sure service is ready to distribute by ops <br> + */ + @Test + public void testBuildServiceForDistribution() { + ResourceReqDetails importedVf = ResourceUIUtils.importVfInUI(getUser(), FileHandling.getResourcesFilesPath(), + "valid_vf.csar"); + GeneralUIUtils.waitForLoader(20); + // Verify Import + VfVerificator.verifyResourceIsCreated(importedVf); + + // Create Deployment Artifact + ArtifactUIUtils.createDeploymentArtifactOnVf(FileHandling.getResourcesFilesPath() + "myYang.xml", + ArtifactTypeEnum.YANG_XML); + VfVerificator.verifyResourceContainsDeploymentArtifacts(importedVf, + Arrays.asList(new ArtifactTypeEnum[] { ArtifactTypeEnum.YANG_XML })); + + // Submit For Testing Process VF + GeneralUIUtils.submitForTestingElement(importedVf.getName()); + + // Certify The VF + quitAndReLogin(UserRoleEnum.TESTER); + ResourceUIUtils.testAndAcceptElement(importedVf); + + // Verify Certification + GeneralUIUtils.waitForLoader(); + VfVerificator.verifyResourceIsCertified(importedVf); + + // Create Service + quitAndReLogin(UserRoleEnum.DESIGNER); + ServiceReqDetails createServiceInUI = ServiceUIUtils.createServiceInUI(getUser()); + ServiceVerificator.verifyServiceCreated(createServiceInUI, getUser()); + + // Drag the VF To the Service + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.COMPOSITION); + CanvasManager canvasManager = CanvasManager.getCanvasManager(); + canvasManager.createElementOnCanvas(importedVf.getName()); + + // Submit For Testing Process Service + GeneralUIUtils.submitForTestingElement(null); + + // Certify The Service + quitAndReLogin(UserRoleEnum.TESTER); + ResourceUIUtils.testAndAcceptElement(createServiceInUI); + ServiceVerificator.verifyServiceCertified(createServiceInUI, getUser()); + + // Approve with governor + quitAndReLogin(UserRoleEnum.GOVERNOR); + ServiceUIUtils.approveServiceForDistribution(createServiceInUI); + + // Log in with Ops and verify that can distribute + quitAndReLogin(UserRoleEnum.OPS); + GeneralUIUtils.getWebElementWaitForVisible(createServiceInUI.getName()).click(); + WebElement distributeWebElement = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.LifeCyleChangeButtons.DISTRIBUTE.getValue()); + assertTrue(distributeWebElement != null); + + } + +} diff --git a/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/service/ServiceInputsTests.java b/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/service/ServiceInputsTests.java new file mode 100644 index 0000000000..b3e8e023ca --- /dev/null +++ b/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/service/ServiceInputsTests.java @@ -0,0 +1,124 @@ +package org.openecomp.sdc.uici.tests.execute.service; + +import static org.testng.AssertJUnit.assertTrue; +import static org.testng.AssertJUnit.assertFalse; + +import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails; +import org.openecomp.sdc.ci.tests.datatypes.ServiceReqDetails; +import org.openecomp.sdc.uici.tests.datatypes.CanvasElement; +import org.openecomp.sdc.uici.tests.datatypes.CanvasManager; +import org.openecomp.sdc.uici.tests.datatypes.CreateAndUpdateStepsEnum; +import org.openecomp.sdc.uici.tests.datatypes.DataTestIdEnum.BreadcrumbsButtonsEnum; +import org.openecomp.sdc.uici.tests.datatypes.DataTestIdEnum.InputsEnum; +import org.openecomp.sdc.uici.tests.datatypes.DataTestIdEnum.ModalItems; +import org.openecomp.sdc.uici.tests.execute.base.SetupCDTest; +import org.openecomp.sdc.uici.tests.utilities.FileHandling; +import org.openecomp.sdc.uici.tests.utilities.GeneralUIUtils; +import org.openecomp.sdc.uici.tests.utilities.ResourceUIUtils; +import org.openecomp.sdc.uici.tests.utilities.ServiceUIUtils; +import org.openecomp.sdc.uici.tests.verificator.ServiceVerificator; +import org.testng.annotations.Test; + +public class ServiceInputsTests extends SetupCDTest { + + public String serviceName = ""; + + @Test + private void testSelectingInputAndAddingItToTheService() { + ServiceInputsTestsSetUp(); + + assertTrue(GeneralUIUtils.getWebElementWaitForVisible(InputsEnum.FIRST_INPUT_CHECKBOX.getValue()).getAttribute("class").contains("disabled")); + assertTrue(GeneralUIUtils.isElementPresent(InputsEnum.SERVICE_INPUT.getValue())); + } + + @Test + private void testDeletingAnInputFromTheService() { + ServiceInputsTestsSetUp(); + + // clicking on the delete input button and accepting the delete + GeneralUIUtils.getWebElementWaitForClickable(InputsEnum.DELETE_INPUT.getValue()).click(); + GeneralUIUtils.getWebElementWaitForClickable(ModalItems.OK.getValue()).click(); + + assertFalse(GeneralUIUtils.getWebElementWaitForVisible(InputsEnum.FIRST_INPUT_CHECKBOX.getValue()).getAttribute("class").contains("disabled")); + assertFalse(GeneralUIUtils.isElementPresent(InputsEnum.SERVICE_INPUT.getValue())); + } + + @Test + private void testCheckingInTheServiceAndButtonsAreDisabled() throws Exception { + ServiceInputsTestsSetUp(); + + // Checking in the service and accessing it again in the home + GeneralUIUtils.checkIn(); + GeneralUIUtils.closeNotificatin(); + GeneralUIUtils.findComponentAndClick(serviceName); + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.INPUTS); + GeneralUIUtils.getWebElementWaitForClickable(InputsEnum.VF_INSTANCE.getValue()).click(); + + assertTrue(GeneralUIUtils.getWebElementWaitForVisible(InputsEnum.FIRST_INPUT_CHECKBOX.getValue()).getAttribute("class").contains("disabled")); + assertTrue(GeneralUIUtils.getWebElementWaitForVisible(InputsEnum.SECOND_INPUT_CHECKBOX.getValue()).getAttribute("class").contains("disabled")); + assertTrue(GeneralUIUtils.getWebElementWaitForVisible(InputsEnum.DELETE_INPUT.getValue()).getAttribute("class").contains("disabled")); + } + + @Test + private void testInputsSanity() throws Exception { + ServiceInputsTestsSetUp(); + + assertTrue(GeneralUIUtils.getWebElementWaitForVisible(InputsEnum.FIRST_INPUT_CHECKBOX.getValue()).getAttribute("class").contains("disabled")); + assertTrue(GeneralUIUtils.isElementPresent(InputsEnum.SERVICE_INPUT.getValue())); + + // clicking on the delete input button and accepting the delete + GeneralUIUtils.getWebElementWaitForClickable(InputsEnum.DELETE_INPUT.getValue()).click(); + GeneralUIUtils.getWebElementWaitForClickable(ModalItems.OK.getValue()).click(); + + assertFalse(GeneralUIUtils.getWebElementWaitForVisible(InputsEnum.FIRST_INPUT_CHECKBOX.getValue()).getAttribute("class").contains("disabled")); + assertFalse(GeneralUIUtils.isElementPresent(InputsEnum.SERVICE_INPUT.getValue())); + + // adding the input to the service again + GeneralUIUtils.getWebElementWaitForClickable(InputsEnum.FIRST_INPUT_CHECKBOX.getValue()).click(); + GeneralUIUtils.getWebElementWaitForClickable(InputsEnum.ADD_INPUTS_BUTTON.getValue()).click(); + + // Checking in the service and accessing it again in the home + GeneralUIUtils.checkIn(); + GeneralUIUtils.closeNotificatin(); + GeneralUIUtils.findComponentAndClick(serviceName); + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.INPUTS); + GeneralUIUtils.getWebElementWaitForClickable(InputsEnum.VF_INSTANCE.getValue()).click(); + + assertTrue(GeneralUIUtils.getWebElementWaitForVisible(InputsEnum.FIRST_INPUT_CHECKBOX.getValue()).getAttribute("class").contains("disabled")); + assertTrue(GeneralUIUtils.getWebElementWaitForVisible(InputsEnum.SECOND_INPUT_CHECKBOX.getValue()).getAttribute("class").contains("disabled")); + } + + private void ServiceInputsTestsSetUp() { + // create vf + String filePath = FileHandling.getResourcesFilesPath(); + String fileName = "service_with_inputs.csar"; + ResourceReqDetails importVfREsourceInUI = ResourceUIUtils.importVfInUIWithoutCheckin(getUser(), filePath, fileName); + GeneralUIUtils.waitForLoader(); + GeneralUIUtils.closeNotificatin(); + GeneralUIUtils.checkIn(); + GeneralUIUtils.closeNotificatin(); + + // create service + ServiceReqDetails createServiceInUI = ServiceUIUtils.createServiceInUI(getUser()); + ServiceVerificator.verifyServiceCreated(createServiceInUI, getUser()); + serviceName = createServiceInUI.getName(); + + // go to composition + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.COMPOSITION); + + // drag vf into canvas + CanvasManager canvasManager = CanvasManager.getCanvasManager(); + CanvasElement canvasElement = canvasManager.createElementOnCanvas(importVfREsourceInUI.getName()); + canvasManager.selectElementFromCanvas(canvasElement); + GeneralUIUtils.waitForLoader(); + + // moving to inputs view + GeneralUIUtils.getWebElementWaitForClickable(BreadcrumbsButtonsEnum.COMPONENT.getValue()).click(); + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.INPUTS); + + // adding the input to the service + GeneralUIUtils.getWebElementWaitForClickable(InputsEnum.VF_INSTANCE.getValue()).click(); + GeneralUIUtils.getWebElementWaitForClickable(InputsEnum.FIRST_INPUT_CHECKBOX.getValue()).click(); + GeneralUIUtils.getWebElementWaitForClickable(InputsEnum.ADD_INPUTS_BUTTON.getValue()).click(); + } +} diff --git a/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/vf/VfBasicTests.java b/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/vf/VfBasicTests.java new file mode 100644 index 0000000000..918ac934c6 --- /dev/null +++ b/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/vf/VfBasicTests.java @@ -0,0 +1,234 @@ +package org.openecomp.sdc.uici.tests.execute.vf; + +import static org.openecomp.sdc.common.datastructure.FunctionalInterfaces.retryMethodOnException; +import static org.testng.AssertJUnit.assertEquals; +import static org.testng.AssertJUnit.assertTrue; + +import java.io.IOException; +import java.util.Map; + +import org.apache.http.HttpStatus; +import org.openecomp.sdc.uici.tests.datatypes.CanvasElement; +import org.openecomp.sdc.uici.tests.datatypes.CanvasManager; +import org.openecomp.sdc.uici.tests.datatypes.CreateAndUpdateStepsEnum; +import org.openecomp.sdc.uici.tests.datatypes.DataTestIdEnum; +import org.openecomp.sdc.uici.tests.datatypes.DataTestIdEnum.LeftPanelCanvasItems; +import org.openecomp.sdc.uici.tests.execute.base.SetupCDTest; +import org.openecomp.sdc.uici.tests.utilities.ArtifactUIUtils; +import org.openecomp.sdc.uici.tests.utilities.FileHandling; +import org.openecomp.sdc.uici.tests.utilities.GeneralUIUtils; +import org.openecomp.sdc.uici.tests.utilities.ResourceUIUtils; +import org.openecomp.sdc.uici.tests.utilities.RestCDUtils; +import org.openecomp.sdc.uici.tests.verificator.VfVerificator; +import org.testng.annotations.Test; + +import org.openecomp.sdc.be.model.LifecycleStateEnum; +import org.openecomp.sdc.be.model.User; +import org.openecomp.sdc.ci.tests.datatypes.ArtifactReqDetails; +import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails; +import org.openecomp.sdc.ci.tests.datatypes.ResourceRespJavaObject; +import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum; +import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse; +import org.openecomp.sdc.ci.tests.utils.general.Convertor; +import org.openecomp.sdc.ci.tests.utils.general.ElementFactory; +import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser; + +public class VfBasicTests extends SetupCDTest { + + @Test + public void testImportVfTableColumns() { + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.OnBoardingTable.OPEN_MODAL_BUTTON.getValue()).click(); + + assertTrue(GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.OnBoardingTable.VENDOR_HEADER_COL.getValue()) != null); + assertTrue(GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.OnBoardingTable.NAME_HEADER_COL.getValue()) != null); + assertTrue(GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.OnBoardingTable.CATEGORY_HEADER_COL.getValue()) != null); + + assertTrue(GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.OnBoardingTable.VERSION_HEADER_COL.getValue()) != null); + } + + @Test + public void testUpdateVfCreatedFromCsar() throws Exception { + // create vf + String filePath = FileHandling.getResourcesFilesPath(); + String fileName = "Sample_CSAR.csar"; + ResourceReqDetails importVfResourceInUI = ResourceUIUtils.importVfInUIWithoutCheckin(getUser(), filePath, + fileName); + // update csar + fileName = "Sample_CSAR2.csar"; + ResourceUIUtils.updateVfCsar(filePath, fileName); + VfVerificator.verifyNumOfComponentInstances(importVfResourceInUI, 4); + } + + @Test + public void testImportVf() { + String filePath = FileHandling.getResourcesFilesPath(); + String fileName = "Sample_CSAR.csar"; + ResourceReqDetails importVfResourceInUI = ResourceUIUtils.importVfInUI(getUser(), filePath, fileName); + GeneralUIUtils.waitForLoader(); + assertTrue(RestCDUtils.getResource(importVfResourceInUI).getErrorCode() == HttpStatus.SC_OK); + } + + @Test + public void testCreateVf() { + ResourceReqDetails createResourceInUI = ResourceUIUtils.createResourceInUI(getUser()); + assertTrue(RestCDUtils.getResource(createResourceInUI).getErrorCode() == HttpStatus.SC_OK); + } + + @Test + public void testDeleteInstanceFromCanvas() { + ResourceReqDetails createResourceInUI = ResourceUIUtils.createResourceInUI(getUser()); + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.COMPOSITION); + + CanvasManager canvasManager = CanvasManager.getCanvasManager(); + + canvasManager.createElementOnCanvas(LeftPanelCanvasItems.BLOCK_STORAGE); + CanvasElement computeElement = canvasManager.createElementOnCanvas(LeftPanelCanvasItems.COMPUTE); + VfVerificator.verifyNumOfComponentInstances(createResourceInUI, 2); + canvasManager.deleteElementFromCanvas(computeElement); + VfVerificator.verifyNumOfComponentInstances(createResourceInUI, 1); + + } + + @Test + public void testUpdateInstanceAttributeValue() { + // creare vfc with attrs + String filePath = FileHandling.getResourcesFilesPath(); + String fileName = "VFCWithAttributes.yml"; + ResourceReqDetails importVfcResourceInUI = ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName); + GeneralUIUtils.checkIn(); + // create vf + ResourceReqDetails createResourceInUI = ResourceUIUtils.createResourceInUI(getUser()); + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.COMPOSITION); + // add vfc to canvas + CanvasManager canvasManager = CanvasManager.getCanvasManager(); + CanvasElement canvasElement = canvasManager.createElementOnCanvas(importVfcResourceInUI.getName()); + canvasManager.selectElementFromCanvas(canvasElement); + // edit value of vfc attr + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.RightBar.PROPERTIES_AND_ATTRIBUTES.getValue()) + .click(); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.RightBar.MYATTR_ATTR_FROM_LIST.getValue()).click(); + + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributeForm.DEFAULT_VAL_FIELD.getValue()) + .sendKeys("2"); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributeForm.DONE_BUTTON.getValue()).click(); + String newValue = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.RightBar.MYATTR_ATTR_VALUE_FROM_LIST.getValue()).getText(); + assertEquals("2", newValue); + } + + @Test(enabled = false) + public void testAddInfomratinalArtifact() throws Exception { + ResourceReqDetails createResourceInUI = ResourceUIUtils.createResourceInUI(getUser()); + + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.INFORMATION_ARTIFACT); + + ArtifactReqDetails informationalArtifact = ElementFactory.getDefaultArtifact(); + final String FILE_PATH = System.getProperty("user.dir") + "\\src\\main\\resources\\Files\\"; + final String FILE_NAME = "Valid_tosca_Mycompute.yml"; + + ArtifactUIUtils.addInformationArtifact(informationalArtifact, FILE_PATH + FILE_NAME, + DataTestIdEnum.InformationalArtifatcs.FEATURES); + ArtifactUIUtils.addInformationArtifact(informationalArtifact, FILE_PATH + FILE_NAME, + DataTestIdEnum.InformationalArtifatcs.CAPACITY); + + RestResponse getResourceResponse = RestCDUtils.getResource(createResourceInUI); + assertEquals("Did not succeed to get resource after create", HttpStatus.SC_OK, + getResourceResponse.getErrorCode().intValue()); + + Map<String, Map<String, Object>> artifactsListFromResponse = ArtifactUIUtils + .getArtifactsListFromResponse(getResourceResponse.getResponse(), "artifacts"); + Map<String, Object> map = artifactsListFromResponse.get("Features"); + + assertTrue(artifactsListFromResponse.size() >= 2); + + } + + @Test + public void testVfCertification() throws IOException { + // Create VF + ResourceReqDetails createResourceInUI = ResourceUIUtils.createResourceInUI(getUser()); + assertTrue(RestCDUtils.getResource(createResourceInUI).getErrorCode() == HttpStatus.SC_OK); + + // Submit For Testing Process + GeneralUIUtils.submitForTestingElement(createResourceInUI.getName()); + + // Tester + quitAndReLogin(UserRoleEnum.TESTER); + ResourceUIUtils.testAndAcceptElement(createResourceInUI); + + // Verification + GeneralUIUtils.waitForLoader(); + VfVerificator.verifyResourceIsCertified(createResourceInUI); + + } + + @Test + public void testDeploymentArtifactForVFi() { + User user = getUser(); + // create vf + ResourceReqDetails createResourceInUI = ResourceUIUtils.createResourceInUI(user); + GeneralUIUtils.checkIn(); + GeneralUIUtils.waitForLoader(); + // create service + GeneralUIUtils.clickOnCreateEntityFromDashboard(DataTestIdEnum.Dashboard.BUTTON_ADD_SERVICE.getValue()); + ResourceUIUtils.defineResourceName("serv"); + GeneralUIUtils.defineDescription("description"); + GeneralUIUtils.waitForLoader(); + ResourceUIUtils.defineResourceCategory("Mobility", "selectGeneralCategory"); + ResourceUIUtils.defineProjectCode("012345"); + GeneralUIUtils.clickSaveButton(); + GeneralUIUtils.waitForLoader(); + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.COMPOSITION); + GeneralUIUtils.waitForLoader(); + // add vf to canvas + CanvasManager canvasManager = CanvasManager.getCanvasManager(); + CanvasElement canvasElement = canvasManager.createElementOnCanvas(createResourceInUI.getName()); + canvasManager.selectElementFromCanvas(canvasElement); + GeneralUIUtils.waitForLoader(); + // add artifact + GeneralUIUtils.getWebElementWaitForClickable(DataTestIdEnum.RightBar.DEPLOYMENT_ARTIFACTS.getValue()).click(); + GeneralUIUtils.getWebElementWaitForClickable(DataTestIdEnum.RightBar.ADD_ARTIFACT_BUTTON.getValue()).click(); + String newArtifactLabel = "newArtifact"; + ArtifactReqDetails details = new ArtifactReqDetails("new_atifact", "DCAE_INVENTORY_EVENT", "desc", "", + newArtifactLabel); + ResourceUIUtils.fillinDeploymentArtifactFormAndClickDone(details, + FileHandling.getResourcesFilesPath() + "yamlSample.yml"); + assertTrue(GeneralUIUtils.isElementPresent("artifact_Display_Name-" + newArtifactLabel)); + // edit artifact + GeneralUIUtils.getWebElementWaitForClickable("artifact_Display_Name-" + newArtifactLabel).click(); + String newFileName = "yamlSample2.yml"; + retryMethodOnException( + () -> GeneralUIUtils.getWebElementByDataTestId(DataTestIdEnum.GeneralSection.BROWSE_BUTTON.getValue()) + .sendKeys(FileHandling.getResourcesFilesPath() + newFileName)); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ModalItems.DONE.getValue()).click(); + GeneralUIUtils.waitForLoader(); + assertEquals(newFileName, + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.RightBar.ARTIFACT_NAME.getValue()).getText()); + // delete artifact + GeneralUIUtils.moveToHTMLElementByDataTestId("artifact_Display_Name-" + newArtifactLabel); + GeneralUIUtils.getWebElementWaitForClickable(DataTestIdEnum.RightBar.DELETE_ARTIFACT_BUTTON.getValue()).click(); + GeneralUIUtils.getWebElementWaitForClickable(DataTestIdEnum.ModalItems.OK.getValue()).click(); + GeneralUIUtils.waitForLoader(); + assertTrue(!GeneralUIUtils.isElementPresent("artifact_Display_Name-" + newArtifactLabel)); + } + + protected ArtifactReqDetails defineInformationalArtifact() throws IOException, Exception { + return ElementFactory.getDefaultArtifact(); + } + + protected ResourceRespJavaObject buildResourceJavaObject(ResourceReqDetails resource, RestResponse restResponse, + User user) { + ResourceRespJavaObject resourceObject = new ResourceRespJavaObject(); + resourceObject = Convertor.constructFieldsForRespValidation(resource, resource.getVersion(), user); + resourceObject.setLifecycleState((LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT).toString()); + resourceObject.setAbstractt("false"); + resourceObject.setIcon(resource.getIcon().replace(" ", "")); + resourceObject.setUniqueId(ResponseParser.getUniqueIdFromResponse(restResponse)); + return resourceObject; + } + +} diff --git a/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/vf/VfCanvasTests.java b/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/vf/VfCanvasTests.java new file mode 100644 index 0000000000..73b09666ae --- /dev/null +++ b/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/vf/VfCanvasTests.java @@ -0,0 +1,80 @@ +package org.openecomp.sdc.uici.tests.execute.vf; + +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.openecomp.sdc.uici.tests.datatypes.CanvasElement; +import org.openecomp.sdc.uici.tests.datatypes.CanvasManager; +import org.openecomp.sdc.uici.tests.datatypes.CreateAndUpdateStepsEnum; +import org.openecomp.sdc.uici.tests.datatypes.DataTestIdEnum.LeftPanelCanvasItems; +import org.openecomp.sdc.uici.tests.execute.base.SetupCDTest; +import org.openecomp.sdc.uici.tests.utilities.GeneralUIUtils; +import org.openecomp.sdc.uici.tests.utilities.ResourceUIUtils; +import org.openecomp.sdc.uici.tests.verificator.VfVerificator; +import org.testng.annotations.Test; + +import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails; + +public class VfCanvasTests extends SetupCDTest { + + @Test + public void testCanvasDrag() { + ResourceReqDetails createResourceInUI = ResourceUIUtils.createResourceInUI(getUser()); + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.COMPOSITION); + + CanvasManager canvasManager = CanvasManager.getCanvasManager(); + CanvasElement createElementOnCanvas = canvasManager.createElementOnCanvas(LeftPanelCanvasItems.BLOCK_STORAGE); + + ImmutablePair<String, String> preMovePos = ResourceUIUtils.getRIPosition(createResourceInUI, getUser()); + + canvasManager.moveElementOnCanvas(createElementOnCanvas); + + VfVerificator.verifyRILocationChanged(createResourceInUI, preMovePos, getUser()); + + } + + @Test + public void testCanvasConnectComponents() { + ResourceReqDetails createResourceInUI = ResourceUIUtils.createResourceInUI(getUser()); + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.COMPOSITION); + + CanvasManager canvasManager = CanvasManager.getCanvasManager(); + CanvasElement bsElement = canvasManager.createElementOnCanvas(LeftPanelCanvasItems.BLOCK_STORAGE); + CanvasElement computeElement = canvasManager.createElementOnCanvas(LeftPanelCanvasItems.COMPUTE); + + canvasManager.linkElements(bsElement, computeElement); + + VfVerificator.verifyLinkCreated(createResourceInUI); + + } + + @Test + public void testCanvasVFSanity() { + ResourceReqDetails createResourceInUI = ResourceUIUtils.createResourceInUI(getUser()); + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.COMPOSITION); + CanvasManager canvasManager = CanvasManager.getCanvasManager(); + + CanvasElement bsElement = canvasManager.createElementOnCanvas(LeftPanelCanvasItems.BLOCK_STORAGE); + CanvasElement compElement = canvasManager.createElementOnCanvas(LeftPanelCanvasItems.COMPUTE); + + ImmutablePair<String, String> preMovePos = ResourceUIUtils.getRIPosition(createResourceInUI, getUser()); + canvasManager.moveElementOnCanvas(bsElement); + canvasManager.moveElementOnCanvas(compElement); + + VfVerificator.verifyRILocationChanged(createResourceInUI, preMovePos, getUser()); + + CanvasElement bsElement2 = canvasManager.createElementOnCanvas(LeftPanelCanvasItems.BLOCK_STORAGE); + + canvasManager.linkElements(bsElement2, compElement); + + VfVerificator.verifyLinkCreated(createResourceInUI); + + VfVerificator.verifyNumOfComponentInstances(createResourceInUI, 3); + + canvasManager.moveElementOnCanvas(compElement); + + canvasManager.deleteElementFromCanvas(bsElement); + + VfVerificator.verifyNumOfComponentInstances(createResourceInUI, 2); + + } + +} diff --git a/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/vf/VfDeploymentTests.java b/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/vf/VfDeploymentTests.java new file mode 100644 index 0000000000..47344b7c68 --- /dev/null +++ b/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/vf/VfDeploymentTests.java @@ -0,0 +1,340 @@ +package org.openecomp.sdc.uici.tests.execute.vf; + +import static org.testng.AssertJUnit.assertEquals; +import static org.testng.AssertJUnit.assertFalse; +import static org.testng.AssertJUnit.assertTrue; + +import java.io.IOException; +import java.util.regex.Pattern; + +import org.openecomp.sdc.uici.tests.datatypes.CreateAndUpdateStepsEnum; +import org.openecomp.sdc.uici.tests.datatypes.DataTestIdEnum; +import org.openecomp.sdc.uici.tests.execute.base.SetupCDTest; +import org.openecomp.sdc.uici.tests.utilities.FileHandling; +import org.openecomp.sdc.uici.tests.utilities.GeneralUIUtils; +import org.openecomp.sdc.uici.tests.utilities.ResourceUIUtils; +import org.openecomp.sdc.uici.tests.utilities.RestCDUtils; +import org.openqa.selenium.WebElement; +import org.testng.annotations.Test; + +import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails; + +public class VfDeploymentTests extends SetupCDTest { + + // *****************************EditNamePopoverTests*****************************// + @Test + public void ClickingOnEditNamePopoverIconShouldOpenTheEditNamePopoverForm() { + EditNamePopoverTestsSetUp(); + + assertTrue(GeneralUIUtils.isElementPresent(DataTestIdEnum.UpdateNamePopover.POPOVER_FORM.getValue())); + } + + @Test + public void ModuleDataShouldBeDisplayedInTheEditNameForm() { + EditNamePopoverTestsSetUp(); + + WebElement instanceName = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.UpdateNamePopover.POPOVER_INSTANCE_NAME.getValue()); + WebElement heatName = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.UpdateNamePopover.POPOVER_HEAT_NAME.getValue()); + WebElement moduleName = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.UpdateNamePopover.POPOVER_MODULE_NAME.getValue()); + + String moduleNameToDivide = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_MODULE.getValue()).getText(); + + String[] dividedModuleName = moduleNameToDivide.split(Pattern.quote("..")); + + assertEquals(dividedModuleName[0], instanceName.getText()); + assertEquals(dividedModuleName[1], heatName.getAttribute("value")); + assertEquals(dividedModuleName[2], moduleName.getText()); + + } + + @Test + public void CloseButtonShouldCloseThePopover() { + EditNamePopoverTestsSetUp(); + + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.UpdateNamePopover.POPOVER_CLOSE_BUTTON.getValue()) + .click(); + + assertFalse(GeneralUIUtils.isElementPresent(DataTestIdEnum.UpdateNamePopover.POPOVER_FORM.getValue())); + } + + @Test + public void XButtonShouldCloseThePopover() { + EditNamePopoverTestsSetUp(); + + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.UpdateNamePopover.POPOVER_X_BUTTON.getValue()) + .click(); + + assertFalse(GeneralUIUtils.isElementPresent(DataTestIdEnum.UpdateNamePopover.POPOVER_FORM.getValue())); + } + + @Test + public void SaveButtonShouldBeDisabledWhileTheNameHasNotBeenChanged() { + EditNamePopoverTestsSetUp(); + + WebElement popoverSaveButton = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.UpdateNamePopover.POPOVER_SAVE_BUTTON.getValue()); + + assertTrue(popoverSaveButton.getAttribute("class").contains("disabled")); + } + + @Test + public void ClickingOnTheSaveButtonShouldUpdateTheModuleName() { + EditNamePopoverTestsSetUp(); + + String newName = "testName"; + + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.UpdateNamePopover.POPOVER_HEAT_NAME.getValue()) + .clear(); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.UpdateNamePopover.POPOVER_HEAT_NAME.getValue()) + .sendKeys(newName); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.UpdateNamePopover.POPOVER_SAVE_BUTTON.getValue()) + .click(); + + GeneralUIUtils.waitForLoader(); + + String moduleName = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_MODULE.getValue()).getText(); + + String[] dividedModuleName = moduleName.split(Pattern.quote("..")); + + assertEquals(dividedModuleName[1], newName); + } + + @Test + public void testUpdateModuleNameSanity() { + EditNamePopoverTestsSetUp(); + + String newName = "testName"; + + WebElement instanceName = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.UpdateNamePopover.POPOVER_INSTANCE_NAME.getValue()); + WebElement heatName = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.UpdateNamePopover.POPOVER_HEAT_NAME.getValue()); + WebElement moduleName = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.UpdateNamePopover.POPOVER_MODULE_NAME.getValue()); + + String moduleNameToDivide = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_MODULE.getValue()).getText(); + + String[] dividedModuleName = moduleNameToDivide.split(Pattern.quote("..")); + + assertEquals(dividedModuleName[0], instanceName.getText()); + assertEquals(dividedModuleName[1], heatName.getAttribute("value")); + assertEquals(dividedModuleName[2], moduleName.getText()); + + WebElement popoverSaveButton = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.UpdateNamePopover.POPOVER_SAVE_BUTTON.getValue()); + + assertTrue(popoverSaveButton.getAttribute("class").contains("disabled")); + + heatName.clear(); + heatName.sendKeys(newName); + + popoverSaveButton.click(); + + GeneralUIUtils.waitForLoader(); + + moduleNameToDivide = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_MODULE.getValue()).getText(); + dividedModuleName = moduleNameToDivide.split(Pattern.quote("..")); + + assertEquals(dividedModuleName[1], newName); + } + + // *****************************DeploymentTabsTests*****************************// + + @Test + public void testTabIsBeingDisplayedAtDeploymentView() { + DeploymentTestsSetUp(); + + assertTrue(GeneralUIUtils.isElementPresent(DataTestIdEnum.TabsBar.HIERARCHY_TAB.getValue())); + } + + @Test + public void testClickingOnTabSetsItAsSelected() { + DeploymentTestsSetUp(); + + WebElement hierarchyTab = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_TAB.getValue()); + hierarchyTab.click(); + + assertTrue(hierarchyTab.getAttribute("class").contains("selected")); + } + + @Test + public void testTabNameIsBeingDisplayedInTheSelectedTabHeader() { + DeploymentTestsSetUp(); + + // select the hierarchy tab and check the header + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_TAB.getValue()).click(); + WebElement tabHeader = GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.TabsBar.TAB_HEADER.getValue()); + + assertEquals(tabHeader.getText(), "HIERARCHY"); + } + + @Test + public void testSelectingModuleNameInTheHierarchyTabShouldSelectIt() { + DeploymentTestsSetUp(); + + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_TAB.getValue()).click(); + WebElement hierarchyModule = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_MODULE_TITLE.getValue()); + + hierarchyModule.click(); + + assertTrue(hierarchyModule.getAttribute("class").contains("selected")); + } + + @Test + public void testSelectingModuleNameInTheHierarchyTabShouldExpandIt() { + DeploymentTestsSetUp(); + + // select hierarchy tab + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_TAB.getValue()).click(); + WebElement hierarchyModule = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_MODULE.getValue()); + + hierarchyModule.click(); + + assertTrue(hierarchyModule.getAttribute("class").contains("expanded")); + } + + @Test + public void testSelectingModuleNameInTheHierarchyTabShouldDisplayItsData() { + DeploymentTestsSetUp(); + + // select hierarchy tab + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_TAB.getValue()).click(); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_MODULE.getValue()).click(); + + assertTrue(GeneralUIUtils.isElementPresent(DataTestIdEnum.TabsBar.HIERARCHY_SELECTED_MODULE_DATA.getValue())); + } + + @Test(enabled = false) + public void testResourceNameIsBeingDisplayedInTheSelectedTabSubHeader() { + DeploymentTestsSetUp(); + + // select the hierarchy tab and check the header + // WebElement tabSubHeader = + // getWebElement(DataTestIdEnum.TabsBar.TAB_SUB_HEADER.getValue()); + + // assertEquals(tabSubHeader.getText(), vmmcCsar.getName()); + } + + @Test(enabled = false) + public void testSelectingModuleNameInTheHierarchyTabShouldDisplayItsInformation() throws IOException { + DeploymentTestsSetUp(); + + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_TAB.getValue()).click(); + WebElement hierarchyModule = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_MODULE.getValue()); + + // get the module + // String component = RestCDUtils.getResource(vmmcCsar).getResponse(); + // TODO idana fix test + /* + * GroupDefinitionInfo module = getModuleById(component, + * hierarchyModule.getText()); + * + * hierarchyModule.click(); + * + * assertModuleDetails(module, hierarchyModule); + */ + + } + + @Test(enabled = false) + public void testSelectingModuleNameInTheHierarchyTabShouldDisplayItsArtifacts() throws IOException { + DeploymentTestsSetUp(); + + GeneralUIUtils.getWebElementWaitForClickable(DataTestIdEnum.TabsBar.HIERARCHY_TAB.getValue()).click(); + WebElement hierarchyModule = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_MODULE.getValue()); + + // TODO idana fix test + // Get the artifact from the module + /* + * String component = RestCDUtils.getResource(vmmcCsar, + * getUser()).getResponse(); GroupDefinitionInfo module = + * getModuleById(component, hierarchyModule.getText()); + * ArtifactDefinitionInfo artifact = module.getArtifacts().get(0); + * + * hierarchyModule.click(); + * + * assertModuleArtifactDetails(artifact); + */ + } + + @Test + public void testTabsViewSanity() throws IOException { + DeploymentTestsSetUp(); + + WebElement hierarchyTab = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_TAB.getValue()); + + assertTrue(hierarchyTab != null); + + hierarchyTab.click(); + + assertTrue(hierarchyTab.getAttribute("class").contains("selected")); + + WebElement tabHeader = GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.TabsBar.TAB_HEADER.getValue()); + WebElement tabSubHeader = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.TabsBar.TAB_SUB_HEADER.getValue()); + + assertEquals(tabHeader.getText(), "HIERARCHY"); + // assertEquals(tabSubHeader.getText(), vmmcCsar.getName()); + + WebElement hierarchyModule = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_MODULE.getValue()); + WebElement hierarchyModuleTitle = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_MODULE_TITLE.getValue()); + hierarchyModule.click(); + WebElement selectedModuleData = GeneralUIUtils + .getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_SELECTED_MODULE_DATA.getValue()); + + assertTrue(hierarchyModuleTitle.getAttribute("class").contains("selected")); + assertTrue(hierarchyModule.getAttribute("class").contains("expanded")); + assertTrue(selectedModuleData.getAttribute("ng-if") != null); + // TODO idana fix test + /* + * String component = RestCDUtils.getResource(vmmcCsar, + * getUser()).getResponse(); GroupDefinitionInfo module = + * getModuleById(component, hierarchyModule.getText()); + * ArtifactDefinitionInfo artifact = module.getArtifacts().get(0); + * + * assertModuleDetails(module, hierarchyModule); + * + * assertModuleArtifactDetails(artifact); + */ + + } + + // ************************DeploymentTestsSetUpFunction************************// + + private void EditNamePopoverTestsSetUp() { + DeploymentTestsSetUp(); + + // clicking on a module and opening the edit name popover + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_TAB.getValue()).click(); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.TabsBar.HIERARCHY_MODULE.getValue()).click(); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.UpdateNamePopover.OPEN_POPOVER_ICON.getValue()) + .click(); + } + + private void DeploymentTestsSetUp() { + // import csar + String filePath = FileHandling.getResourcesFilesPath(); + String fileName = "vf_with_groups.csar"; + ResourceUIUtils.importVfInUI(getUser(), filePath, fileName); + + GeneralUIUtils.waitForLoader(20); + + // moving to deployment view + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.DEPLOYMENT); + } +} diff --git a/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/vf/VfOnboardingTests.java b/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/vf/VfOnboardingTests.java new file mode 100644 index 0000000000..a81d854630 --- /dev/null +++ b/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/vf/VfOnboardingTests.java @@ -0,0 +1,63 @@ +package org.openecomp.sdc.uici.tests.execute.vf; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import org.openecomp.sdc.uici.tests.execute.base.SetupCDTest; +import org.openecomp.sdc.uici.tests.utilities.GeneralUIUtils; +import org.openecomp.sdc.uici.tests.utilities.OnboardUtility; +import org.openecomp.sdc.uici.tests.utilities.ResourceUIUtils; +import org.testng.annotations.Test; + +import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails; +import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum; +import com.google.gson.GsonBuilder; + +public class VfOnboardingTests extends SetupCDTest { + + @Test + public void testUpdateVfCreatedOnBoarding() { + // create vf + ResourceReqDetails importVfResourceInUI = ResourceUIUtils.importVfFromOnBoardingModalWithoutCheckin(getUser(), + "mock_vf"); + // update vf + ResourceUIUtils.updateVfCsarFromOnBoarding(); + } + + @Test + public void createVfsFromOnboarding() throws IOException { + String folderPath = "C:\\onboardingTest\\onBoardingZips"; + File folder = new File(folderPath); + File[] listOfFiles = folder.listFiles(); + List<String> zipFileNames = Arrays.asList(listOfFiles).stream().map(file -> file.getName()) + .filter(fileName -> fileName.endsWith(".zip")).collect(Collectors.toList()); + Map<String, String> filesSuccessMap = new HashMap<>(); + for (String fileName : zipFileNames) { + try { + createSingleVfFromOnboarding(folderPath, fileName); + filesSuccessMap.put(fileName, "SUCCESS"); + } catch (Exception e) { + filesSuccessMap.put(fileName, "FAIL"); + } + } + Path file = Paths.get("RunResults.txt"); + String stringDataModel = new GsonBuilder().setPrettyPrinting().create().toJson(filesSuccessMap); + Files.write(file, stringDataModel.getBytes()); + } + + private static void createSingleVfFromOnboarding(String filePath, String zipFileName) { + String userId = UserRoleEnum.DESIGNER.getUserId(); + OnboardUtility.createVfFromOnboarding(userId, zipFileName, filePath); + GeneralUIUtils.submitForTestingElement("Vf From Onboarding"); + + } + +} diff --git a/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/vfc/VfcBasicTests.java b/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/vfc/VfcBasicTests.java new file mode 100644 index 0000000000..ef21e40c61 --- /dev/null +++ b/ui-ci-dev/src/main/java/org/openecomp/sdc/uici/tests/execute/vfc/VfcBasicTests.java @@ -0,0 +1,219 @@ +package org.openecomp.sdc.uici.tests.execute.vfc; + +import static org.testng.AssertJUnit.assertTrue; + +import java.util.List; +import java.util.function.Function; +import java.util.function.Supplier; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.http.HttpStatus; +import org.openecomp.sdc.uici.tests.datatypes.CreateAndUpdateStepsEnum; +import org.openecomp.sdc.uici.tests.datatypes.DataTestIdEnum; +import org.openecomp.sdc.uici.tests.execute.base.SetupCDTest; +import org.openecomp.sdc.uici.tests.utilities.FileHandling; +import org.openecomp.sdc.uici.tests.utilities.GeneralUIUtils; +import org.openecomp.sdc.uici.tests.utilities.ResourceUIUtils; +import org.openecomp.sdc.uici.tests.utilities.RestCDUtils; +import org.openecomp.sdc.uici.tests.verificator.VfVerificator; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.Select; +import org.testng.annotations.Test; + +import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails; +import org.openecomp.sdc.common.datastructure.FunctionalInterfaces; + +public class VfcBasicTests extends SetupCDTest { + + @Test + public void testRequirementsAndCapabilitiesSectionOfVfc() { + String filePath = FileHandling.getResourcesFilesPath(); + String fileName = "mycompute.yml"; + ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName); + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.REQUIREMENTS_AND_CAPABILITIES); + // all expected requirements + assertTrue("Not all expected requirements are displayed.", GeneralUIUtils.isElementPresent("dependency") && GeneralUIUtils.isElementPresent("local_storage")); + // filter requirements + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ReqAndCapabilitiesSection.SEARCH_BOX.getValue()).sendKeys("root"); + Supplier<Boolean> supplier = () -> !GeneralUIUtils.isElementPresent("local_storage"); + Function<Boolean, Boolean> resultVerifier = isNotPresent -> isNotPresent; + Boolean isFilteredRowNotPresent = FunctionalInterfaces.retryMethodOnResult(supplier, resultVerifier); + assertTrue("The new property was not inserted to the properties table.", isFilteredRowNotPresent); + assertTrue("Filter problem.", GeneralUIUtils.isElementPresent("dependency") && isFilteredRowNotPresent); + // move to cap tab + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ReqAndCapabilitiesSection.CAP_TAB.getValue()).click(); + GeneralUIUtils.getWebElementWaitForVisible("endpoint").click(); + GeneralUIUtils.getWebElementWaitForVisible("initiator").click(); + supplier = () -> GeneralUIUtils.isElementPresent(DataTestIdEnum.PropertyForm.FORM_CONTAINER.getValue()); + resultVerifier = isPresent -> isPresent; + Boolean isPopupOpen = FunctionalInterfaces.retryMethodOnResult(supplier, resultVerifier); + assertTrue("The update property popup was not opened.", isPopupOpen); + } + + @Test + public void testCreatePropertyTypeListForVfc() { + String filePath = FileHandling.getResourcesFilesPath(); + String fileName = "VFCWithAttributes.yml"; + ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName); + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.PROPERTIES); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertiesSection.ADD_BUTTON.getValue()).click(); + // fill in fields + String newPropName = "listProperty"; + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.NAME_FIELD.getValue()).sendKeys(newPropName); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.DESCRIPTION_FIELD.getValue()).sendKeys("desc"); + Select typeField = new Select(GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.TYPE_FIELD.getValue())); + typeField.selectByVisibleText("list"); + Select schemaTypeField = new Select(GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.SCHEMA_FIELD.getValue())); + schemaTypeField.selectByVisibleText("string"); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.LIST_TYPE_DEFAULT_VAL_FIELD.getValue()).sendKeys("first"); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.ADD_ITEM_TO_LIST_BUTTON.getValue()).click(); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.LIST_TYPE_DEFAULT_VAL_FIELD.getValue()).sendKeys("second"); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.ADD_ITEM_TO_LIST_BUTTON.getValue()).click(); + // save + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.SAVE_BUTTON.getValue()).click(); + Supplier<Boolean> supplier = () -> GeneralUIUtils.isElementPresent(newPropName); + Function<Boolean, Boolean> resultVerifier = isPresent -> isPresent; + Boolean isPresent = FunctionalInterfaces.retryMethodOnResult(supplier, resultVerifier); + assertTrue("The new property was not inserted to the properties table.", isPresent); + } + + @Test + public void testCreatePropertyTypeMapForVfc() { + String filePath = FileHandling.getResourcesFilesPath(); + String fileName = "VFCWithAttributes.yml"; + ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName); + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.PROPERTIES); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertiesSection.ADD_BUTTON.getValue()).click(); + // fill in fields + String newPropName = "mapProperty"; + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.NAME_FIELD.getValue()).sendKeys(newPropName); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.DESCRIPTION_FIELD.getValue()).sendKeys("desc"); + Select typeField = new Select(GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.TYPE_FIELD.getValue())); + typeField.selectByVisibleText("map"); + Select schemaTypeField = new Select(GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.SCHEMA_FIELD.getValue())); + schemaTypeField.selectByVisibleText("string"); + // insert item to map + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.MAP_TYPE_DEFAULT_VAL_KEY_FIELD_FOR_FIRST_ITEM.getValue()).sendKeys("key1"); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.MAP_TYPE_DEFAULT_VAL_VALUE_FIELD_FOR_FIRST_ITEM.getValue()).sendKeys("val1"); + // insert item to map + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.ADD_ITEM_TO_MAP_BUTTON.getValue()).click(); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.MAP_TYPE_DEFAULT_VAL_KEY_FIELD_FOR_SECOND_ITEM.getValue()).sendKeys("key2"); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.MAP_TYPE_DEFAULT_VAL_VALUE_FIELD_FOR_SECOND_ITEM.getValue()).sendKeys("val2"); + // delete item from map + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.DELETE_FIRST_ITEM_FROM_MAP_BUTTON.getValue()).click(); + // save + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.SAVE_BUTTON.getValue()).click(); + Supplier<Boolean> supplier = () -> GeneralUIUtils.isElementPresent(newPropName); + Function<Boolean, Boolean> resultVerifier = isPresent -> isPresent; + Boolean isPresent = FunctionalInterfaces.retryMethodOnResult(supplier, resultVerifier); + assertTrue("The new property was not inserted to the properties table.", isPresent); + } + + @Test + public void testCreatePropertyTypeDTForVfc() { + String filePath = FileHandling.getResourcesFilesPath(); + String fileName = "VFCWithAttributes.yml"; + ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName); + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.PROPERTIES); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertiesSection.ADD_BUTTON.getValue()).click(); + // fill in fields + String newPropName = "dt"; + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.NAME_FIELD.getValue()).sendKeys(newPropName); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.DESCRIPTION_FIELD.getValue()).sendKeys("desc"); + Select typeField = new Select(GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.TYPE_FIELD.getValue())); + typeField.selectByValue("org.openecomp.datatypes.heat.contrail.network.rule.PortPairs"); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.START_PORT_FIELD_FOR_PORT_PAIRS_DT.getValue()).sendKeys("first"); + // save + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.PropertyForm.SAVE_BUTTON.getValue()).click(); + Supplier<Boolean> supplier = () -> GeneralUIUtils.isElementPresent(newPropName); + Function<Boolean, Boolean> resultVerifier = isPresent -> isPresent; + Boolean isPresent = FunctionalInterfaces.retryMethodOnResult(supplier, resultVerifier); + assertTrue("The new property was not inserted to the properties table.", isPresent); + } + + @Test + public void testViewAttributesTabForVfc() { + String filePath = FileHandling.getResourcesFilesPath(); + String fileName = "VFCWithAttributes.yml"; + ResourceReqDetails importVfcResourceInUI = ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName); + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.ATTRIBUTES); + + List<WebElement> attributesRows = GeneralUIUtils.getWebElementsListWaitForVisible(DataTestIdEnum.AttributesSection.TABLE_ROWS.getValue()); + assertTrue("There is not any row in the table.", !CollectionUtils.isEmpty(attributesRows)); + // display editable buttons + assertTrue("The Add button is not dispaly.", GeneralUIUtils.isElementPresent(DataTestIdEnum.AttributesSection.ADD_BUTTON.getValue())); + assertTrue("The Edit button is not dispaly for 'network' attribute.", GeneralUIUtils.isElementPresent(DataTestIdEnum.AttributesSection.EDIT_BUTTON_FOR_NETWORK_ATTR.getValue())); + assertTrue("The Remove button is not dispaly for 'network' attribute.", GeneralUIUtils.isElementPresent(DataTestIdEnum.AttributesSection.DELETE_BUTTON_FOR_NETWORK_ATTR.getValue())); + // click checkin + GeneralUIUtils.checkIn(); + // enter again + GeneralUIUtils.getWebElementWaitForVisible(importVfcResourceInUI.getName()).click(); + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.ATTRIBUTES); + // the editable buttons disappear + assertTrue("The Add button is not dispaly.", !GeneralUIUtils.isElementPresent(DataTestIdEnum.AttributesSection.ADD_BUTTON.getValue())); + assertTrue("The Edit button is not dispaly for 'network' attribute.", !GeneralUIUtils.isElementPresent(DataTestIdEnum.AttributesSection.EDIT_BUTTON_FOR_NETWORK_ATTR.getValue())); + assertTrue("The Remove button is not dispaly for 'network' attribute.", !GeneralUIUtils.isElementPresent(DataTestIdEnum.AttributesSection.DELETE_BUTTON_FOR_NETWORK_ATTR.getValue())); + } + + @Test + public void testCreateAttributeForVfc() { + String filePath = FileHandling.getResourcesFilesPath(); + String fileName = "VFCWithAttributes.yml"; + ResourceReqDetails importVfcResourceInUI = ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName); + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.ATTRIBUTES); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributesSection.ADD_BUTTON.getValue()).click(); + // fill in fields + String newAttrName = "attr"; + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributeForm.NAME_FIELD.getValue()).sendKeys(newAttrName); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributeForm.DESCRIPTION_FIELD.getValue()).sendKeys("desc"); + Select typeField = new Select(GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributeForm.TYPE_FIELD.getValue())); + typeField.selectByVisibleText("integer"); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributeForm.DEFAULT_VAL_FIELD.getValue()).sendKeys("2"); + // click ok + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributeForm.DONE_BUTTON.getValue()).click(); + Supplier<Boolean> supplier = () -> GeneralUIUtils.isElementPresent(newAttrName); + Function<Boolean, Boolean> resultVerifier = isPresent -> isPresent; + Boolean isPresent = FunctionalInterfaces.retryMethodOnResult(supplier, resultVerifier); + assertTrue("The new attribute was not inserted to the attributes table.", isPresent); + } + + @Test + public void testUpdateTypeForAttributeOfVfc() { + String filePath = FileHandling.getResourcesFilesPath(); + String fileName = "VFCWithAttributes.yml"; + ResourceReqDetails importVfcResourceInUI = ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName); + VfVerificator.verifyResourceIsCreated(importVfcResourceInUI); + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.ATTRIBUTES); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributesSection.EDIT_BUTTON_FOR_NETWORK_ATTR.getValue()).click(); + // fill in fields + Select typeField = new Select(GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributeForm.TYPE_FIELD.getValue())); + typeField.selectByVisibleText("float"); + // click ok + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributeForm.DONE_BUTTON.getValue()).click(); + Supplier<Boolean> supplier = () -> GeneralUIUtils.isElementPresent("float"); + Function<Boolean, Boolean> resultVerifier = isPresent -> isPresent; + Boolean isPresent = FunctionalInterfaces.retryMethodOnResult(supplier, resultVerifier); + assertTrue("The attribute type was not updated.", isPresent); + } + + @Test + public void testDeleteAttributeForVfc() { + String filePath = FileHandling.getResourcesFilesPath(); + String fileName = "VFCWithAttributes.yml"; + ResourceReqDetails importVfcResourceInUI = ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName); + GeneralUIUtils.moveToStep(CreateAndUpdateStepsEnum.ATTRIBUTES); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.AttributesSection.DELETE_BUTTON_FOR_NETWORK_ATTR.getValue()).click(); + GeneralUIUtils.getWebElementWaitForVisible(DataTestIdEnum.ModalItems.OK.getValue()).click(); + GeneralUIUtils.waitForLoader(); + Boolean retryResult = FunctionalInterfaces.retryMethodOnResult(() -> !GeneralUIUtils.isElementPresent("networks"), boolResult -> boolResult); + assertTrue("The attribute is shown in the attributes table.", retryResult); + } + + @Test + public void testImportVfc() { + String filePath = FileHandling.getResourcesFilesPath(); + String fileName = "CP.yml"; + ResourceReqDetails importVfcResourceInUI = ResourceUIUtils.importVfcInUI(getUser(), filePath, fileName); + assertTrue(RestCDUtils.getResource(importVfcResourceInUI).getErrorCode() == HttpStatus.SC_OK); + } +} |