/*
* JBoss, Home of Professional Open Source
* Copyright 2008, Red Hat Middleware LLC, and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.seam.example.openid.test.selenium;
import static org.testng.AssertJUnit.assertTrue;
import static org.testng.AssertJUnit.assertEquals;
import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
/**
* This class tests basic functionality of Seam OpenId example.
*
* For executing this test a selenium.browser property is automaticly changed:
*
* selenium.browser=*chrome (to test Mozilla Firefox)
* selenium.browser=*iehta (to test Internet Explorer)
*
* This parameter tells browser to increase its privileges to be able to
* work across multiple domains.
*
*
* @author Martin Gencur
*
*/
public class SeleniumOpenIdTest extends SeamSeleniumTest
{
public static final String HOME_PAGE_TITLE = "OpenID Wall";
public static final String LOGIN_LINK = "xpath=//input[@value='OpenID Login']";
public static final String LOGIN_INPUT = "xpath=//input[@class='openid_input']";
public static final String PASSWORD_INPUT = "id=password";
public static final String SIGNIN_BUTTON = "id=signin_button";
public static final String CONTINUE_BUTTON = "xpath=//button[contains(text(),'Continue')]";
public static final String LOGOUT_BUTTON = "xpath=//input[@value='Logout']";
public static String OPENID_ACCOUNT;
public static String OPENID_PASSWORD;
public static String ORIGINAL_BROWSER;
@BeforeClass
@Parameters( { "openid.account", "openid.password" })
public void setCredentials(String account, String password) {
OPENID_ACCOUNT = account;
OPENID_PASSWORD = password;
}
@AfterClass
public void returnBrowser(){
super.setBrowser(ORIGINAL_BROWSER);
}
@BeforeMethod
@Override
public void setUp()
{
/*setting browser with enhanced security privileges for selenium*/
setProperBrowser(SeamSeleniumTest.getBrowser());
super.setUp();
browser.open(CONTEXT_PATH);
}
/**
* Place holder - just verifies that example deploys
*/
@Test
public void homePageLoadTest()
{
assertEquals("Unexpected page title.", HOME_PAGE_TITLE, browser.getTitle());
}
/**
* Method verifies login and logout operations.
*/
@Test(dependsOnMethods={"homePageLoadTest"})
public void openIdLoginLogoutTest(){
deleteCookies();
browser.type(LOGIN_INPUT, OPENID_ACCOUNT);
browser.clickAndWait(LOGIN_LINK);
browser.type(PASSWORD_INPUT, OPENID_PASSWORD);
browser.clickAndWait(SIGNIN_BUTTON);
if (browser.isElementPresent(CONTINUE_BUTTON)) {
browser.clickAndWait(CONTINUE_BUTTON);
}
assertTrue("Page should contain information about successfull login", browser.isTextPresent("OpenID login successful..."));
browser.clickAndWait(LOGOUT_BUTTON);
assertTrue("Page should contain input field which means that user is not logged in anymore", browser.isElementPresent(LOGIN_INPUT));
}
private void deleteCookies(){
browser.deleteCookie("session_id","");
browser.deleteCookie("secure_session_id","");
}
/**
* Method for setting proper browser for selenium so that it can work
* across multiple domains.
*
* @param origBrowser Originally intended browser
*/
private void setProperBrowser(String origBrowser){
ORIGINAL_BROWSER = origBrowser;
if (origBrowser.equals("*firefox") || origBrowser.equals("*firefoxproxy")) {
super.setBrowser("*chrome");
}
if (origBrowser.equals("*iexplore") || origBrowser.equals("*iexploreproxy")) {
super.setBrowser("*iehta");
}
}
}