/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* 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.console;
import org.jboss.arquillian.graphene.page.Page;
import org.junit.Before;
import org.keycloak.representations.idm.UserRepresentation;
import org.keycloak.testsuite.AbstractAuthTest;
import org.keycloak.testsuite.auth.page.login.Login;
import org.keycloak.testsuite.console.page.AdminConsole;
import org.keycloak.testsuite.console.page.AdminConsoleRealm;
import org.keycloak.testsuite.console.page.AdminConsoleRealm.ConfigureMenu;
import org.keycloak.testsuite.console.page.AdminConsoleRealm.ManageMenu;
import org.keycloak.testsuite.console.page.fragment.AdminConsoleAlert;
import org.keycloak.testsuite.console.page.fragment.ModalDialog;
import org.openqa.selenium.support.FindBy;
import static org.junit.Assert.assertTrue;
import static org.keycloak.testsuite.auth.page.AuthRealm.TEST;
import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlStartsWith;
import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlStartsWithLoginUrlOf;
/**
*
* @author Petr Mensik
* @author tkyjovsk
*/
public abstract class AbstractConsoleTest extends AbstractAuthTest {
@Page
protected AdminConsole adminConsolePage;
@Page
protected AdminConsoleRealm adminConsoleRealmPage;
@Page
protected AdminConsole testRealmAdminConsolePage;
@FindBy(xpath = "//div[@class='modal-dialog']")
protected ModalDialog modalDialog;
@FindBy(className = "alert")
protected AdminConsoleAlert alert;
protected boolean adminLoggedIn = false;
@Override
public void setDefaultPageUriParameters() {
super.setDefaultPageUriParameters();
testRealmPage.setAuthRealm(TEST);
testRealmAdminConsolePage.setAdminRealm(TEST);
}
@Before
public void beforeConsoleTest() {
createTestUserWithAdminClient();
if (!testContext.isAdminLoggedIn()) {
loginToMasterRealmAdminConsoleAs(adminUser);
testContext.setAdminLoggedIn(true);
} else {
// adminConsoleRealmPage.navigateTo();
}
}
// TODO: Fix the tests so this workaround is not necessary
@Override
protected boolean isImportAfterEachMethod() {
return true;
}
public void loginToMasterRealmAdminConsoleAs(UserRepresentation user) {
loginToAdminConsoleAs(adminConsolePage, loginPage, user);
}
public void logoutFromMasterRealmConsole() {
logoutFromAdminConsole(adminConsolePage);
}
public void loginToTestRealmConsoleAs(UserRepresentation user) {
loginToAdminConsoleAs(testRealmAdminConsolePage, testRealmLoginPage, user);
}
public void logoutFromTestRealmConsole() {
logoutFromAdminConsole(testRealmAdminConsolePage);
}
public void loginToAdminConsoleAs(AdminConsole adminConsole, Login login, UserRepresentation user) {
adminConsole.navigateTo();
assertCurrentUrlStartsWithLoginUrlOf(adminConsole);
login.form().login(user);
assertCurrentUrlStartsWith(adminConsole);
}
public void logoutFromAdminConsole(AdminConsole adminConsole) {
adminConsole.navigateTo();
assertCurrentUrlStartsWith(adminConsole);
adminConsole.logOut();
assertCurrentUrlStartsWithLoginUrlOf(adminConsole);
}
public void assertAlertSuccess() {
assertTrue("Alert is not success", alert.isSuccess());
alert.close();
}
public void assertAlertDanger() {
assertTrue("Alert is not danger", alert.isDanger());
alert.close();
}
public ConfigureMenu configure() {
return adminConsoleRealmPage.configure();
}
public ManageMenu manage() {
return adminConsoleRealmPage.manage();
}
}