KEYCLOAK-2913 Migrate i18n package to new testsuite

This commit is contained in:
Stan Silvert 2016-05-20 08:03:16 -04:00
parent af7fd0ef61
commit 049b0dda23
8 changed files with 90 additions and 114 deletions

View file

@ -17,7 +17,9 @@
package org.keycloak.testsuite.pages;
import org.jboss.arquillian.drone.api.annotation.Drone;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
@ -44,6 +46,8 @@ public abstract class AbstractAccountPage extends AbstractPage {
}
public void openLanguage(String language){
localeDropdown.findElement(By.linkText(language)).click();
WebElement langLink = localeDropdown.findElement(By.id("kc-locale-" + language));
String url = langLink.getAttribute("href");
driver.navigate().to(url);
}
}

View file

@ -30,7 +30,7 @@ public class LoginPage extends AbstractPage {
@ArquillianResource
protected OAuthClient oauth;
@FindBy(id = "username")
private WebElement usernameInput;
@ -184,7 +184,9 @@ public class LoginPage extends AbstractPage {
}
public void openLanguage(String language){
localeDropdown.findElement(By.linkText(language)).click();
WebElement langLink = localeDropdown.findElement(By.id("kc-locale-" + language));
String url = langLink.getAttribute("href");
driver.navigate().to(url);
}
}

View file

@ -0,0 +1,50 @@
/*
* Copyright 2016 Red Hat Inc. and/or its affiliates and other contributors
* as indicated by the @author tags. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.keycloak.testsuite.i18n;
import org.junit.After;
import org.keycloak.representations.idm.RealmRepresentation;
import org.keycloak.testsuite.TestRealmKeycloakTest;
import org.keycloak.testsuite.util.RealmBuilder;
import org.keycloak.testsuite.util.UserBuilder;
/**
* @author Stan Silvert ssilvert@redhat.com (C) 2016 Red Hat Inc.
*/
public abstract class AbstractI18NTest extends TestRealmKeycloakTest {
@Override
public void configureTestRealm(RealmRepresentation testRealm) {
UserBuilder user = UserBuilder.create()
.username("login-test")
.enabled(true)
.email("login@test.com")
.role("account", "manage-account")
.password("password");
RealmBuilder.edit(testRealm).user(user);
}
/**
* Remove cookies at the end so that the next test will start out
* using the default locale.
*/
@After
public void deleteCookies() {
driver.manage().deleteAllCookies();
}
}

View file

