Author: mgencur(a)redhat.com
Date: 2009-09-15 04:09:44 -0400 (Tue, 15 Sep 2009)
New Revision: 11487
Modified:
branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/build.xml
branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/openid/jboss5.xml
branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/openid/src/org/jboss/seam/example/openid/test/selenium/SeleniumOpenIdTest.java
branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSeleniumTest.java
Log:
JBPAPP-2796 Added a functional test for OpenID seam example
Modified: branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/build.xml
===================================================================
--- branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/build.xml 2009-09-15 07:52:41
UTC (rev 11486)
+++ branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/build.xml 2009-09-15 08:09:44
UTC (rev 11487)
@@ -104,6 +104,8 @@
<sysproperty key="selenium.speed" value="${selenium.speed}"
/>
<sysproperty key="selenium.timeout" value="${selenium.timeout}"
/>
<sysproperty key="example.context.path" value="${context.path}"
/>
+ <sysproperty key="openid.account" value="${openid.account}"
/>
+ <sysproperty key="openid.password" value="${openid.password}"
/>
</testng>
</target>
Modified: branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/openid/jboss5.xml
===================================================================
--- branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/openid/jboss5.xml 2009-09-15
07:52:41 UTC (rev 11486)
+++ branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/openid/jboss5.xml 2009-09-15
08:09:44 UTC (rev 11487)
@@ -17,11 +17,10 @@
-->
<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
<suite name="OpenId example" verbose="2"
parallel="false">
- <test name="openid_jboss4">
+ <test name="openid_jboss5">
<parameter name="PROPERTY_FILE" value="" />
<classes>
- <class
- name="org.jboss.seam.example.openid.test.selenium.SeleniumOpenIdTest"
/>
+ <class
name="org.jboss.seam.example.openid.test.selenium.SeleniumOpenIdTest" />
</classes>
</test>
</suite>
Modified:
branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/openid/src/org/jboss/seam/example/openid/test/selenium/SeleniumOpenIdTest.java
===================================================================
---
branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/openid/src/org/jboss/seam/example/openid/test/selenium/SeleniumOpenIdTest.java 2009-09-15
07:52:41 UTC (rev 11486)
+++
branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/openid/src/org/jboss/seam/example/openid/test/selenium/SeleniumOpenIdTest.java 2009-09-15
08:09:44 UTC (rev 11487)
@@ -1,19 +1,83 @@
+/*
+ * 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);
}
@@ -26,4 +90,43 @@
{
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");
+ }
+ }
}
Modified:
branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSeleniumTest.java
===================================================================
---
branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSeleniumTest.java 2009-09-15
07:52:41 UTC (rev 11486)
+++
branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSeleniumTest.java 2009-09-15
08:09:44 UTC (rev 11487)
@@ -104,4 +104,14 @@
}
return properties.getProperty(key, "Property not found: " + key);
}
+
+ public static String getBrowser()
+ {
+ return BROWSER;
+ }
+
+ public static void setBrowser(String browser)
+ {
+ BROWSER = browser;
+ }
}