package com.denimgroup.threadfix.selenium.pages; import java.util.ArrayList; import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; public class RolesIndexPage extends BasePage { private WebElement createNewRoleLink; private List<WebElement> names = new ArrayList<WebElement>(); private List<WebElement> editLinks = new ArrayList<WebElement>(); // private List<WebElement> deleteButtons = new ArrayList<WebElement>(); public RolesIndexPage(WebDriver webdriver) { super(webdriver); createNewRoleLink = driver.findElementById("createRoleModalLink"); for (int i = 1; i <= getNumRows(); i++) { // names.add(driver.findElementById("role" + i)); editLinks.add(driver.findElementById("editModalLink" + i)); // deleteButtons.add(driver.findElementById("delete" + i)); } } public RoleCreatePage clickCreateRoleLink() { createNewRoleLink.click(); return new RoleCreatePage(driver); } public int getNumRows() { List<WebElement> bodyRows = driver.findElementsByClassName("roleRow"); if (bodyRows != null && bodyRows.size() == 1 && bodyRows.get(0).getText().trim().equals("No roles found.")) { return 0; } return bodyRows.size(); } public int getIndex(String roleName) { int i = -1; for (int j = 1; j <= getNumRows(); j++) { names.add(driver.findElementById("role" + j)); } for (WebElement name : names) { i++; String text = name.getText().trim(); if (text.equals(roleName.trim())) { return i; } } return -1; } // public String getNameContents(int row) { // return names.get(row).getText(); // } public RolesIndexPage clickDeleteButton(String roleName) { clickEditLink(roleName); sleep(500); driver.findElementById("delete"+(getIndex(roleName)+1)).click(); // deleteButtons.get(getIndex(roleName)).click(); handleAlert(); return new RolesIndexPage(driver); } public RolesIndexPage clickCreateRole(){ driver.findElementById("createRoleModalLink").click(); waitForElement(driver.findElementById("createRoleModal")); return new RolesIndexPage(driver); } public RolesIndexPage setRoleName(String name,String oldName){ if(oldName == null){ driver.findElementsById("displayName").get(getNumRows()).clear(); driver.findElementsById("displayName").get(getNumRows()).sendKeys(name); }else{ driver.findElementsById("displayName").get(getIndex(oldName)).clear(); driver.findElementsById("displayName").get(getIndex(oldName)).sendKeys(name); } return new RolesIndexPage(driver); } public RolesIndexPage clickSaveRole(String oldName){ if(oldName == null){ driver.findElementById("newRoleFormSubmitButton").click(); waitForInvisibleElement(driver.findElementById("createRoleModal")); }else{ driver.findElementsById("submitRemoteProviderFormButton").get(getIndex(oldName)).click(); sleep(1000); // waitForInvisibleElement(driver.findElementById("roleEditForm"+(getIndex(oldName)+1))); } return new RolesIndexPage(driver); } public RolesIndexPage clickSaveRoleInvalid(String oldName){ if(oldName == null){ driver.findElementById("newRoleFormSubmitButton").click(); }else{ driver.findElementsById("submitRemoteProviderFormButton").get(getIndex(oldName)).click(); } sleep(500); return new RolesIndexPage(driver); } public RolesIndexPage clickEditLink(String oldName) { editLinks.get(getIndex(oldName)).click(); waitForElement(driver.findElementById("editRoleModal"+(getIndex(oldName)+1))); return new RolesIndexPage(driver); } public String getDisplayNameError() { return driver.findElementByClassName("alert-error").getText(); } public String getNameError(){ return driver.findElementById("displayName.errors").getText(); } public boolean getPermissionValue(String permissionName, String oldName) { if(oldName == null){ return driver.findElementById("newRoleModalBody").findElement(By.id(permissionName + "True")).isSelected(); } return driver.findElementById("editRoleModal"+(getIndex(oldName)+1)).findElement(By.id(permissionName + "True")).isSelected(); } public RolesIndexPage setPermissionValue(String permissionName, boolean value,String oldName) { if(oldName == null){ String target = value ? "True" : "False"; driver.findElementById("newRoleModalBody").findElement(By.id(permissionName + target)).click(); }else{ String target = value ? "True" : "False"; driver.findElementById("editRoleModal"+(getIndex(oldName)+1)).findElement(By.id(permissionName + target)).click(); } return new RolesIndexPage(driver); } public RolesIndexPage clickCloseModal(){ driver.findElementByClassName("modal-footer").findElement(By.className("btn")).click(); return new RolesIndexPage(driver); } public boolean isCreateValidationPresent(String role){ return driver.findElementByClassName("alert-success").getText().contains("Role "+role+" was created successfully."); } public boolean isEditValidationPresent(String role){ return driver.findElementByClassName("alert-success").getText().contains("Role "+role+" was edited successfully."); } public boolean isDeleteValidationPresent(String role){ return driver.findElementByClassName("alert-success").getText().contains("Role "+role+" was deleted successfully."); } public boolean isNamePresent(String name){ return getIndex(name) != -1; } }