@ -16,49 +16,22 @@
*/
package org.keycloak.testsuite.i18n;
import org.jboss.arquillian.graphene.page.Page;
import org.junit.Assert;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserCredentialModel;
import org.keycloak.models.UserModel;
import org.keycloak.representations.idm.CredentialRepresentation;
import org.keycloak.services.managers.RealmManager;
import org.keycloak.testsuite.pages.AccountUpdateProfilePage;
import org.keycloak.testsuite.pages.LoginPage;
import org.keycloak.testsuite.rule.KeycloakRule;
import org.keycloak.testsuite.rule.WebResource;
import org.keycloak.testsuite.rule.WebRule;
/**
* @author <a href="mailto:gerbermichi@me.com">Michael Gerber</a>
* @author Stan Silvert ssilvert@redhat.com (C) 2016 Red Hat Inc.
*/
public class AccountPageTest {
public class AccountPageTest extends AbstractI18NTest {
@ClassRule
public static KeycloakRule keycloakRule = new KeycloakRule(new KeycloakRule.KeycloakSetup() {
@Override
public void config(RealmManager manager, RealmModel adminstrationRealm, RealmModel appRealm) {
UserModel user = manager.getSession().users().addUser(appRealm, "login-test");
user.setEmail("login@test.com");
user.setEnabled(true);
UserCredentialModel creds = new UserCredentialModel();
creds.setType(CredentialRepresentation.PASSWORD);
creds.setValue("password");
user.updateCredential(creds);
}
});
@Rule
public WebRule webRule = new WebRule(this);
@WebResource
@Page
protected AccountUpdateProfilePage accountUpdateProfilePage;
@WebResource
@Page
protected LoginPage loginPage;
@Test

View file

@ -17,59 +17,46 @@
package org.keycloak.testsuite.i18n;
import org.junit.Assert;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserCredentialModel;
import org.keycloak.models.UserModel;
import org.keycloak.representations.idm.CredentialRepresentation;
import org.keycloak.services.managers.RealmManager;
import org.keycloak.testsuite.pages.LoginPage;
import org.keycloak.testsuite.pages.LoginPasswordResetPage;
import org.keycloak.testsuite.rule.GreenMailRule;
import org.keycloak.testsuite.rule.KeycloakRule;
import org.keycloak.testsuite.rule.WebResource;
import org.keycloak.testsuite.rule.WebRule;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.IOException;
import java.util.Collections;
import java.util.HashMap;
import org.jboss.arquillian.graphene.page.Page;
import org.keycloak.representations.idm.UserRepresentation;
import org.keycloak.testsuite.admin.ApiUtil;
import org.keycloak.testsuite.util.GreenMailRule;
import static org.junit.Assert.assertEquals;
/**
* @author <a href="mailto:gerbermichi@me.com">Michael Gerber</a>
* @author Stan Silvert ssilvert@redhat.com (C) 2016 Red Hat Inc.
*/
public class EmailTest {
@ClassRule
public static KeycloakRule keycloakRule = new KeycloakRule(new KeycloakRule.KeycloakSetup() {
@Override
public void config(RealmManager manager, RealmModel adminstrationRealm, RealmModel appRealm) {
UserModel user = manager.getSession().users().addUser(appRealm, "login-test");
user.setEmail("login@test.com");
user.setEnabled(true);
UserCredentialModel creds = new UserCredentialModel();
creds.setType(CredentialRepresentation.PASSWORD);
creds.setValue("password");
user.updateCredential(creds);
}
});
@Rule
public WebRule webRule = new WebRule(this);
public class EmailTest extends AbstractI18NTest {
@Rule
public GreenMailRule greenMail = new GreenMailRule();
@WebResource
@Page
protected LoginPage loginPage;
@WebResource
@Page
protected LoginPasswordResetPage resetPasswordPage;
private void changeUserLocale(String locale) {
UserRepresentation user = findUser("login-test");
if (user.getAttributes() == null) user.setAttributes(new HashMap<String, Object>());
user.getAttributes().put(UserModel.LOCALE, Collections.singletonList(locale));
ApiUtil.findUserByUsernameId(testRealm(), "login-test").update(user);
}
@Test
public void restPasswordEmail() throws IOException, MessagingException {
loginPage.open();
@ -82,12 +69,7 @@ public class EmailTest {
Assert.assertEquals("Reset password", message.getSubject());
keycloakRule.update(new KeycloakRule.KeycloakSetup() {
@Override
public void config(RealmManager manager, RealmModel adminstrationRealm, RealmModel appRealm) {
manager.getSession().users().getUserByUsername("login-test", appRealm).setSingleAttribute(UserModel.LOCALE, "en");
}
});
changeUserLocale("en");
loginPage.open();
loginPage.resetPassword();
@ -103,12 +85,7 @@ public class EmailTest {
@Test
public void restPasswordEmailGerman() throws IOException, MessagingException {
keycloakRule.configure(new KeycloakRule.KeycloakSetup() {
@Override
public void config(RealmManager manager, RealmModel adminstrationRealm, RealmModel appRealm) {
manager.getSession().users().getUserByUsername("login-test", appRealm).setSingleAttribute(UserModel.LOCALE, "de");
}
});
changeUserLocale("de");
loginPage.open();
loginPage.resetPassword();
@ -119,12 +96,6 @@ public class EmailTest {
MimeMessage message = greenMail.getReceivedMessages()[0];
Assert.assertEquals("Passwort zurückzusetzen", message.getSubject());
keycloakRule.update(new KeycloakRule.KeycloakSetup() {
@Override
public void config(RealmManager manager, RealmModel adminstrationRealm, RealmModel appRealm) {
manager.getSession().users().getUserByUsername("login-test", appRealm).setSingleAttribute(UserModel.LOCALE, "en");
}
});
}
}

View file

@ -21,44 +21,20 @@ import org.jboss.resteasy.client.jaxrs.ResteasyClient;
import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;
import org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine;
import org.junit.Assert;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.keycloak.adapters.HttpClientBuilder;
import org.keycloak.models.RealmModel;
import org.keycloak.services.managers.RealmManager;
import org.keycloak.testsuite.OAuthClient;
import org.keycloak.testsuite.pages.LoginPage;
import org.keycloak.testsuite.rule.KeycloakRule;
import org.keycloak.testsuite.rule.WebResource;
import org.keycloak.testsuite.rule.WebRule;
import org.openqa.selenium.WebDriver;
import javax.ws.rs.core.Response;
import org.jboss.arquillian.graphene.page.Page;
/**
* @author <a href="mailto:gerbermichi@me.com">Michael Gerber</a>
* @author Stan Silvert ssilvert@redhat.com (C) 2016 Red Hat Inc.
*/
public class LoginPageTest {
public class LoginPageTest extends AbstractI18NTest {
@ClassRule
public static KeycloakRule keycloakRule = new KeycloakRule(new KeycloakRule.KeycloakSetup() {
@Override
public void config(RealmManager manager, RealmModel adminstrationRealm, RealmModel appRealm) {
}
});
@Rule
public WebRule webRule = new WebRule(this);
@WebResource
protected OAuthClient oauth;
@WebResource
protected WebDriver driver;
@WebResource
@Page
protected LoginPage loginPage;
@Test

View file

@ -37,7 +37,7 @@
<a href="#" id="kc-current-locale-link">${locale.current}</a>
<ul>
<#list locale.supported as l>
<li class="kc-dropdown-item"><a href="${l.url}">${l.label}</a></li>
<li class="kc-dropdown-item"><a href="${l.url}" id="kc-locale-${l.label}">${l.label}</a></li>
</#list>
</ul>
</div>

View file

@ -48,7 +48,7 @@
<a href="#" id="kc-current-locale-link">${locale.current}</a>
<ul>
<#list locale.supported as l>
<li class="kc-dropdown-item"><a href="${l.url}">${l.label}</a></li>
<li class="kc-dropdown-item"><a href="${l.url}" id="kc-locale-${l.label}">${l.label}</a></li>
</#list>
</ul>
</div>