package org.appfuse.webapp.integration; import static org.junit.Assert.assertTrue; import java.io.File; import java.util.Date; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; public class AppFuseWebITCase extends SeleniumBaseTestCase { @Test public void testSeleniumTestCase() throws Exception { testLoadBaseUrl(); testSignUp(); testViewProfile(); testLogout(); testRequestPasswordHint(); testLogin(); testEditProfile(); testViewUsers(); testEditUser(); testAddNewUser(); testDeleteUser("newuser"); testDeleteUser("signupuser"); testViewActiveUsers(); testReloadOptions(); testUploadFile(); testLogout(); } public void testLoadBaseUrl() throws InterruptedException { log.debug(""); getDriver().get(getBaseUrl()); assertTrue(waitForTitle(getDriver(), "^Login[\\s\\S]*$")); } public void testSignUp() throws InterruptedException { log.debug(""); assertTrue(isElementPresent(By.linkText("Signup"))); getDriver().findElement(By.linkText("Signup")).click(); assertTrue(waitForElement(By.linkText("Save"))); getDriver().findElement(By.linkText("Save")).click(); assertTrue(waitForAlert()); assertTrue(isElementPresent(By.cssSelector("form div.error"))); getDriver().findElement(By.name("username")).clear(); getDriver().findElement(By.name("username")).sendKeys("signupuser"); getDriver().findElement(By.name("password")).clear(); getDriver().findElement(By.name("password")).sendKeys("signupuser"); getDriver().findElement(By.name("passwordHint")).clear(); getDriver().findElement(By.name("passwordHint")).sendKeys("signupuser"); getDriver().findElement(By.name("firstName")).clear(); getDriver().findElement(By.name("firstName")).sendKeys("signupuser"); getDriver().findElement(By.name("lastName")).clear(); getDriver().findElement(By.name("lastName")).sendKeys("signupuser"); getDriver().findElement(By.name("email")).clear(); getDriver().findElement(By.name("email")).sendKeys("signup@test.org"); getDriver().findElement(By.linkText("Save")).click(); assertTrue(waitForTitle(getDriver(), "^Main Menu[\\s\\S]*$")); } public void testViewProfile() throws InterruptedException { log.debug(""); assertTrue(getDriver().getTitle().matches("^Main Menu[\\s\\S]*$")); getDriver().findElement(By.linkText("Edit Profile")).click(); assertTrue(waitForTitle(getDriver(), "^User Settings[\\s\\S]*$")); assertTrue(waitForElement(By.linkText("Save"))); getDriver().findElement(By.linkText("Save")).click(); assertTrue(waitForElement(By.cssSelector("div.alert-success"))); } public void testRequestPasswordHint() throws InterruptedException { log.debug(""); getDriver().findElement(By.linkText("password hint e-mailed to you")).click(); assertTrue(waitForAlert()); getDriver().findElement(By.cssSelector("input.gwt-TextBox")).clear(); getDriver().findElement(By.cssSelector("input.gwt-TextBox")).sendKeys("nouser"); getDriver().findElement(By.linkText("password hint e-mailed to you")).click(); assertTrue(waitForElement(By.cssSelector("div.alert-error"))); getDriver().findElement(By.cssSelector("input.gwt-TextBox")).clear(); getDriver().findElement(By.cssSelector("input.gwt-TextBox")).sendKeys("admin"); getDriver().findElement(By.linkText("password hint e-mailed to you")).click(); assertTrue(waitForElement(By.cssSelector("div.alert-success"))); } public void testLogin() throws InterruptedException { log.debug(""); assertTrue(waitForTitle(getDriver(), "^Login[\\s\\S]*$")); assertTrue(isElementPresent(By.linkText("Login"))); getDriver().findElement(By.cssSelector("input.gwt-TextBox")).clear(); getDriver().findElement(By.cssSelector("input.gwt-TextBox")).sendKeys("baduser"); getDriver().findElement(By.cssSelector("input.gwt-PasswordTextBox")).clear(); getDriver().findElement(By.cssSelector("input.gwt-PasswordTextBox")).sendKeys("badpassword"); getDriver().findElement(By.xpath("(//a[contains(text(),'Login')])[2]")).click(); assertTrue(waitForElement(By.cssSelector("div.alert-error"))); getDriver().findElement(By.cssSelector("input.gwt-TextBox")).clear(); getDriver().findElement(By.cssSelector("input.gwt-TextBox")).sendKeys("admin"); getDriver().findElement(By.cssSelector("input.gwt-PasswordTextBox")).clear(); getDriver().findElement(By.cssSelector("input.gwt-PasswordTextBox")).sendKeys("admin"); getDriver().findElement(By.xpath("(//a[contains(text(),'Login')])[2]")).click(); assertTrue(waitForTitle(getDriver(), "^Main Menu[\\s\\S]*$")); } public void testEditProfile() throws InterruptedException { log.debug(""); getDriver().findElement(By.linkText("Edit Profile")).click(); assertTrue(waitForTitle(getDriver(), "^User Settings[\\s\\S]*$")); assertTrue(waitForElement(By.cssSelector("form.well"))); getDriver().findElement(By.name("phoneNumber")).clear(); getDriver().findElement(By.name("phoneNumber")).sendKeys("555 555 555"); getDriver().findElement(By.linkText("Save")).click(); assertTrue(waitForElement(By.cssSelector("div.alert-success"))); } public void testViewUsers() throws InterruptedException { log.debug(""); getDriver().findElement(By.linkText("Administration")).click(); getDriver().findElement(By.linkText("View Users")).click(); assertTrue(waitForTitle(getDriver(), "^User List[\\s\\S]*$")); assertTrue(waitForElement(By.cssSelector("div#search input"))); getDriver().findElement(By.cssSelector("div#search input")).clear(); getDriver().findElement(By.cssSelector("div#search input")).sendKeys("matt"); getDriver().findElement(By.cssSelector("button.btn")).click(); assertTrue(waitForElement(By.linkText("admin"))); getDriver().findElement(By.cssSelector("input.input-medium.search-query")).clear(); getDriver().findElement(By.cssSelector("input.input-medium.search-query")).sendKeys("nonuser"); getDriver().findElement(By.cssSelector("button.btn")).click(); assertTrue(waitForElementNotPresent(By.linkText("admin"))); getDriver().findElement(By.linkText("Done")).click(); assertTrue(waitForTitle(getDriver(), "^Main Menu[\\s\\S]*$")); } public void testEditUser() throws InterruptedException { log.debug(""); getDriver().findElement(By.linkText("Administration")).click(); getDriver().findElement(By.linkText("View Users")).click(); assertTrue(waitForElement(By.linkText("admin"))); getDriver().findElement(By.linkText("admin")).click(); assertTrue(waitForElement(By.name("phoneNumber"))); getDriver().findElement(By.name("phoneNumber")).clear(); getDriver().findElement(By.name("phoneNumber")).sendKeys("555 555 777"); getDriver().findElement(By.linkText("Save")).click(); assertTrue(waitForElement(By.cssSelector("div.alert-success"))); getDriver().findElement(By.linkText("Done")).click(); } public void testViewActiveUsers() { log.debug(""); getDriver().findElement(By.linkText("Administration")).click(); getDriver().findElement(By.linkText("Current Users")).click(); assertTrue(waitForTitle(getDriver(), "^Active Users[\\s\\S]*$")); } public void testAddNewUser() throws InterruptedException { log.debug(""); getDriver().findElement(By.linkText("Administration")).click(); getDriver().findElement(By.linkText("View Users")).click(); assertTrue(waitForElement(By.linkText("Add"))); getDriver().findElement(By.linkText("Add")).click(); getDriver().findElement(By.linkText("Save")).click(); assertTrue(waitForAlert()); getDriver().findElement(By.name("username")).clear(); getDriver().findElement(By.name("username")).sendKeys("newuser"); getDriver().findElement(By.name("passwordHint")).clear(); getDriver().findElement(By.name("passwordHint")).sendKeys("newuser"); getDriver().findElement(By.name("firstName")).clear(); getDriver().findElement(By.name("firstName")).sendKeys("New"); getDriver().findElement(By.name("lastName")).clear(); getDriver().findElement(By.name("lastName")).sendKeys("User"); getDriver().findElement(By.name("email")).clear(); getDriver().findElement(By.name("email")).sendKeys("email@test.org"); getDriver().findElement(By.name("enabled")).click(); getDriver().findElement(By.linkText("Save")).click(); assertTrue(waitForElement(By.cssSelector("div.alert-success"))); } public void testDeleteUser(final String username) throws InterruptedException { log.debug(""); getDriver().findElement(By.linkText("Administration")).click(); getDriver().findElement(By.linkText("View Users")).click(); // log.debug("waiting for link " + new Date()); // assertTrue(waitForElement(By.linkText(username))); // log.debug("done waiting for link " + new Date()); Thread.sleep(1000); log.debug("clicking link " + new Date()); getDriver().findElement(By.linkText(username)).click(); log.debug("link clicked " + new Date()); assertTrue(waitForElement(By.linkText("Delete"))); getDriver().findElement(By.linkText("Delete")).click(); assertTrue(waitForAlert()); assertTrue(waitForElement(By.cssSelector("div.alert-success"))); } public void testReloadOptions() throws InterruptedException { log.debug(""); getDriver().findElement(By.linkText("Administration")).click(); getDriver().findElement(By.linkText("Reload Options")).click(); assertTrue(waitForElement(By.cssSelector("div.alert-success"))); } public void testUploadFile() throws InterruptedException { log.debug(""); getDriver().findElement(By.linkText("Administration")).click(); getDriver().findElement(By.linkText("Upload A File")).click(); assertTrue(waitForTitle(getDriver(), "^File Upload[\\s\\S]*$")); getDriver().findElement(By.name("name")).clear(); getDriver().findElement(By.name("name")).sendKeys("File"); // getDriver().findElement(By.name("file")).clear(); final WebElement fileinput = getDriver().findElement(By.name("file")); fileinput.sendKeys(new File("pom.xml").getAbsolutePath()); getDriver().findElement(By.cssSelector("button.btn.btn-primary")).click(); assertTrue(waitForElement(By.cssSelector("div.alert-success"))); } public void testLogout() throws InterruptedException { log.debug(""); getDriver().findElement(By.linkText("Logout")).click(); // signup end // password hint assertTrue(waitForElement(By.linkText("password hint e-mailed to you"))); } }