/******************************************************************************* * Cloud Foundry * Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved. * * This product is licensed to you under the Apache License, Version 2.0 (the "License"). * You may not use this product except in compliance with the License. * * This product includes a number of subcomponents with * separate copyright notices and license terms. Your use of these * subcomponents is subject to the terms and conditions of the * subcomponent's license, as noted in the LICENSE file. *******************************************************************************/ package org.cloudfoundry.identity.uaa.login.feature; import org.cloudfoundry.identity.uaa.login.test.DefaultIntegrationTestConfig; import org.cloudfoundry.identity.uaa.login.test.IntegrationTestRule; import org.hamcrest.Matchers; import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.oauth2.client.test.TestAccounts; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = DefaultIntegrationTestConfig.class) public class HomeIT { @Autowired TestAccounts testAccounts; @Autowired @Rule public IntegrationTestRule integrationTestRule; @Autowired WebDriver webDriver; @Value("${integration.test.base_url}") String baseUrl; private HomePagePerspective asOnHomePage; @Before public void setUp() { webDriver.get(baseUrl + "/logout.do"); webDriver.get(baseUrl + "/login"); webDriver.findElement(By.name("username")).sendKeys(testAccounts.getUserName()); webDriver.findElement(By.name("password")).sendKeys(testAccounts.getPassword()); webDriver.findElement(By.xpath("//input[@value='Sign in']")).click(); asOnHomePage = new HomePagePerspective(webDriver, testAccounts.getUserName()); } @Test public void testMessage() throws Exception { Assert.assertEquals("Where to?", webDriver.findElement(By.tagName("h1")).getText()); } @Test public void theHeaderDropdown() throws Exception { Assert.assertNotNull(asOnHomePage.getUsernameElement()); Assert.assertFalse(asOnHomePage.getAccountSettingsElement().isDisplayed()); Assert.assertFalse(asOnHomePage.getSignOutElement().isDisplayed()); asOnHomePage.getUsernameElement().click(); Assert.assertTrue(asOnHomePage.getAccountSettingsElement().isDisplayed()); Assert.assertTrue(asOnHomePage.getSignOutElement().isDisplayed()); asOnHomePage.getAccountSettingsElement().click(); Assert.assertThat(webDriver.findElement(By.cssSelector("h1")).getText(), Matchers.containsString("Account Settings")); } static class HomePagePerspective { private final WebDriver webDriver; private final String username; public HomePagePerspective(WebDriver webDriver, String username) { this.webDriver = webDriver; this.username = username; } public WebElement getUsernameElement() { return getWebElementWithText(username); } public WebElement getAccountSettingsElement() { return getWebElementWithText("Account Settings"); } public WebElement getSignOutElement() { return getWebElementWithText("Sign Out"); } private WebElement getWebElementWithText(String text) { return webDriver.findElement(By.xpath("//*[text()='" + text + "']")); } } }