//////////////////////////////////////////////////////////////////////// // // Copyright (c) 2009-2013 Denim Group, Ltd. // // The contents of this file are subject to the Mozilla Public 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.mozilla.org/MPL/ // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the // License for the specific language governing rights and limitations // under the License. // // The Original Code is ThreadFix. // // The Initial Developer of the Original Code is Denim Group, Ltd. // Portions created by Denim Group, Ltd. are Copyright (C) // Denim Group, Ltd. All Rights Reserved. // // Contributor(s): Denim Group, Ltd. // //////////////////////////////////////////////////////////////////////// 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; import org.openqa.selenium.support.ui.Select; public class UserIndexPage extends BasePage { private WebElement addUserLink; // private List<WebElement> deleteButtons = new ArrayList<WebElement>(); private List<WebElement> names = new ArrayList<WebElement>(); private List<WebElement> editLinks = new ArrayList<WebElement>(); public int getNumRows() { return driver.findElementsByClassName("bodyRow").size(); } public UserIndexPage(WebDriver webdriver) { super(webdriver); addUserLink = driver.findElementById("newUserModalLink"); for (int i = 1; i <= getNumRows(); i++) { // deleteButtons.add(driver.findElementById("delete" + i)); names.add(driver.findElementById("name" + i)); editLinks.add(driver.findElementById("editUserModal" + i +"Link")); //edit permissions buttons } } private int getIndex(String roleName) { int i = -1; for (WebElement name : names) { i++; String text = name.getText().trim(); if (text.equals(roleName.trim())) { return i; } } return -1; } public UserIndexPage clickDeleteButton(String roleName) { clickEditLink(roleName); sleep(500); driver.findElementById("delete"+(getIndex(roleName)+1)).click(); handleAlert(); return new UserIndexPage(driver); } public LoginPage clickDeleteButtonSameUser(String roleName) { clickEditLink(roleName); sleep(500); driver.findElementById("delete"+(getIndex(roleName)+1)).click(); handleAlert(); return new LoginPage(driver); } public UserPermissionsPage clickEditPermissions(String name){ driver.findElementById("editPermissions"+(getIndex(name)+1)).click(); return new UserPermissionsPage(driver); } public UserIndexPage clickAddUserLink() { addUserLink.click(); waitForElement(driver.findElementById("nameAndPasswordForm")); return new UserIndexPage(driver); } public UserIndexPage enterName(String name,String oldName){ if(oldName == null){ driver.findElementById("nameInput").clear(); driver.findElementById("nameInput").sendKeys(name); }else{ driver.findElementById("nameInput"+(getIndex(oldName)+1)).clear(); driver.findElementById("nameInput"+(getIndex(oldName)+1)).sendKeys(name); } return new UserIndexPage(driver); } public UserIndexPage enterPassword(String password,String oldName){ if(oldName == null){ driver.findElementById("passwordInput").clear(); driver.findElementById("passwordInput").sendKeys(password); }else{ driver.findElementById("passwordInput"+(getIndex(oldName)+1)).clear(); driver.findElementById("passwordInput"+(getIndex(oldName)+1)).sendKeys(password); } return new UserIndexPage(driver); } public UserIndexPage enterConfirmPassword(String password,String oldName){ if(oldName == null){ driver.findElementById("passwordConfirmInput").clear(); driver.findElementById("passwordConfirmInput").sendKeys(password); }else{ driver.findElementById("passwordConfirmInput"+(getIndex(oldName)+1)).clear(); driver.findElementById("passwordConfirmInput"+(getIndex(oldName)+1)).sendKeys(password); } return new UserIndexPage(driver); } public UserIndexPage clickLDAP(String oldName){ if(oldName == null){ driver.findElementById("newUserModal").findElement(By.id("isLdapUserCheckbox")).click(); }else{ driver.findElementById("isLdapUserCheckbox"+(getIndex(oldName)+1)).click(); } return new UserIndexPage(driver); } public boolean isLDAPSelected(String oldName){ return driver.findElementById("isLdapUserCheckbox"+(getIndex(oldName)+1)).isSelected(); } public UserIndexPage clickGlobalAccess(String oldName){ if(oldName == null){ driver.findElementById("hasGlobalGroupAccessCheckbox" + (getIndex(oldName)+1)).click(); }else{ driver.findElementById("hasGlobalGroupAccessCheckbox" + (getIndex(oldName)+1)).click(); } return new UserIndexPage(driver); } public UserIndexPage chooseRoleForGlobalAccess(String role,String oldName){ if(oldName == null){ new Select(driver.findElementById("roleSelect")).selectByVisibleText(role); }else{ new Select(driver.findElementById("roleSelect"+(getIndex(oldName)+1))).selectByVisibleText(role); } return new UserIndexPage(driver); } public UserIndexPage clickAddNewUserBtn(){ driver.findElementsById("addUserButton").get(getNumRows()).click(); sleep(1000); // waitForInvisibleElement(driver.findElementById("newUserModal")); return new UserIndexPage(driver); } public UserIndexPage clickAddNewUserBtnInvalid(){ sleep(500); driver.findElementsById("addUserButton").get(getNumRows()).click(); sleep(500); return new UserIndexPage(driver); } public UserIndexPage clickUpdateUserBtn(String name){ driver.findElementsById("addUserButton").get(getIndex(name)).click(); // waitForInvisibleElement(driver.findElementById("editUserModal"+(getIndex(name)+1))); sleep(1000); return new UserIndexPage(driver); } public UserIndexPage clickUpdateUserBtnInvalid(String name){ sleep(500); driver.findElementsById("addUserButton").get(getIndex(name)).click(); sleep(500); return new UserIndexPage(driver); } public String getGlobalAccessRole(String name){ return new Select(driver.findElementById("roleSelect"+(getIndex(name)+1))).getAllSelectedOptions().get(0).getText().trim(); } public boolean isUserNamePresent(String userName) { return getIndex(userName) != -1; } public UserIndexPage clickEditLink(String roleName) { editLinks.get(getIndex(roleName)).click(); return new UserIndexPage(driver); } public boolean isSuccessDisplayed(String name){ return driver.findElementByClassName("alert-success").getText().contains(name); } public String getNameError(){ return driver.findElementById("name.errors").getText().trim(); } public String getPasswordError(){ return driver.findElementById("password.errors").getText().trim(); } public UserIndexPage clickCancel(String name){ driver.findElementsByClassName("modal-footer").get(getIndex(name)).findElement(By.className("btn")).click(); sleep(1000); return new UserIndexPage(driver); } public boolean isGlobalAccessErrorPresent(){ return driver.findElementById("hasGlobalGroupAccessErrors").getText().contains("This would leave users unable to access the user management portion of ThreadFix."); } public boolean isRoleSelected(String oldName,String role){ sleep(1000); if(oldName == null){ return new Select(driver.findElementById("roleSelect")).getFirstSelectedOption().getText().contains(role); }else{ return new Select(driver.findElementById("roleSelect"+(getIndex(oldName)+1))).getFirstSelectedOption().getText().contains(role); } } public boolean isGlobalAccessSelected(String oldName){ return driver.findElementById("hasGlobalGroupAccessCheckbox" + (getIndex(oldName)+1)).isSelected(); } }