KEYCLOAK-2451 Add Internationalization test
This commit is contained in:
parent
d5d954e80a
commit
b4a2559ac5
4 changed files with 137 additions and 1 deletions
|
@ -0,0 +1,27 @@
|
|||
package org.keycloak.testsuite.console.page.fragment;
|
||||
|
||||
import org.jboss.arquillian.graphene.fragment.Root;
|
||||
import org.jboss.arquillian.test.api.ArquillianResource;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.WebDriver;
|
||||
import org.openqa.selenium.WebElement;
|
||||
|
||||
/**
|
||||
* @author Vaclav Muzikar <vmuzikar@redhat.com>
|
||||
*/
|
||||
public class Dropdown {
|
||||
@Root
|
||||
private WebElement dropDownRoot; // MUST be .kc-dropdown
|
||||
|
||||
@ArquillianResource
|
||||
private WebDriver driver;
|
||||
|
||||
public String getSelected() {
|
||||
return dropDownRoot.findElement(By.xpath("./a")).getText();
|
||||
}
|
||||
|
||||
public void selectByText(String text) {
|
||||
String href = dropDownRoot.findElement(By.xpath("./ul/li/a[text()='" + text + "']")).getAttribute("href");
|
||||
driver.navigate().to(href);
|
||||
}
|
||||
}
|
|
@ -10,7 +10,7 @@ import org.openqa.selenium.support.FindBy;
|
|||
*/
|
||||
public class RealmSettings extends AdminConsoleRealm {
|
||||
|
||||
@FindBy(xpath = "//div[@data-ng-controller='RealmTabCtrl']/ul")
|
||||
@FindBy(className = "nav-tabs")
|
||||
private RealmTabs realmTabs;
|
||||
|
||||
public RealmTabs tabs() {
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
*/
|
||||
package org.keycloak.testsuite.console.page.realm;
|
||||
|
||||
import org.keycloak.testsuite.console.page.fragment.OnOffSwitch;
|
||||
import org.openqa.selenium.support.FindBy;
|
||||
import org.openqa.selenium.support.ui.Select;
|
||||
|
||||
|
@ -46,6 +47,9 @@ public class ThemeSettings extends RealmSettings {
|
|||
@FindBy(css = "#emailTheme")
|
||||
private Select emailThemeSelect;
|
||||
|
||||
@FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='internationalizationEnabled']]")
|
||||
private OnOffSwitch internatEnabledSwitch;
|
||||
|
||||
public void changeLoginTheme(String themeName) {
|
||||
waitUntilElement(By.id("loginTheme")).is().present();
|
||||
loginThemeSelect.selectByVisibleText(themeName);
|
||||
|
@ -63,6 +67,14 @@ public class ThemeSettings extends RealmSettings {
|
|||
emailThemeSelect.selectByVisibleText(themeName);
|
||||
}
|
||||
|
||||
public void setInternatEnabled(boolean value) {
|
||||
internatEnabledSwitch.setOn(value);
|
||||
}
|
||||
|
||||
public boolean isInternatEnabled() {
|
||||
return internatEnabledSwitch.isOn();
|
||||
}
|
||||
|
||||
public void saveTheme() {
|
||||
primaryButton.click();
|
||||
}
|
||||
|
|
|
@ -0,0 +1,97 @@
|
|||
package org.keycloak.testsuite.console.realm;
|
||||
|
||||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.testsuite.auth.page.AuthRealm;
|
||||
import org.keycloak.testsuite.console.page.fragment.Dropdown;
|
||||
import org.keycloak.testsuite.console.page.realm.ThemeSettings;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.support.FindBy;
|
||||
import static org.junit.Assert.*;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.*;
|
||||
import static org.keycloak.testsuite.util.URLAssert.*;
|
||||
|
||||
/**
|
||||
* @author Vaclav Muzikar <vmuzikar@redhat.com>
|
||||
*/
|
||||
public class InternationalizationTest extends AbstractRealmTest {
|
||||
@Page
|
||||
private ThemeSettings themeSettingsPage;
|
||||
|
||||
@FindBy(id = "kc-locale-dropdown")
|
||||
private Dropdown localeDropdown;
|
||||
|
||||
@Before
|
||||
public void beforeInternationalizationTest() {
|
||||
tabs().themes();
|
||||
themeSettingsPage.setInternatEnabled(true);
|
||||
themeSettingsPage.saveTheme();
|
||||
realmSettingsPage.setAdminRealm(AuthRealm.TEST);
|
||||
accountPage.setAuthRealm(testRealmPage);
|
||||
deleteAllCookiesForTestRealm();
|
||||
deleteAllCookiesForMasterRealm();
|
||||
}
|
||||
|
||||
@After
|
||||
public void afterInternationalizationTest() {
|
||||
testContext.setAdminLoggedIn(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Change locale before login
|
||||
*/
|
||||
@Test
|
||||
public void loginInternationalization() {
|
||||
testRealmAdminConsolePage.navigateTo();
|
||||
|
||||
localeDropdown.selectByText("Español");
|
||||
assertLocale(".//label[@for='password']", "Contraseña"); // Password
|
||||
|
||||
loginToTestRealmConsoleAs(testUser);
|
||||
assertConsoleLocale("Temas");
|
||||
|
||||
accountPage.navigateTo();
|
||||
assertAccountLocale("Cuenta");
|
||||
}
|
||||
|
||||
/**
|
||||
* Change locale on the Account page
|
||||
*/
|
||||
@Test
|
||||
public void accountInternationalization() {
|
||||
accountPage.navigateTo();
|
||||
loginPage.form().login(testUser);
|
||||
|
||||
localeDropdown.selectByText("Français");
|
||||
accountPage.navigateTo();
|
||||
assertAccountLocale("Compte");
|
||||
|
||||
deleteAllCookiesForTestRealm();
|
||||
|
||||
loginToTestRealmConsoleAs(testUser);
|
||||
assertConsoleLocale("Thèmes");
|
||||
}
|
||||
|
||||
private void assertConsoleLocale(String expected) {
|
||||
assertCurrentUrlEquals(realmSettingsPage);
|
||||
assertLocale(".//a[contains(@href,'/theme-settings')]", expected); // Themes
|
||||
}
|
||||
|
||||
private void assertAccountLocale(String expected) {
|
||||
assertCurrentUrlEquals(accountPage);
|
||||
assertLocale(".//div[contains(@class,'bs-sidebar')]/ul/li", expected); // Account
|
||||
}
|
||||
|
||||
private void assertLocale(String xpathSelector, String expected) {
|
||||
WebElement element = driver.findElement(By.xpath(xpathSelector));
|
||||
assertLocale(element, expected);
|
||||
}
|
||||
|
||||
private void assertLocale(WebElement element, String expected) {
|
||||
waitUntilElement(element);
|
||||
assertEquals(expected, element.getText());
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue