Removed Arquillian Drone and Graphene from testsuite

This commit is contained in:
Stian Thorgersen 2013-09-24 17:57:50 +01:00
parent 90b3e334ee
commit b5a9cfc57e
28 changed files with 209 additions and 71 deletions

15
pom.xml
View file

@ -243,18 +243,11 @@
<type>pom</type> <type>pom</type>
<scope>import</scope> <scope>import</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.jboss.arquillian.extension</groupId> <groupId>org.seleniumhq.selenium</groupId>
<artifactId>arquillian-drone-bom</artifactId> <artifactId>selenium-java</artifactId>
<version>1.2.0.Beta1</version> <version>2.26.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.graphene</groupId>
<artifactId>graphene-webdriver</artifactId>
<type>pom</type>
<version>2.0.0.Beta1</version>
</dependency> </dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>

View file

@ -35,6 +35,7 @@ import org.keycloak.services.models.UserModel.RequiredAction;
import org.picketlink.idm.model.sample.Realm; import org.picketlink.idm.model.sample.Realm;
import javax.imageio.spi.ServiceRegistry; import javax.imageio.spi.ServiceRegistry;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder; import javax.ws.rs.core.UriBuilder;
@ -127,7 +128,7 @@ public class FormFlows {
while (itr.hasNext()) { while (itr.hasNext()) {
FormService provider = itr.next(); FormService provider = itr.next();
if (provider.getId().equals("FormServiceId")) if (provider.getId().equals("FormServiceId"))
return Response.status(200).entity(provider.process(template, formDataBean)).build(); return Response.status(200).type(MediaType.TEXT_HTML).entity(provider.process(template, formDataBean)).build();
} }
return Response.status(200).entity("form provider not found").build(); return Response.status(200).entity("form provider not found").build();

View file

@ -119,15 +119,8 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.jboss.arquillian.extension</groupId> <groupId>org.seleniumhq.selenium</groupId>
<artifactId>arquillian-drone-webdriver-depchain</artifactId> <artifactId>selenium-java</artifactId>
<type>pom</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.graphene</groupId>
<artifactId>graphene-webdriver</artifactId>
<type>pom</type>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>

View file

@ -22,13 +22,15 @@
package org.keycloak.testsuite; package org.keycloak.testsuite;
import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.drone.api.annotation.Drone;
import org.jboss.arquillian.graphene.page.Page;
import org.jboss.shrinkwrap.api.spec.WebArchive; import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.After; import org.junit.After;
import org.junit.Rule;
import org.keycloak.testsuite.pages.AppPage; import org.keycloak.testsuite.pages.AppPage;
import org.keycloak.testsuite.pages.LoginPage; import org.keycloak.testsuite.pages.LoginPage;
import org.keycloak.testsuite.pages.RegisterPage; import org.keycloak.testsuite.pages.RegisterPage;
import org.keycloak.testsuite.rule.Driver;
import org.keycloak.testsuite.rule.Page;
import org.keycloak.testsuite.rule.WebRule;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
/** /**
@ -46,11 +48,14 @@ public abstract class AbstractDroneTest {
return Deployments.deployment(); return Deployments.deployment();
} }
@Rule
public WebRule webRule = new WebRule(this);
@Page @Page
protected AppPage appPage; protected AppPage appPage;
@Drone @Driver
protected WebDriver browser; protected WebDriver driver;
@Page @Page
protected LoginPage loginPage; protected LoginPage loginPage;
@ -64,7 +69,7 @@ public abstract class AbstractDroneTest {
if (appPage.isCurrent()) { if (appPage.isCurrent()) {
appPage.logout(); appPage.logout();
} }
browser.manage().deleteAllCookies(); driver.manage().deleteAllCookies();
} }
} }

View file

@ -21,13 +21,13 @@
*/ */
package org.keycloak.testsuite; package org.keycloak.testsuite;
import org.jboss.arquillian.graphene.page.Page;
import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.junit.Arquillian;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.keycloak.testsuite.pages.ChangePasswordPage; import org.keycloak.testsuite.pages.ChangePasswordPage;
import org.keycloak.testsuite.pages.UpdateProfilePage; import org.keycloak.testsuite.pages.UpdateProfilePage;
import org.keycloak.testsuite.rule.Page;
/** /**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a> * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>

View file

@ -56,7 +56,6 @@ public class LoginTest extends AbstractDroneTest {
public void loginSuccess() { public void loginSuccess() {
appPage.open(); appPage.open();
Assert.assertTrue(loginPage.isCurrent());
loginPage.login("bburke@redhat.com", "password"); loginPage.login("bburke@redhat.com", "password");
Assert.assertTrue(appPage.isCurrent()); Assert.assertTrue(appPage.isCurrent());

View file

@ -29,8 +29,6 @@ import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMessage;
import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.drone.api.annotation.Drone;
import org.jboss.arquillian.graphene.page.Page;
import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive; import org.jboss.shrinkwrap.api.spec.WebArchive;
@ -42,6 +40,10 @@ import org.junit.runner.RunWith;
import org.keycloak.testsuite.pages.AppPage; import org.keycloak.testsuite.pages.AppPage;
import org.keycloak.testsuite.pages.LoginPage; import org.keycloak.testsuite.pages.LoginPage;
import org.keycloak.testsuite.pages.RegisterPage; import org.keycloak.testsuite.pages.RegisterPage;
import org.keycloak.testsuite.rule.Driver;
import org.keycloak.testsuite.rule.GreenMailRule;
import org.keycloak.testsuite.rule.Page;
import org.keycloak.testsuite.rule.WebRule;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
/** /**
@ -66,11 +68,14 @@ public class RequiredActionEmailVerificationTest {
.addAsWebInfResource("web-properties-email-verfication.xml", "web.xml"); .addAsWebInfResource("web-properties-email-verfication.xml", "web.xml");
} }
@Rule
public WebRule webRule = new WebRule(this);
@Page @Page
protected AppPage appPage; protected AppPage appPage;
@Drone @Driver
protected WebDriver browser; protected WebDriver driver;
@Page @Page
protected LoginPage loginPage; protected LoginPage loginPage;
@ -96,7 +101,7 @@ public class RequiredActionEmailVerificationTest {
loginPage.register(); loginPage.register();
registerPage.register("name", "email", "verifyEmail", "password", "password"); registerPage.register("name", "email", "verifyEmail", "password", "password");
Assert.assertTrue(browser.getPageSource().contains("Verify email")); Assert.assertTrue(driver.getPageSource().contains("Verify email"));
MimeMessage message = greenMail.getReceivedMessages()[0]; MimeMessage message = greenMail.getReceivedMessages()[0];
@ -108,7 +113,7 @@ public class RequiredActionEmailVerificationTest {
String verificationUrl = m.group(1); String verificationUrl = m.group(1);
browser.navigate().to(verificationUrl.trim()); driver.navigate().to(verificationUrl.trim());
Assert.assertTrue(appPage.isCurrent()); Assert.assertTrue(appPage.isCurrent());
Assert.assertEquals("verifyEmail", appPage.getUser()); Assert.assertEquals("verifyEmail", appPage.getUser());

View file

@ -22,7 +22,6 @@
package org.keycloak.testsuite; package org.keycloak.testsuite;
import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.graphene.page.Page;
import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive; import org.jboss.shrinkwrap.api.spec.WebArchive;
@ -33,6 +32,8 @@ import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.keycloak.testsuite.pages.LoginPasswordUpdatePage; import org.keycloak.testsuite.pages.LoginPasswordUpdatePage;
import org.keycloak.testsuite.pages.LoginUpdateProfilePage; import org.keycloak.testsuite.pages.LoginUpdateProfilePage;
import org.keycloak.testsuite.rule.GreenMailRule;
import org.keycloak.testsuite.rule.Page;
/** /**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a> * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>

View file

@ -22,7 +22,6 @@
package org.keycloak.testsuite; package org.keycloak.testsuite;
import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.graphene.page.Page;
import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive; import org.jboss.shrinkwrap.api.spec.WebArchive;
@ -31,6 +30,8 @@ import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.keycloak.testsuite.pages.LoginPasswordUpdatePage; import org.keycloak.testsuite.pages.LoginPasswordUpdatePage;
import org.keycloak.testsuite.rule.GreenMailRule;
import org.keycloak.testsuite.rule.Page;
/** /**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a> * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>

View file

@ -24,19 +24,21 @@ package org.keycloak.testsuite;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.drone.api.annotation.Drone;
import org.jboss.arquillian.graphene.page.Page;
import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.spec.WebArchive; import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.After; import org.junit.After;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.keycloak.testsuite.pages.AppPage; import org.keycloak.testsuite.pages.AppPage;
import org.keycloak.testsuite.pages.LoginConfigTotpPage; import org.keycloak.testsuite.pages.LoginConfigTotpPage;
import org.keycloak.testsuite.pages.LoginPage; import org.keycloak.testsuite.pages.LoginPage;
import org.keycloak.testsuite.pages.RegisterPage; import org.keycloak.testsuite.pages.RegisterPage;
import org.keycloak.testsuite.rule.Driver;
import org.keycloak.testsuite.rule.Page;
import org.keycloak.testsuite.rule.WebRule;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.picketlink.idm.credential.util.TimeBasedOTP; import org.picketlink.idm.credential.util.TimeBasedOTP;
@ -56,11 +58,14 @@ public class RequiredActionTotpSetupTest {
return Deployments.deployment().addAsResource("testrealm-totp.json", "META-INF/testrealm.json"); return Deployments.deployment().addAsResource("testrealm-totp.json", "META-INF/testrealm.json");
} }
@Rule
public WebRule webRule = new WebRule(this);
@Page @Page
protected AppPage appPage; protected AppPage appPage;
@Drone @Driver
protected WebDriver browser; protected WebDriver driver;
@Page @Page
protected LoginConfigTotpPage totpPage; protected LoginConfigTotpPage totpPage;

View file

@ -22,7 +22,6 @@
package org.keycloak.testsuite; package org.keycloak.testsuite;
import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.graphene.page.Page;
import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive; import org.jboss.shrinkwrap.api.spec.WebArchive;
@ -31,6 +30,8 @@ import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.keycloak.testsuite.pages.LoginUpdateProfilePage; import org.keycloak.testsuite.pages.LoginUpdateProfilePage;
import org.keycloak.testsuite.rule.GreenMailRule;
import org.keycloak.testsuite.rule.Page;
/** /**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a> * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>

View file

@ -27,7 +27,6 @@ import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMessage;
import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.graphene.page.Page;
import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive; import org.jboss.shrinkwrap.api.spec.WebArchive;
@ -37,6 +36,8 @@ import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.keycloak.testsuite.pages.LoginPasswordResetPage; import org.keycloak.testsuite.pages.LoginPasswordResetPage;
import org.keycloak.testsuite.pages.LoginPasswordUpdatePage; import org.keycloak.testsuite.pages.LoginPasswordUpdatePage;
import org.keycloak.testsuite.rule.GreenMailRule;
import org.keycloak.testsuite.rule.Page;
/** /**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a> * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
@ -80,7 +81,7 @@ public class ResetPasswordTest extends AbstractDroneTest {
String body = (String) message.getContent(); String body = (String) message.getContent();
String changePasswordUrl = body.split("\n")[0]; String changePasswordUrl = body.split("\n")[0];
browser.navigate().to(changePasswordUrl.trim()); driver.navigate().to(changePasswordUrl.trim());
Assert.assertTrue(updatePasswordPage.isCurrent()); Assert.assertTrue(updatePasswordPage.isCurrent());

View file

@ -23,7 +23,6 @@ package org.keycloak.testsuite;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import org.jboss.arquillian.graphene.page.Page;
import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.junit.Arquillian;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
@ -31,6 +30,7 @@ import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.keycloak.testsuite.pages.LoginTotpPage; import org.keycloak.testsuite.pages.LoginTotpPage;
import org.keycloak.testsuite.pages.TotpPage; import org.keycloak.testsuite.pages.TotpPage;
import org.keycloak.testsuite.rule.Page;
import org.picketlink.idm.credential.util.TimeBasedOTP; import org.picketlink.idm.credential.util.TimeBasedOTP;
/** /**
@ -109,7 +109,7 @@ public class TotpTest extends AbstractDroneTest {
totpPage.configure(totp.generate(totpPage.getTotpSecret())); totpPage.configure(totp.generate(totpPage.getTotpSecret()));
Assert.assertTrue(browser.getPageSource().contains("Google Authenticator enabled")); Assert.assertTrue(driver.getPageSource().contains("Google Authenticator enabled"));
} }
} }

View file

@ -1,7 +1,7 @@
package org.keycloak.testsuite.pages; package org.keycloak.testsuite.pages;
import org.jboss.arquillian.drone.api.annotation.Drone;
import org.keycloak.testsuite.Constants; import org.keycloak.testsuite.Constants;
import org.keycloak.testsuite.rule.Driver;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.FindBy;
@ -10,7 +10,7 @@ public class AppPage {
private static String PATH = Constants.APP_ROOT + "/user.jsp"; private static String PATH = Constants.APP_ROOT + "/user.jsp";
@Drone @Driver
private WebDriver browser; private WebDriver browser;
@FindBy(id = "logout") @FindBy(id = "logout")

View file

@ -1,7 +1,7 @@
package org.keycloak.testsuite.pages; package org.keycloak.testsuite.pages;
import org.jboss.arquillian.drone.api.annotation.Drone;
import org.keycloak.testsuite.Constants; import org.keycloak.testsuite.Constants;
import org.keycloak.testsuite.rule.Driver;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.FindBy;
@ -10,7 +10,7 @@ public class ChangePasswordPage {
private static String PATH = Constants.AUTH_SERVER_ROOT + "/rest/realms/demo/account/password"; private static String PATH = Constants.AUTH_SERVER_ROOT + "/rest/realms/demo/account/password";
@Drone @Driver
private WebDriver browser; private WebDriver browser;
@FindBy(id = "password") @FindBy(id = "password")

View file

@ -1,7 +1,7 @@
package org.keycloak.testsuite.pages; package org.keycloak.testsuite.pages;
import org.jboss.arquillian.drone.api.annotation.Drone;
import org.keycloak.testsuite.Constants; import org.keycloak.testsuite.Constants;
import org.keycloak.testsuite.rule.Driver;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.FindBy;
@ -10,7 +10,7 @@ public class LoginConfigTotpPage {
private static String PATH = Constants.AUTH_SERVER_ROOT + "/rest/realms/demo/account/totp"; private static String PATH = Constants.AUTH_SERVER_ROOT + "/rest/realms/demo/account/totp";
@Drone @Driver
private WebDriver browser; private WebDriver browser;
@FindBy(id = "totpSecret") @FindBy(id = "totpSecret")

View file

@ -1,13 +1,13 @@
package org.keycloak.testsuite.pages; package org.keycloak.testsuite.pages;
import org.jboss.arquillian.drone.api.annotation.Drone; import org.keycloak.testsuite.rule.Driver;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.FindBy;
public class LoginPage { public class LoginPage {
@Drone @Driver
private WebDriver browser; private WebDriver browser;
@FindBy(id = "username") @FindBy(id = "username")

View file

@ -1,7 +1,7 @@
package org.keycloak.testsuite.pages; package org.keycloak.testsuite.pages;
import org.jboss.arquillian.drone.api.annotation.Drone;
import org.keycloak.testsuite.Constants; import org.keycloak.testsuite.Constants;
import org.keycloak.testsuite.rule.Driver;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.FindBy;
@ -10,7 +10,7 @@ public class LoginPasswordResetPage {
private static String PATH = Constants.AUTH_SERVER_ROOT + "/rest/realms/demo/account/password"; private static String PATH = Constants.AUTH_SERVER_ROOT + "/rest/realms/demo/account/password";
@Drone @Driver
private WebDriver browser; private WebDriver browser;
@FindBy(id = "username") @FindBy(id = "username")

View file

@ -1,7 +1,7 @@
package org.keycloak.testsuite.pages; package org.keycloak.testsuite.pages;
import org.jboss.arquillian.drone.api.annotation.Drone;
import org.keycloak.testsuite.Constants; import org.keycloak.testsuite.Constants;
import org.keycloak.testsuite.rule.Driver;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.FindBy;
@ -10,7 +10,7 @@ public class LoginPasswordUpdatePage {
private static String PATH = Constants.AUTH_SERVER_ROOT + "/rest/realms/demo/account/password"; private static String PATH = Constants.AUTH_SERVER_ROOT + "/rest/realms/demo/account/password";
@Drone @Driver
private WebDriver browser; private WebDriver browser;
@FindBy(id = "password-new") @FindBy(id = "password-new")

View file

@ -1,13 +1,13 @@
package org.keycloak.testsuite.pages; package org.keycloak.testsuite.pages;
import org.jboss.arquillian.drone.api.annotation.Drone; import org.keycloak.testsuite.rule.Driver;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.FindBy;
public class LoginTotpPage { public class LoginTotpPage {
@Drone @Driver
private WebDriver browser; private WebDriver browser;
@FindBy(id = "totp") @FindBy(id = "totp")

View file

@ -1,13 +1,13 @@
package org.keycloak.testsuite.pages; package org.keycloak.testsuite.pages;
import org.jboss.arquillian.drone.api.annotation.Drone; import org.keycloak.testsuite.rule.Driver;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.FindBy;
public class LoginUpdateProfilePage { public class LoginUpdateProfilePage {
@Drone @Driver
private WebDriver browser; private WebDriver browser;
@FindBy(id = "firstName") @FindBy(id = "firstName")

View file

@ -1,13 +1,13 @@
package org.keycloak.testsuite.pages; package org.keycloak.testsuite.pages;
import org.jboss.arquillian.drone.api.annotation.Drone; import org.keycloak.testsuite.rule.Driver;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.FindBy;
public class RegisterPage { public class RegisterPage {
@Drone @Driver
private WebDriver browser; private WebDriver browser;
@FindBy(id = "name") @FindBy(id = "name")

View file

@ -1,7 +1,7 @@
package org.keycloak.testsuite.pages; package org.keycloak.testsuite.pages;
import org.jboss.arquillian.drone.api.annotation.Drone;
import org.keycloak.testsuite.Constants; import org.keycloak.testsuite.Constants;
import org.keycloak.testsuite.rule.Driver;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.FindBy;
@ -10,7 +10,7 @@ public class TotpPage {
private static String PATH = Constants.AUTH_SERVER_ROOT + "/rest/realms/demo/account/totp"; private static String PATH = Constants.AUTH_SERVER_ROOT + "/rest/realms/demo/account/totp";
@Drone @Driver
private WebDriver browser; private WebDriver browser;
@FindBy(id = "totpSecret") @FindBy(id = "totpSecret")

View file

@ -1,7 +1,7 @@
package org.keycloak.testsuite.pages; package org.keycloak.testsuite.pages;
import org.jboss.arquillian.drone.api.annotation.Drone;
import org.keycloak.testsuite.Constants; import org.keycloak.testsuite.Constants;
import org.keycloak.testsuite.rule.Driver;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.FindBy;
@ -10,7 +10,7 @@ public class UpdateProfilePage {
private static String PATH = Constants.AUTH_SERVER_ROOT + "/rest/realms/demo/account"; private static String PATH = Constants.AUTH_SERVER_ROOT + "/rest/realms/demo/account";
@Drone @Driver
private WebDriver browser; private WebDriver browser;
@FindBy(id = "firstName") @FindBy(id = "firstName")

View file

@ -0,0 +1,12 @@
package org.keycloak.testsuite.rule;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Driver {
}

View file

@ -1,4 +1,4 @@
package org.keycloak.testsuite; package org.keycloak.testsuite.rule;
import java.lang.Thread.UncaughtExceptionHandler; import java.lang.Thread.UncaughtExceptionHandler;
import java.net.SocketException; import java.net.SocketException;

View file

@ -0,0 +1,12 @@
package org.keycloak.testsuite.rule;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Page {
}

View file

@ -0,0 +1,109 @@
package org.keycloak.testsuite.rule;
import java.lang.reflect.Field;
import org.junit.rules.ExternalResource;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.PageFactory;
import com.gargoylesoftware.htmlunit.WebClient;
public class WebRule extends ExternalResource {
private WebDriver driver;
private Object test;
public WebRule(Object test) {
this.test = test;
}
@Override
protected void before() throws Throwable {
String browser = "htmlunit";
if (System.getProperty("browser") != null) {
browser = System.getProperty("browser");
}
if (browser.equals("htmlunit")) {
HtmlUnitDriver d = new HtmlUnitDriver();
d.getWebClient().setCssEnabled(false);
driver = d;
} else if (browser.equals("chrome")) {
driver = new ChromeDriver();
} else if (browser.equals("firefox")) {
driver = new FirefoxDriver();
} else {
throw new RuntimeException("Unsupported browser " + browser);
}
initDriver(test);
initPages(test);
}
protected void initDriver(Object o) {
Class<?> c = o.getClass();
while (c != null) {
for (Field f : c.getDeclaredFields()) {
if (f.getAnnotation(Driver.class) != null) {
set(f, o, driver);
}
}
c = c.getSuperclass();
}
}
protected void initPages(Object o) {
Class<?> c = o.getClass();
while (c != null) {
for (Field f : c.getDeclaredFields()) {
if (f.getAnnotation(Page.class) != null) {
set(f, o, getPage(f.getType()));
}
}
c = c.getSuperclass();
}
}
protected void set(Field f, Object o, Object v) {
f.setAccessible(true);
try {
f.set(o, v);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public WebDriver getDriver() {
return driver;
}
public <T> T getPage(Class<T> pageClass) {
try {
T instance = pageClass.newInstance();
initDriver(instance);
PageFactory.initElements(driver, instance);
return instance;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
protected void after() {
driver.close();
}
public class HtmlUnitDriver extends org.openqa.selenium.htmlunit.HtmlUnitDriver {
@Override
public WebClient getWebClient() {
return super.getWebClient();
}
}
}