KEYCLOAK-14547: Make New Account Console the default.
This commit is contained in:
parent
36fa3d555a
commit
0afd55f32c
153 changed files with 433 additions and 269 deletions
|
@ -44,7 +44,7 @@ public class Profile {
|
|||
DEPRECATED;
|
||||
}
|
||||
public enum Feature {
|
||||
ACCOUNT2(Type.PREVIEW),
|
||||
ACCOUNT2(Type.DEFAULT),
|
||||
ACCOUNT_API(Type.DEFAULT),
|
||||
ADMIN_FINE_GRAINED_AUTHZ(Type.PREVIEW),
|
||||
DOCKER(Type.DISABLED_BY_DEFAULT),
|
||||
|
|
|
@ -21,8 +21,8 @@ public class ProfileTest {
|
|||
@Test
|
||||
public void checkDefaultsKeycloak() {
|
||||
Assert.assertEquals("community", Profile.getName());
|
||||
assertEquals(Profile.getDisabledFeatures(), Profile.Feature.ACCOUNT2, Profile.Feature.ADMIN_FINE_GRAINED_AUTHZ, Profile.Feature.DOCKER, Profile.Feature.SCRIPTS, Profile.Feature.TOKEN_EXCHANGE, Profile.Feature.OPENSHIFT_INTEGRATION, Profile.Feature.UPLOAD_SCRIPTS, Profile.Feature.CLIENT_POLICIES);
|
||||
assertEquals(Profile.getPreviewFeatures(), Profile.Feature.ACCOUNT2, Profile.Feature.ADMIN_FINE_GRAINED_AUTHZ, Profile.Feature.SCRIPTS, Profile.Feature.TOKEN_EXCHANGE, Profile.Feature.OPENSHIFT_INTEGRATION, Profile.Feature.CLIENT_POLICIES);
|
||||
assertEquals(Profile.getDisabledFeatures(), Profile.Feature.ADMIN_FINE_GRAINED_AUTHZ, Profile.Feature.DOCKER, Profile.Feature.SCRIPTS, Profile.Feature.TOKEN_EXCHANGE, Profile.Feature.OPENSHIFT_INTEGRATION, Profile.Feature.UPLOAD_SCRIPTS, Profile.Feature.CLIENT_POLICIES);
|
||||
assertEquals(Profile.getPreviewFeatures(), Profile.Feature.ADMIN_FINE_GRAINED_AUTHZ, Profile.Feature.SCRIPTS, Profile.Feature.TOKEN_EXCHANGE, Profile.Feature.OPENSHIFT_INTEGRATION, Profile.Feature.CLIENT_POLICIES);
|
||||
assertEquals(Profile.getDeprecatedFeatures(), Profile.Feature.UPLOAD_SCRIPTS);
|
||||
|
||||
Assert.assertTrue(Profile.Feature.WEB_AUTHN.hasDifferentProductType());
|
||||
|
@ -37,8 +37,8 @@ public class ProfileTest {
|
|||
Profile.init();
|
||||
|
||||
Assert.assertEquals("product", Profile.getName());
|
||||
assertEquals(Profile.getDisabledFeatures(), Profile.Feature.ACCOUNT2, Profile.Feature.ADMIN_FINE_GRAINED_AUTHZ, Profile.Feature.DOCKER, Profile.Feature.SCRIPTS, Profile.Feature.TOKEN_EXCHANGE, Profile.Feature.OPENSHIFT_INTEGRATION, Profile.Feature.UPLOAD_SCRIPTS, Profile.Feature.WEB_AUTHN, Profile.Feature.CLIENT_POLICIES);
|
||||
assertEquals(Profile.getPreviewFeatures(), Profile.Feature.ACCOUNT2, Profile.Feature.ADMIN_FINE_GRAINED_AUTHZ, Profile.Feature.SCRIPTS, Profile.Feature.TOKEN_EXCHANGE, Profile.Feature.OPENSHIFT_INTEGRATION, Profile.Feature.WEB_AUTHN, Profile.Feature.CLIENT_POLICIES);
|
||||
assertEquals(Profile.getDisabledFeatures(), Profile.Feature.ADMIN_FINE_GRAINED_AUTHZ, Profile.Feature.DOCKER, Profile.Feature.SCRIPTS, Profile.Feature.TOKEN_EXCHANGE, Profile.Feature.OPENSHIFT_INTEGRATION, Profile.Feature.UPLOAD_SCRIPTS, Profile.Feature.WEB_AUTHN, Profile.Feature.CLIENT_POLICIES);
|
||||
assertEquals(Profile.getPreviewFeatures(), Profile.Feature.ADMIN_FINE_GRAINED_AUTHZ, Profile.Feature.SCRIPTS, Profile.Feature.TOKEN_EXCHANGE, Profile.Feature.OPENSHIFT_INTEGRATION, Profile.Feature.WEB_AUTHN, Profile.Feature.CLIENT_POLICIES);
|
||||
assertEquals(Profile.getDeprecatedFeatures(), Profile.Feature.UPLOAD_SCRIPTS);
|
||||
|
||||
Assert.assertTrue(Profile.Feature.WEB_AUTHN.hasDifferentProductType());
|
||||
|
|
|
@ -206,8 +206,6 @@ public class AccountRestService {
|
|||
return new ResourcesService(session, user, auth, request);
|
||||
}
|
||||
|
||||
// TODO Federated identities
|
||||
|
||||
private ClientRepresentation modelToRepresentation(ClientModel model, List<String> inUseClients, List<String> offlineClients, Map<String, UserConsentModel> consents) {
|
||||
ClientRepresentation representation = new ClientRepresentation();
|
||||
representation.setClientId(model.getClientId());
|
||||
|
@ -465,6 +463,6 @@ public class AccountRestService {
|
|||
private static void checkAccountApiEnabled() {
|
||||
if (!Profile.isFeatureEnabled(Profile.Feature.ACCOUNT_API)) {
|
||||
throw new NotFoundException();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -170,8 +170,8 @@ public class ServerInfoAdminResource {
|
|||
Collections.sort(themeNames);
|
||||
|
||||
if (!Profile.isFeatureEnabled(Profile.Feature.ACCOUNT2)) {
|
||||
themeNames.remove("keycloak-preview");
|
||||
themeNames.remove("rh-sso-preview");
|
||||
themeNames.remove("keycloak.v2");
|
||||
themeNames.remove("rh-sso.v2");
|
||||
}
|
||||
|
||||
List<ThemeInfoRepresentation> themes = new LinkedList<>();
|
||||
|
|
|
@ -37,6 +37,7 @@ import java.util.Locale;
|
|||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import org.keycloak.common.Profile;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
|
||||
|
@ -44,6 +45,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||
public class DefaultThemeManager implements ThemeManager {
|
||||
|
||||
private static final Logger log = Logger.getLogger(DefaultThemeManager.class);
|
||||
private static final boolean isAccount2Enabled = Profile.isFeatureEnabled(Profile.Feature.ACCOUNT2);
|
||||
|
||||
private final DefaultThemeManagerFactory factory;
|
||||
private final KeycloakSession session;
|
||||
|
@ -62,6 +64,14 @@ public class DefaultThemeManager implements ThemeManager {
|
|||
return getTheme(name, type);
|
||||
}
|
||||
|
||||
private String typeBasedDefault(Theme.Type type) {
|
||||
if ((type == Theme.Type.ACCOUNT) && isAccount2Enabled) {
|
||||
return "keycloak.v2";
|
||||
}
|
||||
|
||||
return "keycloak";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Theme getTheme(String name, Theme.Type type) {
|
||||
if (name == null) {
|
||||
|
@ -72,7 +82,7 @@ public class DefaultThemeManager implements ThemeManager {
|
|||
if (theme == null) {
|
||||
theme = loadTheme(name, type);
|
||||
if (theme == null) {
|
||||
theme = loadTheme("keycloak", type);
|
||||
theme = loadTheme(typeBasedDefault(type), type);
|
||||
if (theme == null) {
|
||||
theme = loadTheme("base", type);
|
||||
}
|
||||
|
@ -81,6 +91,15 @@ public class DefaultThemeManager implements ThemeManager {
|
|||
theme = factory.addCachedTheme(name, type, theme);
|
||||
}
|
||||
}
|
||||
|
||||
if (!isAccount2Enabled && theme.getName().equals("keycloak.v2")) {
|
||||
theme = loadTheme("keycloak", type);
|
||||
}
|
||||
|
||||
if (!isAccount2Enabled && theme.getName().equals("rhsso.v2")) {
|
||||
theme = loadTheme("rhsso", type);
|
||||
}
|
||||
|
||||
return theme;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package org.keycloak.theme;
|
||||
|
||||
import org.keycloak.Config;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.Version;
|
||||
import org.keycloak.models.ClientModel;
|
||||
import org.keycloak.models.KeycloakSession;
|
||||
|
@ -8,6 +9,7 @@ import org.keycloak.models.KeycloakSession;
|
|||
public class DefaultThemeSelectorProvider implements ThemeSelectorProvider {
|
||||
|
||||
public static final String LOGIN_THEME_KEY = "login_theme";
|
||||
private static final boolean isAccount2Enabled = Profile.isFeatureEnabled(Profile.Feature.ACCOUNT2);
|
||||
|
||||
private final KeycloakSession session;
|
||||
|
||||
|
@ -47,6 +49,9 @@ public class DefaultThemeSelectorProvider implements ThemeSelectorProvider {
|
|||
|
||||
if (name == null || name.isEmpty()) {
|
||||
name = Config.scope("theme").get("default", Version.NAME.toLowerCase());
|
||||
if ((type == Theme.Type.ACCOUNT) && isAccount2Enabled) {
|
||||
name = name.concat(".v2");
|
||||
}
|
||||
}
|
||||
|
||||
return name;
|
||||
|
|
|
@ -138,6 +138,10 @@ unzip prepared server:
|
|||
|
||||
unzip -q testsuite/integration-arquillian/servers/auth-server/jboss/wildfly/target/integration-arquillian-servers-auth-server-wildfly-*.zip
|
||||
|
||||
create admin user:
|
||||
|
||||
sh auth-server-wildfly/bin/add-user-keycloak.sh -r master -u admin -p admin
|
||||
|
||||
start the server:
|
||||
|
||||
sh auth-server-wildfly/bin/standalone.sh \
|
||||
|
@ -163,6 +167,10 @@ unzip prepared servers:
|
|||
unzip -q keycloak/testsuite/integration-arquillian/servers/auth-server/jboss/wildfly/target/integration-arquillian-servers-auth-server-wildfly-*.zip
|
||||
unzip -q keycloak/testsuite/integration-arquillian/servers/app-server/jboss/wildfly/target/integration-arquillian-servers-app-server-wildfly-*.zip
|
||||
|
||||
create admin user:
|
||||
|
||||
sh auth-server-wildfly/bin/add-user-keycloak.sh -r master -u admin -p admin
|
||||
|
||||
start both servers:
|
||||
|
||||
sh auth-server-wildfly/bin/standalone.sh \
|
||||
|
|
|
@ -3,7 +3,6 @@ package org.keycloak.testsuite.arquillian.annotation;
|
|||
import org.keycloak.common.Profile;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Inherited;
|
||||
import java.lang.annotation.Repeatable;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.Target;
|
||||
|
@ -16,7 +15,6 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
|||
@Retention(RUNTIME)
|
||||
@Target({ElementType.TYPE, ElementType.METHOD})
|
||||
@Repeatable(DisableFeatures.class)
|
||||
@Inherited
|
||||
public @interface DisableFeature {
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package org.keycloak.testsuite.arquillian.annotation;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Inherited;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
|
@ -11,7 +10,6 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
|||
* @author mhajas
|
||||
*/
|
||||
@Retention(RUNTIME)
|
||||
@Inherited
|
||||
@Target({ElementType.TYPE, ElementType.METHOD})
|
||||
public @interface DisableFeatures {
|
||||
DisableFeature[] value() default {};
|
||||
|
|
|
@ -3,7 +3,6 @@ package org.keycloak.testsuite.arquillian.annotation;
|
|||
import org.keycloak.common.Profile;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Inherited;
|
||||
import java.lang.annotation.Repeatable;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.Target;
|
||||
|
@ -16,7 +15,6 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
|||
@Retention(RUNTIME)
|
||||
@Target({ElementType.TYPE, ElementType.METHOD})
|
||||
@Repeatable(EnableFeatures.class)
|
||||
@Inherited
|
||||
public @interface EnableFeature {
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
package org.keycloak.testsuite.arquillian.annotation;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Inherited;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
|
@ -12,7 +10,6 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
|||
* @author mhajas
|
||||
*/
|
||||
@Retention(RUNTIME)
|
||||
@Inherited
|
||||
@Target({ElementType.TYPE, ElementType.METHOD})
|
||||
public @interface EnableFeatures {
|
||||
EnableFeature[] value() default {};
|
||||
|
|
|
@ -23,9 +23,10 @@ import org.wildfly.extras.creaper.core.online.OnlineManagementClient;
|
|||
import org.wildfly.extras.creaper.core.online.operations.admin.Administration;
|
||||
|
||||
import java.lang.reflect.AnnotatedElement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.HashSet;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
@ -81,23 +82,6 @@ public class KeycloakContainerFeaturesController {
|
|||
this.onlyForProduct = onlyForProduct;
|
||||
}
|
||||
|
||||
/**
|
||||
* All features we want to enable/disable must be disabled/enabled
|
||||
* otherwise at the end of a test the environment will be in an inconsistent state because we would disable/enable
|
||||
* some feature which was enabled/disabled before test
|
||||
*
|
||||
*/
|
||||
private void assertValid() {
|
||||
// feature may be disabled after test method run, if trying to disable a disabled feature, ignore
|
||||
if (FeatureAction.DISABLE.equals(action) && !ProfileAssume.isFeatureEnabled(feature)) {
|
||||
return;
|
||||
}
|
||||
assertThat("An annotation requested to " + action.name()
|
||||
+ " feature " + feature.name() + " however it was already in that state" ,
|
||||
ProfileAssume.isFeatureEnabled(feature),
|
||||
is(!(action == FeatureAction.ENABLE)));
|
||||
}
|
||||
|
||||
private void assertPerformed() {
|
||||
assertThat("An annotation requested to " + action.name() +
|
||||
" feature " + feature.name() + ", however after performing this operation " +
|
||||
|
@ -107,8 +91,39 @@ public class KeycloakContainerFeaturesController {
|
|||
}
|
||||
|
||||
public void performAction() {
|
||||
assertValid();
|
||||
action.accept(testContextInstance.get().getTestingClient(), feature);
|
||||
if ((action == FeatureAction.ENABLE && !ProfileAssume.isFeatureEnabled(feature))
|
||||
|| (action == FeatureAction.DISABLE && ProfileAssume.isFeatureEnabled(feature))) {
|
||||
action.accept(testContextInstance.get().getTestingClient(), feature);
|
||||
}
|
||||
}
|
||||
|
||||
public Profile.Feature getFeature() {
|
||||
return feature;
|
||||
}
|
||||
|
||||
public boolean isSkipRestart() {
|
||||
return skipRestart;
|
||||
}
|
||||
|
||||
public FeatureAction getAction() {
|
||||
return action;
|
||||
}
|
||||
|
||||
public boolean isOnlyForProduct() {
|
||||
return onlyForProduct;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
UpdateFeature that = (UpdateFeature) o;
|
||||
return feature == that.feature;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(feature);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -125,10 +140,10 @@ public class KeycloakContainerFeaturesController {
|
|||
}
|
||||
}
|
||||
|
||||
private void updateFeatures(List<UpdateFeature> updateFeatures) throws Exception {
|
||||
private void updateFeatures(Set<UpdateFeature> updateFeatures) throws Exception {
|
||||
updateFeatures = updateFeatures.stream()
|
||||
.filter(this::skipForProduct)
|
||||
.collect(Collectors.toList());
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
updateFeatures.forEach(UpdateFeature::performAction);
|
||||
|
||||
|
@ -146,25 +161,40 @@ public class KeycloakContainerFeaturesController {
|
|||
}
|
||||
|
||||
private void checkAnnotatedElementForFeatureAnnotations(AnnotatedElement annotatedElement, State state) throws Exception {
|
||||
List<UpdateFeature> updateFeatureList = new ArrayList<>(0);
|
||||
Set<UpdateFeature> updateFeatureSet = new HashSet<>();
|
||||
|
||||
if (isEnableFeature(annotatedElement)) {
|
||||
updateFeatureList.addAll(Arrays.stream(annotatedElement.getAnnotationsByType(EnableFeature.class))
|
||||
.map(annotation -> new UpdateFeature(annotation.value(), annotation.skipRestart(),
|
||||
state == State.BEFORE ? FeatureAction.ENABLE : FeatureAction.DISABLE, annotation.onlyForProduct()))
|
||||
.collect(Collectors.toList()));
|
||||
updateFeatureSet.addAll(getUpdateFeaturesSet(annotatedElement, state));
|
||||
|
||||
// we can't rely on @Inherited annotations as it stops "searching" when it finds the first occurrence of given
|
||||
// annotation, i.e. annotation from the most specific test class
|
||||
if (annotatedElement instanceof Class) {
|
||||
Class<?> clazz = ((Class<?>) annotatedElement).getSuperclass();
|
||||
while (clazz != null) {
|
||||
// duplicates (i.e. annotations from less specific test classes) won't be added
|
||||
updateFeatureSet.addAll(getUpdateFeaturesSet(clazz, state));
|
||||
clazz = clazz.getSuperclass();
|
||||
}
|
||||
}
|
||||
|
||||
if (isDisableFeature(annotatedElement)) {
|
||||
updateFeatureList.addAll(Arrays.stream(annotatedElement.getAnnotationsByType(DisableFeature.class))
|
||||
.map(annotation -> new UpdateFeature(annotation.value(), annotation.skipRestart(),
|
||||
state == State.BEFORE ? FeatureAction.DISABLE : FeatureAction.ENABLE, annotation.onlyForProduct()))
|
||||
.collect(Collectors.toList()));
|
||||
if (!updateFeatureSet.isEmpty()) {
|
||||
updateFeatures(updateFeatureSet);
|
||||
}
|
||||
}
|
||||
|
||||
if (!updateFeatureList.isEmpty()) {
|
||||
updateFeatures(updateFeatureList);
|
||||
}
|
||||
private Set<UpdateFeature> getUpdateFeaturesSet(AnnotatedElement annotatedElement, State state) {
|
||||
Set<UpdateFeature> ret = new HashSet<>();
|
||||
|
||||
ret.addAll(Arrays.stream(annotatedElement.getAnnotationsByType(EnableFeature.class))
|
||||
.map(annotation -> new UpdateFeature(annotation.value(), annotation.skipRestart(),
|
||||
state == State.BEFORE ? FeatureAction.ENABLE : FeatureAction.DISABLE, annotation.onlyForProduct()))
|
||||
.collect(Collectors.toSet()));
|
||||
|
||||
ret.addAll(Arrays.stream(annotatedElement.getAnnotationsByType(DisableFeature.class))
|
||||
.map(annotation -> new UpdateFeature(annotation.value(), annotation.skipRestart(),
|
||||
state == State.BEFORE ? FeatureAction.DISABLE : FeatureAction.ENABLE, annotation.onlyForProduct()))
|
||||
.collect(Collectors.toSet()));
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
private boolean isEnableFeature(AnnotatedElement annotatedElement) {
|
||||
|
|
|
@ -115,10 +115,18 @@ public class OAuthClient {
|
|||
public static void updateURLs(String serverRoot) {
|
||||
SERVER_ROOT = removeDefaultPorts(serverRoot);
|
||||
AUTH_SERVER_ROOT = SERVER_ROOT + "/auth";
|
||||
APP_ROOT = AUTH_SERVER_ROOT + "/realms/master/app";
|
||||
updateAppRootRealm("master");
|
||||
}
|
||||
|
||||
public static void updateAppRootRealm(String realm) {
|
||||
APP_ROOT = AUTH_SERVER_ROOT + "/realms/" + realm + "/app";
|
||||
APP_AUTH_ROOT = APP_ROOT + "/auth";
|
||||
}
|
||||
|
||||
public static void resetAppRootRealm() {
|
||||
updateAppRootRealm("master");
|
||||
}
|
||||
|
||||
private WebDriver driver;
|
||||
|
||||
private String baseUrl = AUTH_SERVER_ROOT;
|
||||
|
|
|
@ -109,7 +109,7 @@ public abstract class AbstractAuthTest extends AbstractKeycloakTest {
|
|||
}
|
||||
|
||||
protected void deleteAllCookiesForTestRealm() {
|
||||
deleteAllCookiesForRealm(testRealmAccountPage);
|
||||
deleteAllCookiesForRealm(testRealmAccountPage.getAuthRealm());
|
||||
}
|
||||
|
||||
protected void deleteAllSessionsInTestRealm() {
|
||||
|
|
|
@ -32,6 +32,7 @@ import org.keycloak.admin.client.resource.AuthenticationManagementResource;
|
|||
import org.keycloak.admin.client.resource.RealmsResource;
|
||||
import org.keycloak.admin.client.resource.UserResource;
|
||||
import org.keycloak.admin.client.resource.UsersResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.util.KeycloakUriBuilder;
|
||||
import org.keycloak.common.util.Time;
|
||||
import org.keycloak.representations.idm.ClientRepresentation;
|
||||
|
@ -44,6 +45,7 @@ import org.keycloak.testsuite.arquillian.AuthServerTestEnricher;
|
|||
import org.keycloak.testsuite.arquillian.KcArquillian;
|
||||
import org.keycloak.testsuite.arquillian.SuiteContext;
|
||||
import org.keycloak.testsuite.arquillian.TestContext;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.auth.page.AuthRealm;
|
||||
import org.keycloak.testsuite.auth.page.AuthServer;
|
||||
import org.keycloak.testsuite.auth.page.AuthServerContextRoot;
|
||||
|
@ -252,19 +254,13 @@ public abstract class AbstractKeycloakTest {
|
|||
}
|
||||
|
||||
public void deleteAllCookiesForMasterRealm() {
|
||||
deleteAllCookiesForRealm(accountPage);
|
||||
}
|
||||
|
||||
protected void deleteAllCookiesForRealm(Account realmAccountPage) {
|
||||
// masterRealmPage.navigateTo();
|
||||
realmAccountPage.navigateTo(); // Because IE webdriver freezes when loading a JSON page (realm page), we need to use this alternative
|
||||
log.info("deleting cookies in '" + realmAccountPage.getAuthRealm() + "' realm");
|
||||
driver.manage().deleteAllCookies();
|
||||
deleteAllCookiesForRealm(MASTER);
|
||||
}
|
||||
|
||||
protected void deleteAllCookiesForRealm(String realmName) {
|
||||
// masterRealmPage.navigateTo();
|
||||
navigateToUri(accountPage.getAuthRoot() + "/realms/" + realmName + "/account"); // Because IE webdriver freezes when loading a JSON page (realm page), we need to use this alternative
|
||||
// we can't use /auth/realms/{realmName} because some browsers (e.g. Chrome) apparently don't send cookies
|
||||
// to JSON pages and therefore can't delete realms cookies there; a non existing page will do just fine
|
||||
navigateToUri(accountPage.getAuthRoot() + "/realms/" + realmName + "/super-random-page");
|
||||
log.info("deleting cookies in '" + realmName + "' realm");
|
||||
driver.manage().deleteAllCookies();
|
||||
}
|
||||
|
|
|
@ -38,7 +38,6 @@ import org.keycloak.representations.idm.RealmRepresentation;
|
|||
import org.keycloak.testsuite.AbstractTestRealmKeycloakTest;
|
||||
import org.keycloak.testsuite.AssertEvents;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.arquillian.annotation.EnableFeature;
|
||||
import org.keycloak.testsuite.util.ClientBuilder;
|
||||
import org.keycloak.testsuite.util.TokenUtil;
|
||||
import org.keycloak.testsuite.util.UserBuilder;
|
||||
|
|
|
@ -24,6 +24,7 @@ import org.junit.Rule;
|
|||
import org.junit.Test;
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.admin.client.resource.UserResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.credential.CredentialModel;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.events.Errors;
|
||||
|
@ -46,6 +47,7 @@ import org.keycloak.testsuite.AssertEvents;
|
|||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.AuthServerTestEnricher;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.drone.Different;
|
||||
import org.keycloak.testsuite.pages.AccountApplicationsPage;
|
||||
import org.keycloak.testsuite.pages.AccountFederatedIdentityPage;
|
||||
|
@ -100,6 +102,7 @@ import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude.A
|
|||
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
|
||||
* @author Stan Silvert ssilvert@redhat.com (C) 2016 Red Hat Inc.
|
||||
*/
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true)
|
||||
public class AccountFormServiceTest extends AbstractTestRealmKeycloakTest {
|
||||
|
||||
public static final String ROOT_URL_CLIENT = "root-url-client";
|
||||
|
|
|
@ -78,7 +78,6 @@ import static org.junit.Assert.assertNotNull;
|
|||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.keycloak.common.Profile.Feature.ACCOUNT_API;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
|
||||
|
|
|
@ -19,8 +19,10 @@ package org.keycloak.testsuite.account.custom;
|
|||
|
||||
import org.junit.Before;
|
||||
import org.keycloak.admin.client.resource.AuthenticationManagementResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.models.AuthenticationExecutionModel;
|
||||
import org.keycloak.representations.idm.AuthenticationExecutionInfoRepresentation;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
@ -30,6 +32,7 @@ import java.util.function.Function;
|
|||
*
|
||||
* @author <a href="mailto:vramik@redhat.com">Vlastislav Ramik</a>
|
||||
*/
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public abstract class AbstractCustomAccountManagementTest extends AbstractAccountManagementTest {
|
||||
|
||||
private AuthenticationManagementResource authMgmtResource;
|
||||
|
|
|
@ -24,6 +24,7 @@ import org.junit.Assert;
|
|||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.events.EventType;
|
||||
import org.keycloak.models.AuthenticationExecutionModel;
|
||||
|
@ -36,6 +37,7 @@ import org.keycloak.representations.idm.RealmRepresentation;
|
|||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.testsuite.AssertEvents;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.pages.AccountTotpPage;
|
||||
import org.keycloak.testsuite.pages.LoginConfigTotpPage;
|
||||
import org.keycloak.testsuite.pages.LoginTotpPage;
|
||||
|
@ -367,6 +369,7 @@ public class AppInitiatedActionTotpSetupTest extends AbstractAppInitiatedActionT
|
|||
}
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void setupTotpRegisteredAfterTotpRemoval() {
|
||||
// Register new user
|
||||
loginPage.open();
|
||||
|
|
|
@ -23,6 +23,7 @@ import org.junit.Assert;
|
|||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.util.KeycloakUriBuilder;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.events.Errors;
|
||||
|
@ -38,6 +39,7 @@ import org.keycloak.testsuite.AssertEvents;
|
|||
import org.keycloak.testsuite.AbstractTestRealmKeycloakTest;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.AuthServerTestEnricher;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.cluster.AuthenticationSessionFailoverClusterTest;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
import org.keycloak.testsuite.pages.AppPage.RequestType;
|
||||
|
@ -79,6 +81,7 @@ import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude.A
|
|||
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
|
||||
*/
|
||||
@AuthServerContainerExclude(AuthServer.REMOTE)
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class RequiredActionEmailVerificationTest extends AbstractTestRealmKeycloakTest {
|
||||
|
||||
@Rule
|
||||
|
|
|
@ -23,6 +23,7 @@ import org.junit.Rule;
|
|||
import org.junit.Test;
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.admin.client.resource.UserResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.events.EventType;
|
||||
import org.keycloak.models.AuthenticationExecutionModel;
|
||||
|
@ -37,6 +38,7 @@ import org.keycloak.representations.idm.UserRepresentation;
|
|||
import org.keycloak.testsuite.AssertEvents;
|
||||
import org.keycloak.testsuite.AbstractTestRealmKeycloakTest;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.pages.AccountTotpPage;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
import org.keycloak.testsuite.pages.AppPage.RequestType;
|
||||
|
@ -59,6 +61,7 @@ import static org.junit.Assert.assertTrue;
|
|||
/**
|
||||
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
|
||||
*/
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class RequiredActionTotpSetupTest extends AbstractTestRealmKeycloakTest {
|
||||
|
||||
@Override
|
||||
|
|
|
@ -17,10 +17,13 @@
|
|||
package org.keycloak.testsuite.adapter.example.authorization;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:psilva@redhat.com">Pedro Igor</a>
|
||||
*/
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public abstract class AbstractPhotozAccountResourcesAdapterTest extends AbstractBasePhotozExampleAdapterTest {
|
||||
|
||||
@Test
|
||||
|
|
|
@ -34,6 +34,7 @@ import org.keycloak.testsuite.adapter.AbstractExampleAdapterTest;
|
|||
import org.keycloak.testsuite.adapter.page.AngularCorsProductTestApp;
|
||||
import org.keycloak.testsuite.adapter.page.CorsDatabaseServiceTestApp;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.arquillian.annotation.EnableFeature;
|
||||
import org.keycloak.testsuite.utils.arquillian.ContainerConstants;
|
||||
import org.keycloak.testsuite.auth.page.account.Account;
|
||||
|
@ -75,6 +76,7 @@ import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
|||
@AppServerContainer(ContainerConstants.APP_SERVER_EAP6)
|
||||
@AppServerContainer(ContainerConstants.APP_SERVER_EAP71)
|
||||
@EnableFeature(value = UPLOAD_SCRIPTS, skipRestart = true)
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class CorsExampleAdapterTest extends AbstractExampleAdapterTest {
|
||||
|
||||
public static final String CORS = "cors";
|
||||
|
|
|
@ -48,6 +48,7 @@ import org.junit.Assert;
|
|||
import org.junit.Assume;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.testsuite.adapter.AbstractExampleAdapterTest;
|
||||
import org.keycloak.testsuite.adapter.page.Hawtio2Page;
|
||||
|
@ -57,6 +58,7 @@ import org.keycloak.testsuite.adapter.page.fuse.CustomerListing;
|
|||
import org.keycloak.testsuite.adapter.page.fuse.CustomerPortalFuseExample;
|
||||
import org.keycloak.testsuite.adapter.page.fuse.ProductPortalFuseExample;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.auth.page.AuthRealm;
|
||||
import org.keycloak.testsuite.auth.page.account.Account;
|
||||
import org.keycloak.testsuite.utils.arquillian.ContainerConstants;
|
||||
|
@ -70,6 +72,7 @@ import org.openqa.selenium.WebDriver;
|
|||
|
||||
@AppServerContainer(ContainerConstants.APP_SERVER_FUSE63)
|
||||
@AppServerContainer(ContainerConstants.APP_SERVER_FUSE7X)
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class FuseAdapterTest extends AbstractExampleAdapterTest {
|
||||
|
||||
@Drone
|
||||
|
|
|
@ -26,6 +26,7 @@ import org.junit.Before;
|
|||
import org.junit.Test;
|
||||
import org.keycloak.admin.client.resource.ClientResource;
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.util.Base64Url;
|
||||
import org.keycloak.models.Constants;
|
||||
import org.keycloak.protocol.oidc.OIDCLoginProtocol;
|
||||
|
@ -42,6 +43,7 @@ import org.keycloak.testsuite.ActionURIUtils;
|
|||
import org.keycloak.testsuite.adapter.AbstractServletsAdapterTest;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.utils.arquillian.ContainerConstants;
|
||||
import org.keycloak.testsuite.broker.BrokerTestTools;
|
||||
import org.keycloak.testsuite.page.AbstractPageWithInjectedUrl;
|
||||
|
@ -537,6 +539,7 @@ public class ClientInitiatedAccountLinkTest extends AbstractServletsAdapterTest
|
|||
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void testAccountNotLinkedAutomatically() throws Exception {
|
||||
RealmResource realm = adminClient.realms().realm(CHILD_IDP);
|
||||
List<FederatedIdentityRepresentation> links = realm.users().get(childUserId).getFederatedIdentity();
|
||||
|
@ -582,6 +585,7 @@ public class ClientInitiatedAccountLinkTest extends AbstractServletsAdapterTest
|
|||
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void testAccountLinkingExpired() throws Exception {
|
||||
RealmResource realm = adminClient.realms().realm(CHILD_IDP);
|
||||
List<FederatedIdentityRepresentation> links = realm.users().get(childUserId).getFederatedIdentity();
|
||||
|
|
|
@ -38,6 +38,7 @@ import org.keycloak.OAuth2Constants;
|
|||
import org.keycloak.adapters.OIDCAuthenticationError;
|
||||
import org.keycloak.admin.client.resource.ClientResource;
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.util.Time;
|
||||
import org.keycloak.constants.AdapterConstants;
|
||||
import org.keycloak.events.Details;
|
||||
|
@ -75,6 +76,7 @@ import org.keycloak.testsuite.adapter.page.TokenMinTTLPage;
|
|||
import org.keycloak.testsuite.adapter.page.TokenRefreshPage;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.util.ServerURLs;
|
||||
import org.keycloak.testsuite.utils.arquillian.ContainerConstants;
|
||||
import org.keycloak.testsuite.auth.page.account.Applications;
|
||||
|
@ -148,6 +150,7 @@ import static org.keycloak.testsuite.util.WaitUtils.waitForPageToLoad;
|
|||
@AppServerContainer(ContainerConstants.APP_SERVER_TOMCAT7)
|
||||
@AppServerContainer(ContainerConstants.APP_SERVER_TOMCAT8)
|
||||
@AppServerContainer(ContainerConstants.APP_SERVER_TOMCAT9)
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class DemoServletsAdapterTest extends AbstractServletsAdapterTest {
|
||||
|
||||
// Javascript browser needed KEYCLOAK-4703
|
||||
|
|
|
@ -9,6 +9,7 @@ import org.junit.Assert;
|
|||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.OAuth2Constants;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.events.EventType;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
|
@ -17,6 +18,7 @@ import org.keycloak.testsuite.adapter.AbstractServletsAdapterTest;
|
|||
import org.keycloak.testsuite.adapter.filter.AdapterActionsFilter;
|
||||
import org.keycloak.testsuite.adapter.page.OfflineToken;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.utils.arquillian.ContainerConstants;
|
||||
import org.keycloak.testsuite.pages.AccountApplicationsPage;
|
||||
import org.keycloak.testsuite.pages.LoginPage;
|
||||
|
@ -42,6 +44,7 @@ import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
|||
@AppServerContainer(ContainerConstants.APP_SERVER_EAP)
|
||||
@AppServerContainer(ContainerConstants.APP_SERVER_EAP6)
|
||||
@AppServerContainer(ContainerConstants.APP_SERVER_EAP71)
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class OfflineServletsAdapterTest extends AbstractServletsAdapterTest {
|
||||
|
||||
@Rule
|
||||
|
|
|
@ -25,12 +25,14 @@ import org.junit.After;
|
|||
import org.junit.Test;
|
||||
import org.keycloak.OAuth2Constants;
|
||||
import org.keycloak.admin.client.resource.ClientResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.protocol.oidc.OIDCLoginProtocolService;
|
||||
import org.keycloak.representations.idm.ClientRepresentation;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.testsuite.adapter.AbstractServletsAdapterTest;
|
||||
import org.keycloak.testsuite.adapter.page.SessionPortal;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.auth.page.account.Sessions;
|
||||
import org.keycloak.testsuite.auth.page.login.Login;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
|
||||
|
@ -187,6 +189,7 @@ public class SessionServletAdapterTest extends AbstractServletsAdapterTest {
|
|||
|
||||
//KEYCLOAK-1216
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void testAccountManagementSessionsLogout() {
|
||||
// login as bburke
|
||||
loginAndCheckSession(testRealmLoginPage);
|
||||
|
|
|
@ -7,14 +7,17 @@ import org.junit.Assert;
|
|||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.broker.provider.util.SimpleHttp;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.testsuite.AbstractKeycloakTest;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class AdminConsoleLandingPageTest extends AbstractKeycloakTest {
|
||||
|
||||
private CloseableHttpClient client;
|
||||
|
|
|
@ -28,6 +28,7 @@ import org.keycloak.admin.client.resource.ClientResource;
|
|||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.admin.client.resource.UserResource;
|
||||
import org.keycloak.admin.client.resource.UsersResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.events.Errors;
|
||||
import org.keycloak.representations.idm.ClientRepresentation;
|
||||
|
@ -39,6 +40,7 @@ import org.keycloak.representations.idm.UserSessionRepresentation;
|
|||
import org.keycloak.testsuite.AbstractKeycloakTest;
|
||||
import org.keycloak.testsuite.Assert;
|
||||
import org.keycloak.testsuite.AssertEvents;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
import org.keycloak.testsuite.pages.ConsentPage;
|
||||
import org.keycloak.testsuite.pages.ErrorPage;
|
||||
|
@ -62,6 +64,7 @@ import org.keycloak.testsuite.util.OAuthClient.AuthorizationEndpointResponse;
|
|||
/**
|
||||
* @author <a href="mailto:mstrukel@redhat.com">Marko Strukelj</a>
|
||||
*/
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class ConsentsTest extends AbstractKeycloakTest {
|
||||
|
||||
final static String REALM_PROV_NAME = "provider";
|
||||
|
|
|
@ -32,6 +32,7 @@ import org.keycloak.admin.client.resource.RealmResource;
|
|||
import org.keycloak.admin.client.resource.RoleMappingResource;
|
||||
import org.keycloak.admin.client.resource.UserResource;
|
||||
import org.keycloak.admin.client.resource.UsersResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.VerificationException;
|
||||
import org.keycloak.common.util.Base64;
|
||||
import org.keycloak.common.util.ObjectUtil;
|
||||
|
@ -59,6 +60,7 @@ import org.keycloak.representations.idm.RoleRepresentation;
|
|||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.services.resources.RealmsResource;
|
||||
import org.keycloak.storage.UserStorageProvider;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.federation.DummyUserFederationProviderFactory;
|
||||
import org.keycloak.testsuite.page.LoginPasswordUpdatePage;
|
||||
import org.keycloak.testsuite.pages.ErrorPage;
|
||||
|
@ -354,6 +356,7 @@ public class UserTest extends AbstractAdminTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void updateUserWithHashedCredentials() {
|
||||
String userId = createUser("user_hashed_creds", "user_hashed_creds@localhost");
|
||||
|
||||
|
@ -1895,6 +1898,7 @@ public class UserTest extends AbstractAdminTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void resetUserPassword() {
|
||||
String userId = createUser("user1", "user1@localhost");
|
||||
|
||||
|
@ -2159,6 +2163,7 @@ public class UserTest extends AbstractAdminTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void loginShouldFailAfterPasswordDeleted() {
|
||||
String userName = "credential-tester";
|
||||
String userPass = "s3cr37";
|
||||
|
|
|
@ -21,6 +21,7 @@ import org.jboss.arquillian.graphene.page.Page;
|
|||
import org.junit.Assert;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.events.EventType;
|
||||
import org.keycloak.events.admin.OperationType;
|
||||
|
@ -32,6 +33,7 @@ import org.keycloak.representations.idm.RealmRepresentation;
|
|||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.testsuite.AssertEvents;
|
||||
import org.keycloak.testsuite.AbstractTestRealmKeycloakTest;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.pages.AccountTotpPage;
|
||||
import org.keycloak.testsuite.pages.AccountUpdateProfilePage;
|
||||
import org.keycloak.testsuite.pages.LoginPage;
|
||||
|
@ -42,6 +44,7 @@ import java.util.List;
|
|||
/**
|
||||
* @author <a href="mailto:mstrukel@redhat.com">Marko Strukelj</a>
|
||||
*/
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class UserTotpTest extends AbstractTestRealmKeycloakTest {
|
||||
|
||||
@Rule
|
||||
|
|
|
@ -21,10 +21,12 @@ import org.jboss.arquillian.graphene.page.Page;
|
|||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.admin.client.resource.ClientResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.events.admin.OperationType;
|
||||
import org.keycloak.events.admin.ResourceType;
|
||||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.representations.idm.UserSessionRepresentation;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.auth.page.account.AccountManagement;
|
||||
import org.keycloak.testsuite.util.AdminEventPaths;
|
||||
|
||||
|
@ -37,6 +39,7 @@ import static org.junit.Assert.assertNotNull;
|
|||
*
|
||||
* @author Stan Silvert ssilvert@redhat.com (C) 2016 Red Hat Inc.
|
||||
*/
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class SessionTest extends AbstractClientTest {
|
||||
|
||||
|
||||
|
|
|
@ -22,9 +22,11 @@ import org.junit.Before;
|
|||
import org.junit.Test;
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.admin.client.resource.UsersResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.events.EventBuilder;
|
||||
import org.keycloak.events.EventType;
|
||||
import org.keycloak.representations.idm.EventRepresentation;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.console.page.events.LoginEvents;
|
||||
import org.keycloak.testsuite.util.UserBuilder;
|
||||
|
||||
|
@ -43,6 +45,7 @@ import static org.junit.Assert.fail;
|
|||
*
|
||||
* @author Stan Silvert ssilvert@redhat.com (C) 2016 Red Hat Inc.
|
||||
*/
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class LoginEventsTest extends AbstractEventTest {
|
||||
|
||||
@Page
|
||||
|
|
|
@ -23,6 +23,7 @@ import org.jboss.arquillian.graphene.page.Page;
|
|||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.util.Retry;
|
||||
import org.keycloak.models.utils.TimeBasedOTP;
|
||||
import org.keycloak.protocol.saml.SamlProtocol;
|
||||
|
@ -34,6 +35,7 @@ import org.keycloak.testsuite.AbstractKeycloakTest;
|
|||
import org.keycloak.testsuite.Assert;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude.AuthServer;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.pages.AccountApplicationsPage;
|
||||
import org.keycloak.testsuite.pages.AccountFederatedIdentityPage;
|
||||
import org.keycloak.testsuite.pages.AccountPasswordPage;
|
||||
|
@ -76,6 +78,7 @@ import static org.keycloak.testsuite.util.WaitUtils.waitForPageToLoad;
|
|||
* No test methods there. Just some useful common functionality
|
||||
*/
|
||||
@AuthServerContainerExclude(AuthServer.REMOTE)
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public abstract class AbstractBaseBrokerTest extends AbstractKeycloakTest {
|
||||
|
||||
protected static final String ATTRIBUTE_VALUE = "attribute.value";
|
||||
|
|
|
@ -21,6 +21,7 @@ import org.junit.Before;
|
|||
import org.junit.Test;
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.admin.client.resource.UsersResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.util.MultivaluedHashMap;
|
||||
import org.keycloak.models.FederatedIdentityModel;
|
||||
import org.keycloak.models.KeycloakSession;
|
||||
|
@ -32,6 +33,7 @@ import org.keycloak.representations.idm.RealmRepresentation;
|
|||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.storage.UserStorageProvider;
|
||||
import org.keycloak.testsuite.AbstractKeycloakTest;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.federation.PassThroughFederatedUserStorageProvider;
|
||||
import org.keycloak.testsuite.federation.PassThroughFederatedUserStorageProviderFactory;
|
||||
import org.keycloak.testsuite.pages.AccountFederatedIdentityPage;
|
||||
|
@ -53,6 +55,7 @@ import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude.A
|
|||
* @version $Revision: 1 $
|
||||
*/
|
||||
@AuthServerContainerExclude(AuthServer.REMOTE)
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class AccountLinkTest extends AbstractKeycloakTest {
|
||||
public static final String CHILD_IDP = "child";
|
||||
public static final String PARENT_IDP = "parent-idp";
|
||||
|
|
|
@ -30,6 +30,7 @@ import org.keycloak.services.resources.admin.permissions.AdminPermissionManageme
|
|||
import org.keycloak.services.resources.admin.permissions.AdminPermissions;
|
||||
import org.keycloak.testsuite.AbstractKeycloakTest;
|
||||
import org.keycloak.testsuite.ProfileAssume;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.arquillian.annotation.UncaughtServerErrorExpected;
|
||||
import org.keycloak.testsuite.auth.page.login.UpdateAccount;
|
||||
import org.keycloak.testsuite.pages.LoginPage;
|
||||
|
@ -98,6 +99,7 @@ import com.google.common.collect.ImmutableMap;
|
|||
* @author Vaclav Muzikar <vmuzikar@redhat.com>
|
||||
*/
|
||||
@AuthServerContainerExclude(AuthServer.REMOTE)
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class SocialLoginTest extends AbstractKeycloakTest {
|
||||
|
||||
public static final String SOCIAL_CONFIG = "social.config";
|
||||
|
|
|
@ -21,6 +21,7 @@ import org.junit.Test;
|
|||
import org.junit.Rule;
|
||||
import org.keycloak.OAuth2Constants;
|
||||
import org.keycloak.OAuthErrorException;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.util.KeycloakUriBuilder;
|
||||
import org.keycloak.constants.ServiceUrlConstants;
|
||||
import org.keycloak.protocol.oidc.OIDCLoginProtocol;
|
||||
|
@ -29,6 +30,7 @@ import org.keycloak.testsuite.AbstractTestRealmKeycloakTest;
|
|||
import org.keycloak.testsuite.AssertEvents;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.util.AdminClientUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.util.ClientBuilder;
|
||||
import org.keycloak.testsuite.util.RealmBuilder;
|
||||
|
||||
|
@ -66,6 +68,7 @@ public class ClientRedirectTest extends AbstractTestRealmKeycloakTest {
|
|||
* @throws Exception
|
||||
*/
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void testClientRedirectEndpoint() throws Exception {
|
||||
oauth.doLogin("test-user@localhost", "password");
|
||||
|
||||
|
|
|
@ -18,21 +18,29 @@
|
|||
package org.keycloak.testsuite.cluster;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import org.junit.After;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.BeforeClass;
|
||||
import org.keycloak.models.UserModel;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.testsuite.page.AbstractPage;
|
||||
import org.keycloak.testsuite.page.PageWithLogOutAction;
|
||||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
import org.keycloak.testsuite.pages.LoginPage;
|
||||
import org.keycloak.testsuite.util.OAuthClient;
|
||||
import org.keycloak.testsuite.util.URLUtils;
|
||||
import org.keycloak.testsuite.util.UserBuilder;
|
||||
import org.openqa.selenium.Cookie;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.keycloak.testsuite.auth.page.AuthRealm.ADMIN;
|
||||
import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlStartsWith;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.keycloak.testsuite.admin.AbstractAdminTest.loadJson;
|
||||
import static org.keycloak.testsuite.util.OAuthClient.AUTH_SERVER_ROOT;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.pause;
|
||||
|
||||
public abstract class AbstractFailoverClusterTest extends AbstractClusterTest {
|
||||
|
@ -45,8 +53,51 @@ public abstract class AbstractFailoverClusterTest extends AbstractClusterTest {
|
|||
|
||||
public static final Integer REBALANCE_WAIT = Integer.parseInt(System.getProperty("rebalance.wait", "5000"));
|
||||
|
||||
@Override
|
||||
public void addTestRealms(List<RealmRepresentation> testRealms) {
|
||||
@Page
|
||||
protected LoginPage loginPage;
|
||||
|
||||
@Page
|
||||
protected AppPage appPage;
|
||||
|
||||
@BeforeClass
|
||||
public static void modifyAppRoot() {
|
||||
// the test app needs to run in the test realm to be able to fetch cookies later
|
||||
OAuthClient.updateAppRootRealm("test");
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void restoreAppRoot() {
|
||||
OAuthClient.resetAppRootRealm();
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
try {
|
||||
adminClient.realm("test").remove();
|
||||
} catch (Exception ignore) {
|
||||
}
|
||||
|
||||
RealmRepresentation testRealm = loadJson(getClass().getResourceAsStream("/testrealm.json"), RealmRepresentation.class);
|
||||
adminClient.realms().create(testRealm);
|
||||
|
||||
UserRepresentation user = UserBuilder.create()
|
||||
.username("login-test")
|
||||
.email("login@test.com")
|
||||
.enabled(true)
|
||||
.requiredAction(UserModel.RequiredAction.UPDATE_PASSWORD.toString())
|
||||
.requiredAction(UserModel.RequiredAction.UPDATE_PROFILE.toString())
|
||||
.password("password")
|
||||
.build();
|
||||
|
||||
String userId = ApiUtil.createUserWithAdminClient(adminClient.realm("test"), user);
|
||||
getCleanup().addUserId(userId);
|
||||
|
||||
oauth.clientId("test-app");
|
||||
}
|
||||
|
||||
@After
|
||||
public void after() {
|
||||
adminClient.realm("test").remove();
|
||||
}
|
||||
|
||||
|
||||
|
@ -67,45 +118,40 @@ public abstract class AbstractFailoverClusterTest extends AbstractClusterTest {
|
|||
assertFalse(controller.isStarted(getCurrentFailNode().getQualifier()));
|
||||
}
|
||||
|
||||
protected Cookie login(AbstractPage targetPage) {
|
||||
targetPage.navigateTo();
|
||||
assertCurrentUrlStartsWith(loginPage);
|
||||
loginPage.form().login(ADMIN, ADMIN);
|
||||
assertCurrentUrlStartsWith(targetPage);
|
||||
protected Cookie login() {
|
||||
oauth.openLoginForm();
|
||||
assertTrue(loginPage.isCurrent());
|
||||
loginPage.login("test-user@localhost", "password");
|
||||
assertTrue(appPage.isCurrent());
|
||||
Cookie sessionCookie = driver.manage().getCookieNamed(KEYCLOAK_SESSION_COOKIE);
|
||||
assertNotNull(sessionCookie);
|
||||
return sessionCookie;
|
||||
}
|
||||
|
||||
protected void logout(AbstractPage targetPage) {
|
||||
if (!(targetPage instanceof PageWithLogOutAction)) {
|
||||
throw new IllegalArgumentException(targetPage.getClass().getSimpleName() + " must implement PageWithLogOutAction interface");
|
||||
}
|
||||
targetPage.navigateTo();
|
||||
assertCurrentUrlStartsWith(targetPage);
|
||||
((PageWithLogOutAction) targetPage).logOut();
|
||||
protected void logout() {
|
||||
appPage.logout();
|
||||
}
|
||||
|
||||
protected Cookie verifyLoggedIn(AbstractPage targetPage, Cookie sessionCookieForVerification) {
|
||||
protected Cookie verifyLoggedIn(Cookie sessionCookieForVerification) {
|
||||
// verify on realm path
|
||||
masterRealmPage.navigateTo();
|
||||
URLUtils.navigateToUri(AUTH_SERVER_ROOT + "/realms/test");
|
||||
Cookie sessionCookieOnRealmPath = driver.manage().getCookieNamed(KEYCLOAK_SESSION_COOKIE);
|
||||
assertNotNull(sessionCookieOnRealmPath);
|
||||
assertEquals(sessionCookieOnRealmPath.getValue(), sessionCookieForVerification.getValue());
|
||||
// verify on target page
|
||||
targetPage.navigateTo();
|
||||
assertCurrentUrlStartsWith(targetPage);
|
||||
appPage.open();
|
||||
assertTrue(appPage.isCurrent());
|
||||
Cookie sessionCookie = driver.manage().getCookieNamed(KEYCLOAK_SESSION_COOKIE);
|
||||
assertNotNull(sessionCookie);
|
||||
assertEquals(sessionCookie.getValue(), sessionCookieForVerification.getValue());
|
||||
return sessionCookie;
|
||||
}
|
||||
|
||||
protected void verifyLoggedOut(AbstractPage targetPage) {
|
||||
protected void verifyLoggedOut() {
|
||||
// verify on target page
|
||||
targetPage.navigateTo();
|
||||
oauth.openLoginForm();
|
||||
driver.navigate().refresh();
|
||||
assertCurrentUrlStartsWith(loginPage);
|
||||
assertTrue(loginPage.isCurrent());
|
||||
Cookie sessionCookie = driver.manage().getCookieNamed(KEYCLOAK_SESSION_COOKIE);
|
||||
assertNull(sessionCookie);
|
||||
}
|
||||
|
|
|
@ -28,12 +28,12 @@ import org.keycloak.connections.infinispan.InfinispanConnectionProvider;
|
|||
import org.keycloak.models.sessions.infinispan.InfinispanStickySessionEncoderProviderFactory;
|
||||
import org.keycloak.models.sessions.infinispan.util.InfinispanUtil;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.services.resources.RealmsResource;
|
||||
import org.keycloak.sessions.StickySessionEncoderProvider;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
import org.keycloak.testsuite.pages.LoginPage;
|
||||
import org.keycloak.testsuite.pages.LoginPasswordUpdatePage;
|
||||
import org.keycloak.testsuite.pages.LoginUpdateProfilePage;
|
||||
import org.keycloak.testsuite.util.OAuthClient;
|
||||
|
||||
import javax.ws.rs.core.UriBuilder;
|
||||
import java.util.HashSet;
|
||||
|
@ -83,12 +83,15 @@ public class AuthenticationSessionClusterTest extends AbstractClusterTest {
|
|||
// String node1Route = backendNode(0).getArquillianContainer().getName();
|
||||
// String node2Route = backendNode(1).getArquillianContainer().getName();
|
||||
|
||||
String accountServiceNode1URL = RealmsResource.accountUrl(UriBuilder.fromUri(backendNode(0).getUriBuilder().build() + "/auth")).build("test").toString();
|
||||
String accountServiceNode2URL = RealmsResource.accountUrl(UriBuilder.fromUri(backendNode(1).getUriBuilder().build() + "/auth")).build("test").toString();
|
||||
OAuthClient oAuthClient = new OAuthClient();
|
||||
oAuthClient.init(driver);
|
||||
oAuthClient.baseUrl(UriBuilder.fromUri(backendNode(0).getUriBuilder().build() + "/auth").build("test").toString());
|
||||
|
||||
String testAppLoginNode1URL = oAuthClient.getLoginFormUrl();
|
||||
|
||||
Set<String> visitedRoutes = new HashSet<>();
|
||||
for (int i = 0; i < 20; i++) {
|
||||
driver.navigate().to(accountServiceNode1URL);
|
||||
driver.navigate().to(testAppLoginNode1URL);
|
||||
String authSessionCookie = AuthenticationSessionFailoverClusterTest.getAuthSessionCookieValue(driver);
|
||||
|
||||
Assert.assertThat(authSessionCookie.length(), Matchers.greaterThan(36));
|
||||
|
@ -105,8 +108,11 @@ public class AuthenticationSessionClusterTest extends AbstractClusterTest {
|
|||
|
||||
@Test
|
||||
public void testAuthSessionCookieWithoutRoute() throws Exception {
|
||||
String accountServiceNode1URL = RealmsResource.accountUrl(UriBuilder.fromUri(backendNode(0).getUriBuilder().build() + "/auth")).build("test").toString();
|
||||
String accountServiceNode2URL = RealmsResource.accountUrl(UriBuilder.fromUri(backendNode(1).getUriBuilder().build() + "/auth")).build("test").toString();
|
||||
OAuthClient oAuthClient = new OAuthClient();
|
||||
oAuthClient.init(driver);
|
||||
oAuthClient.baseUrl(UriBuilder.fromUri(backendNode(0).getUriBuilder().build() + "/auth").build("test").toString());
|
||||
|
||||
String testAppLoginNode1URL = oAuthClient.getLoginFormUrl();
|
||||
|
||||
// Disable route on backend server
|
||||
getTestingClientFor(backendNode(0)).server().run(session -> {
|
||||
|
@ -116,7 +122,7 @@ public class AuthenticationSessionClusterTest extends AbstractClusterTest {
|
|||
|
||||
// Test routes
|
||||
for (int i = 0; i < 20; i++) {
|
||||
driver.navigate().to(accountServiceNode1URL);
|
||||
driver.navigate().to(testAppLoginNode1URL);
|
||||
String authSessionCookie = AuthenticationSessionFailoverClusterTest.getAuthSessionCookieValue(driver);
|
||||
|
||||
Assert.assertEquals(36, authSessionCookie.length());
|
||||
|
|
|
@ -17,32 +17,20 @@
|
|||
|
||||
package org.keycloak.testsuite.cluster;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.mail.MessagingException;
|
||||
|
||||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.admin.client.resource.UserResource;
|
||||
import org.keycloak.models.UserModel;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.services.managers.AuthenticationSessionManager;
|
||||
import org.keycloak.services.util.CookieHelper;
|
||||
import org.keycloak.testsuite.Assert;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
import org.keycloak.testsuite.pages.LoginPage;
|
||||
import org.keycloak.testsuite.pages.LoginPasswordUpdatePage;
|
||||
import org.keycloak.testsuite.pages.LoginUpdateProfilePage;
|
||||
import org.keycloak.testsuite.util.UserBuilder;
|
||||
import org.openqa.selenium.Cookie;
|
||||
import org.openqa.selenium.WebDriver;
|
||||
|
||||
import javax.mail.MessagingException;
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.keycloak.testsuite.admin.AbstractAdminTest.loadJson;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.pause;
|
||||
|
||||
/**
|
||||
|
@ -50,11 +38,6 @@ import static org.keycloak.testsuite.util.WaitUtils.pause;
|
|||
*/
|
||||
public class AuthenticationSessionFailoverClusterTest extends AbstractFailoverClusterTest {
|
||||
|
||||
private String userId;
|
||||
|
||||
@Page
|
||||
protected LoginPage loginPage;
|
||||
|
||||
@Page
|
||||
protected LoginPasswordUpdatePage updatePasswordPage;
|
||||
|
||||
|
@ -62,40 +45,6 @@ public class AuthenticationSessionFailoverClusterTest extends AbstractFailoverCl
|
|||
@Page
|
||||
protected LoginUpdateProfilePage updateProfilePage;
|
||||
|
||||
@Page
|
||||
protected AppPage appPage;
|
||||
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
try {
|
||||
adminClient.realm("test").remove();
|
||||
} catch (Exception ignore) {
|
||||
}
|
||||
|
||||
RealmRepresentation testRealm = loadJson(getClass().getResourceAsStream("/testrealm.json"), RealmRepresentation.class);
|
||||
adminClient.realms().create(testRealm);
|
||||
|
||||
UserRepresentation user = UserBuilder.create()
|
||||
.username("login-test")
|
||||
.email("login@test.com")
|
||||
.enabled(true)
|
||||
.requiredAction(UserModel.RequiredAction.UPDATE_PASSWORD.toString())
|
||||
.requiredAction(UserModel.RequiredAction.UPDATE_PROFILE.toString())
|
||||
.password("password")
|
||||
.build();
|
||||
|
||||
userId = ApiUtil.createUserWithAdminClient(adminClient.realm("test"), user);
|
||||
getCleanup().addUserId(userId);
|
||||
|
||||
oauth.clientId("test-app");
|
||||
}
|
||||
|
||||
@After
|
||||
public void after() {
|
||||
adminClient.realm("test").remove();
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void failoverDuringAuthentication() throws Exception {
|
||||
|
|
|
@ -36,15 +36,15 @@ public class SessionFailoverClusterTest extends AbstractFailoverClusterTest {
|
|||
protected void sessionFailover(boolean expectSuccessfulFailover) {
|
||||
|
||||
// LOGIN
|
||||
Cookie sessionCookie = login(accountPage);
|
||||
Cookie sessionCookie = login();
|
||||
|
||||
switchFailedNode();
|
||||
|
||||
// VERIFY
|
||||
if (expectSuccessfulFailover) {
|
||||
verifyLoggedIn(accountPage, sessionCookie);
|
||||
verifyLoggedIn(sessionCookie);
|
||||
} else {
|
||||
verifyLoggedOut(accountPage);
|
||||
verifyLoggedOut();
|
||||
// FIXME test fails if I put re-login here
|
||||
}
|
||||
|
||||
|
@ -52,20 +52,20 @@ public class SessionFailoverClusterTest extends AbstractFailoverClusterTest {
|
|||
|
||||
// VERIFY again
|
||||
if (expectSuccessfulFailover) {
|
||||
verifyLoggedIn(accountPage, sessionCookie);
|
||||
verifyLoggedIn(sessionCookie);
|
||||
} else {
|
||||
verifyLoggedOut(accountPage);
|
||||
login(accountPage);
|
||||
verifyLoggedOut();
|
||||
login();
|
||||
}
|
||||
|
||||
// LOGOUT
|
||||
logout(accountPage);
|
||||
verifyLoggedOut(accountPage);
|
||||
logout();
|
||||
verifyLoggedOut();
|
||||
|
||||
switchFailedNode();
|
||||
|
||||
// VERIFY
|
||||
verifyLoggedOut(accountPage);
|
||||
verifyLoggedOut();
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -28,8 +28,10 @@ import org.apache.http.util.EntityUtils;
|
|||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.testsuite.AbstractKeycloakTest;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.auth.page.AuthRealm;
|
||||
import org.keycloak.testsuite.pages.LoginPage;
|
||||
import org.keycloak.testsuite.util.ContainerAssume;
|
||||
|
@ -59,6 +61,7 @@ import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlStartsWithLo
|
|||
* @author hmlnarik
|
||||
* @author Vaclav Muzikar <vmuzikar@redhat.com>
|
||||
*/
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class CookieTest extends AbstractKeycloakTest {
|
||||
|
||||
@Page
|
||||
|
|
|
@ -19,12 +19,14 @@ import org.hamcrest.Matchers;
|
|||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.models.AccountRoles;
|
||||
import org.keycloak.models.AdminRoles;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.services.managers.AuthenticationSessionManager;
|
||||
import org.keycloak.testsuite.AbstractKeycloakTest;
|
||||
import org.keycloak.testsuite.ActionURIUtils;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.pages.LoginPage;
|
||||
import org.keycloak.testsuite.util.ContainerAssume;
|
||||
import org.keycloak.testsuite.util.OAuthClient;
|
||||
|
@ -49,6 +51,7 @@ import org.junit.After;
|
|||
/**
|
||||
* @author <a href="mailto:mkanis@redhat.com">Martin Kanis</a>
|
||||
*/
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class CookiesPathTest extends AbstractKeycloakTest {
|
||||
|
||||
@Page
|
||||
|
@ -73,10 +76,11 @@ public class CookiesPathTest extends AbstractKeycloakTest {
|
|||
|
||||
@Test
|
||||
public void testCookiesPath() {
|
||||
// navigate to "/realms/foo/account" and remove cookies in the browser for the current path
|
||||
// navigate to "/realms/foo/account" and them remove cookies in the browser for the current path
|
||||
// first access to the path means there are no cookies being sent
|
||||
// we are redirected to login page and Keycloak sets cookie's path to "/auth/realms/foo/"
|
||||
deleteAllCookiesForRealm("foo");
|
||||
URLUtils.navigateToUri(OAuthClient.AUTH_SERVER_ROOT + "/realms/foo/account");
|
||||
driver.manage().deleteAllCookies();
|
||||
|
||||
Assert.assertTrue("There shouldn't be any cookies sent!", driver.manage().getCookies().isEmpty());
|
||||
|
||||
|
@ -91,15 +95,16 @@ public class CookiesPathTest extends AbstractKeycloakTest {
|
|||
.forEach(cookie -> Assert.assertThat(cookie.getPath(), Matchers.endsWith("/auth/realms/foo/")));
|
||||
|
||||
// now navigate to realm which name overlaps the first realm and delete cookies for that realm (foobar)
|
||||
deleteAllCookiesForRealm("foobar");
|
||||
URLUtils.navigateToUri(OAuthClient.AUTH_SERVER_ROOT + "/realms/foobar/account");
|
||||
driver.manage().deleteAllCookies();
|
||||
|
||||
// cookies shouldn't be sent for the first access to /realms/foobar/account
|
||||
// At this moment IE would sent cookies for /auth/realms/foo without the fix
|
||||
cookies = driver.manage().getCookies();
|
||||
Assert.assertTrue("There shouldn't be any cookies sent!", cookies.isEmpty());
|
||||
|
||||
// refresh the page and check if correct cookies were sent
|
||||
driver.navigate().refresh();
|
||||
// navigate to account and check if correct cookies were sent
|
||||
URLUtils.navigateToUri(OAuthClient.AUTH_SERVER_ROOT + "/realms/foobar/account");
|
||||
cookies = driver.manage().getCookies();
|
||||
|
||||
Assert.assertTrue("There should be cookies sent!", cookies.size() > 0);
|
||||
|
@ -160,7 +165,8 @@ public class CookiesPathTest extends AbstractKeycloakTest {
|
|||
Cookie wrongCookie = new Cookie(AuthenticationSessionManager.AUTH_SESSION_ID, AUTH_SESSION_VALUE,
|
||||
null, OLD_COOKIE_PATH, null, false, true);
|
||||
|
||||
deleteAllCookiesForRealm("foo");
|
||||
URLUtils.navigateToUri(OAuthClient.AUTH_SERVER_ROOT + "/realms/foo/account");
|
||||
driver.manage().deleteAllCookies();
|
||||
|
||||
// add old cookie with wrong path
|
||||
driver.manage().addCookie(wrongCookie);
|
||||
|
|
|
@ -30,6 +30,7 @@ import org.ietf.jgss.GSSCredential;
|
|||
import org.junit.Assume;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.admin.client.resource.ClientResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.constants.KerberosConstants;
|
||||
import org.keycloak.common.util.KerberosSerializationUtils;
|
||||
import org.keycloak.events.Details;
|
||||
|
@ -44,6 +45,7 @@ import org.keycloak.storage.UserStorageProvider;
|
|||
import org.keycloak.testsuite.ActionURIUtils;
|
||||
import org.keycloak.testsuite.Assert;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
|
||||
import static org.keycloak.testsuite.admin.ApiUtil.findClientByClientId;
|
||||
|
||||
|
@ -52,6 +54,7 @@ import static org.keycloak.testsuite.admin.ApiUtil.findClientByClientId;
|
|||
*
|
||||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
||||
*/
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public abstract class AbstractKerberosSingleRealmTest extends AbstractKerberosTest {
|
||||
|
||||
@Test
|
||||
|
|
|
@ -26,6 +26,7 @@ import javax.ws.rs.core.Response;
|
|||
import org.junit.Assert;
|
||||
import org.junit.ClassRule;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.federation.kerberos.CommonKerberosConfig;
|
||||
import org.keycloak.models.AuthenticationFlowBindings;
|
||||
|
@ -37,6 +38,7 @@ import org.keycloak.representations.idm.UserRepresentation;
|
|||
import org.keycloak.storage.UserStorageProvider;
|
||||
import org.keycloak.storage.ldap.LDAPStorageProviderFactory;
|
||||
import org.keycloak.storage.ldap.kerberos.LDAPProviderKerberosConfig;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.util.KerberosRule;
|
||||
import org.keycloak.testsuite.KerberosEmbeddedServer;
|
||||
|
||||
|
@ -45,6 +47,7 @@ import org.keycloak.testsuite.KerberosEmbeddedServer;
|
|||
*
|
||||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
||||
*/
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class KerberosLdapTest extends AbstractKerberosSingleRealmTest {
|
||||
|
||||
private static final String PROVIDER_CONFIG_LOCATION = "classpath:kerberos/kerberos-ldap-connection.properties";
|
||||
|
|
|
@ -39,14 +39,12 @@ import org.keycloak.representations.account.UserRepresentation;
|
|||
import org.keycloak.representations.idm.CredentialRepresentation;
|
||||
import org.keycloak.services.resources.account.AccountCredentialResource;
|
||||
import org.keycloak.storage.ldap.idm.model.LDAPObject;
|
||||
import org.keycloak.testsuite.arquillian.annotation.EnableFeature;
|
||||
import org.keycloak.testsuite.util.LDAPRule;
|
||||
import org.keycloak.testsuite.util.LDAPTestUtils;
|
||||
import org.keycloak.testsuite.util.TokenUtil;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.keycloak.common.Profile.Feature.ACCOUNT_API;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
||||
|
|
|
@ -23,12 +23,14 @@ import org.junit.FixMethodOrder;
|
|||
import org.junit.Test;
|
||||
import org.junit.runners.MethodSorters;
|
||||
import org.keycloak.OAuth2Constants;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.component.ComponentModel;
|
||||
import org.keycloak.models.RealmModel;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.storage.UserStorageProvider;
|
||||
import org.keycloak.storage.ldap.LDAPStorageProvider;
|
||||
import org.keycloak.storage.ldap.idm.model.LDAPObject;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
import org.keycloak.testsuite.util.LDAPRule;
|
||||
import org.keycloak.testsuite.util.LDAPTestConfiguration;
|
||||
|
@ -106,6 +108,7 @@ public class LDAPLegacyImportTest extends AbstractLDAPTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void loginLdap() {
|
||||
loginPage.open();
|
||||
loginPage.login("johnkeycloak", "Password1");
|
||||
|
|
|
@ -23,6 +23,7 @@ import org.junit.ClassRule;
|
|||
import org.junit.FixMethodOrder;
|
||||
import org.junit.Test;
|
||||
import org.junit.runners.MethodSorters;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.component.ComponentModel;
|
||||
import org.keycloak.models.LDAPConstants;
|
||||
import org.keycloak.models.RealmModel;
|
||||
|
@ -36,6 +37,7 @@ import org.keycloak.storage.ldap.mappers.HardcodedLDAPAttributeMapper;
|
|||
import org.keycloak.storage.ldap.mappers.HardcodedLDAPAttributeMapperFactory;
|
||||
import org.keycloak.storage.ldap.mappers.LDAPStorageMapper;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
import org.keycloak.testsuite.util.LDAPRule;
|
||||
import org.keycloak.testsuite.util.LDAPTestConfiguration;
|
||||
|
@ -96,6 +98,7 @@ public class LDAPPasswordModifyExtensionTest extends AbstractLDAPTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void ldapPasswordChangeWithAccountConsole() throws Exception {
|
||||
changePasswordPage.open();
|
||||
loginPage.login("johnkeycloak", "Password1");
|
||||
|
|
|
@ -24,6 +24,7 @@ import org.junit.Test;
|
|||
import org.junit.runners.MethodSorters;
|
||||
import org.keycloak.OAuth2Constants;
|
||||
import org.keycloak.admin.client.resource.UserResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.component.ComponentModel;
|
||||
import org.keycloak.credential.CredentialModel;
|
||||
import org.keycloak.models.GroupModel;
|
||||
|
@ -59,6 +60,7 @@ import org.keycloak.storage.ldap.mappers.LDAPStorageMapper;
|
|||
import org.keycloak.storage.ldap.mappers.UserAttributeLDAPStorageMapper;
|
||||
import org.keycloak.testsuite.AbstractAuthTest;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
import org.keycloak.testsuite.util.LDAPRule;
|
||||
import org.keycloak.testsuite.util.LDAPTestUtils;
|
||||
|
@ -234,6 +236,7 @@ public class LDAPProvidersIntegrationTest extends AbstractLDAPTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void deleteFederationLink() throws Exception {
|
||||
// KEYCLOAK-4789: Login in client, which requires consent
|
||||
oauth.clientId("third-party");
|
||||
|
@ -283,6 +286,7 @@ public class LDAPProvidersIntegrationTest extends AbstractLDAPTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void loginLdap() {
|
||||
loginPage.open();
|
||||
loginPage.login("johnkeycloak", "Password1");
|
||||
|
@ -323,6 +327,7 @@ public class LDAPProvidersIntegrationTest extends AbstractLDAPTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void ldapPasswordChangeWithAccountConsole() throws Exception {
|
||||
changePasswordPage.open();
|
||||
loginPage.login("johnkeycloak", "Password1");
|
||||
|
|
|
@ -30,6 +30,7 @@ import org.jboss.arquillian.graphene.page.Page;
|
|||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.admin.client.resource.UserResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.util.MultivaluedHashMap;
|
||||
import org.keycloak.credential.CredentialModel;
|
||||
import org.keycloak.models.RealmModel;
|
||||
|
@ -44,6 +45,7 @@ import org.keycloak.testsuite.AbstractAuthTest;
|
|||
import org.keycloak.testsuite.Assert;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.federation.BackwardsCompatibilityUserStorageFactory;
|
||||
import org.keycloak.testsuite.pages.AccountTotpPage;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
|
@ -60,6 +62,7 @@ import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlStartsWith;
|
|||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
||||
*/
|
||||
@AuthServerContainerExclude(AuthServerContainerExclude.AuthServer.REMOTE)
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class BackwardsCompatibilityUserStorageTest extends AbstractAuthTest {
|
||||
|
||||
private String backwardsCompProviderId;
|
||||
|
|
|
@ -11,6 +11,7 @@ import org.junit.Rule;
|
|||
import org.junit.Test;
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.admin.client.resource.UserResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.util.MultivaluedHashMap;
|
||||
import org.keycloak.common.util.ObjectUtil;
|
||||
import org.keycloak.credential.CredentialAuthentication;
|
||||
|
@ -35,6 +36,7 @@ import org.keycloak.storage.UserStorageProvider;
|
|||
import org.keycloak.testsuite.AbstractAuthTest;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.arquillian.annotation.ModelTest;
|
||||
import org.keycloak.testsuite.federation.UserMapStorage;
|
||||
import org.keycloak.testsuite.federation.UserMapStorageFactory;
|
||||
|
@ -93,6 +95,7 @@ import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlStartsWith;
|
|||
* @author tkyjovsk
|
||||
*/
|
||||
@AuthServerContainerExclude(AuthServer.REMOTE)
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class UserStorageTest extends AbstractAuthTest {
|
||||
|
||||
private String memProviderId;
|
||||
|
|
|
@ -31,6 +31,7 @@ import org.keycloak.testsuite.AssertEvents;
|
|||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.admin.authentication.AbstractAuthenticationTest;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.arquillian.annotation.EnableFeature;
|
||||
import org.keycloak.testsuite.auth.page.login.OneTimeCode;
|
||||
import org.keycloak.testsuite.broker.SocialLoginTest;
|
||||
|
@ -538,6 +539,7 @@ public class BrowserFlowTest extends AbstractTestRealmKeycloakTest {
|
|||
|
||||
@Test
|
||||
@AuthServerContainerExclude(REMOTE)
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void testAlternativeNonInteractiveExecutorInSubflow() {
|
||||
final String newFlowAlias = "browser - alternative non-interactive executor";
|
||||
testingClient.server("test").run(session -> FlowUtil.inCurrentRealm(session).copyBrowserFlow(newFlowAlias));
|
||||
|
|
|
@ -23,6 +23,7 @@ import org.junit.Rule;
|
|||
import org.junit.Test;
|
||||
import org.keycloak.OAuth2Constants;
|
||||
import org.keycloak.admin.client.resource.UserResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.util.Retry;
|
||||
import org.keycloak.crypto.Algorithm;
|
||||
import org.keycloak.events.Details;
|
||||
|
@ -41,6 +42,7 @@ import org.keycloak.testsuite.AssertEvents;
|
|||
import org.keycloak.testsuite.AbstractTestRealmKeycloakTest;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.console.page.AdminConsole;
|
||||
import org.keycloak.testsuite.pages.AccountUpdateProfilePage;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
|
@ -356,6 +358,7 @@ public class LoginTest extends AbstractTestRealmKeycloakTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void loginDifferentUserAfterDisabledUserThrownOut() {
|
||||
String userId = adminClient.realm("test").users().search("test-user@localhost").get(0).getId();
|
||||
try {
|
||||
|
@ -868,6 +871,7 @@ public class LoginTest extends AbstractTestRealmKeycloakTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void loginRememberMeExpiredIdle() throws Exception {
|
||||
setRememberMe(true, 1, null);
|
||||
|
||||
|
@ -897,6 +901,7 @@ public class LoginTest extends AbstractTestRealmKeycloakTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void loginRememberMeExpiredMaxLifespan() throws Exception {
|
||||
setRememberMe(true, null, 1);
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ package org.keycloak.testsuite.forms;
|
|||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.models.Constants;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
|
@ -28,6 +29,7 @@ import org.keycloak.testsuite.AssertEvents;
|
|||
import org.keycloak.testsuite.AbstractTestRealmKeycloakTest;
|
||||
import org.keycloak.common.util.Retry;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
import org.keycloak.testsuite.pages.LoginPage;
|
||||
|
||||
|
@ -153,6 +155,7 @@ public class LogoutTest extends AbstractTestRealmKeycloakTest {
|
|||
|
||||
//KEYCLOAK-2741
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void logoutWithRememberMe() {
|
||||
setRememberMe(true);
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ package org.keycloak.testsuite.forms;
|
|||
|
||||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.util.Base64;
|
||||
import org.keycloak.credential.CredentialModel;
|
||||
import org.keycloak.credential.hash.Pbkdf2PasswordHashProvider;
|
||||
|
@ -34,6 +35,7 @@ import org.keycloak.representations.idm.UserRepresentation;
|
|||
import org.keycloak.testsuite.AbstractTestRealmKeycloakTest;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.pages.AccountUpdateProfilePage;
|
||||
import org.keycloak.testsuite.pages.LoginPage;
|
||||
import org.keycloak.testsuite.util.UserBuilder;
|
||||
|
@ -123,6 +125,7 @@ public class PasswordHashingTest extends AbstractTestRealmKeycloakTest {
|
|||
|
||||
// KEYCLOAK-5282
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void testPasswordNotRehasedUnchangedIterations() {
|
||||
setPasswordPolicy("");
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ import org.junit.Test;
|
|||
import org.keycloak.authentication.AuthenticationFlow;
|
||||
import org.keycloak.authentication.authenticators.browser.CookieAuthenticatorFactory;
|
||||
import org.keycloak.authentication.forms.*;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.events.EventType;
|
||||
import org.keycloak.models.AuthenticationExecutionModel;
|
||||
|
@ -31,6 +32,7 @@ import org.keycloak.representations.idm.UserRepresentation;
|
|||
import org.keycloak.testsuite.AssertEvents;
|
||||
import org.keycloak.testsuite.AbstractTestRealmKeycloakTest;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.pages.*;
|
||||
import org.keycloak.testsuite.pages.AppPage.RequestType;
|
||||
|
||||
|
@ -440,6 +442,7 @@ public class RegisterTest extends AbstractTestRealmKeycloakTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void registerUserUmlats() {
|
||||
loginPage.open();
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ import org.junit.Before;
|
|||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.OAuth2Constants;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.models.UserManager;
|
||||
import org.keycloak.models.UserModel;
|
||||
import org.keycloak.models.utils.DefaultAuthenticationFlows;
|
||||
|
@ -37,6 +38,7 @@ import org.keycloak.testsuite.AbstractTestRealmKeycloakTest;
|
|||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.admin.authentication.AbstractAuthenticationTest;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.pages.AccountTotpPage;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
import org.keycloak.testsuite.pages.ErrorPage;
|
||||
|
@ -340,6 +342,7 @@ public class ResetCredentialsAlternativeFlowsTest extends AbstractTestRealmKeycl
|
|||
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void resetCredentialsVerifyCustomOtpLabelSetProperly() {
|
||||
try {
|
||||
// Make a copy of the default Reset Credentials flow, but:
|
||||
|
@ -398,6 +401,7 @@ public class ResetCredentialsAlternativeFlowsTest extends AbstractTestRealmKeycl
|
|||
// KEYCLOAK-12168 Verify the 'Device Name' label is optional for the first OTP credential created
|
||||
// (either via Account page or by registering new user), but required for each next created OTP credential
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void deviceNameOptionalForFirstOTPCredentialButRequiredForEachNextOne() {
|
||||
// Enable 'Default Action' on 'Configure OTP' RA for the 'test' realm
|
||||
RequiredActionProviderRepresentation otpRequiredAction = testRealm().flows().getRequiredAction("CONFIGURE_TOTP");
|
||||
|
|
|
@ -21,6 +21,7 @@ import org.jboss.arquillian.drone.api.annotation.Drone;
|
|||
import org.keycloak.admin.client.resource.UserResource;
|
||||
import org.keycloak.authentication.actiontoken.resetcred.ResetCredentialsActionToken;
|
||||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.constants.ServiceAccountConstants;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.events.Errors;
|
||||
|
@ -36,6 +37,7 @@ import org.keycloak.testsuite.AssertEvents;
|
|||
import org.keycloak.testsuite.AbstractTestRealmKeycloakTest;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
import org.keycloak.testsuite.pages.AppPage.RequestType;
|
||||
import org.keycloak.testsuite.pages.ErrorPage;
|
||||
|
@ -143,6 +145,7 @@ public class ResetPasswordTest extends AbstractTestRealmKeycloakTest {
|
|||
private int expectedMessagesCount;
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void resetPasswordLink() throws IOException, MessagingException {
|
||||
String username = "login-test";
|
||||
String resetUri = oauth.AUTH_SERVER_ROOT + "/realms/test/login-actions/reset-credentials";
|
||||
|
@ -1091,6 +1094,7 @@ public class ResetPasswordTest extends AbstractTestRealmKeycloakTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void resetPasswordLinkNewTabAndProperRedirectAccount() throws IOException {
|
||||
final String REQUIRED_URI = OAuthClient.AUTH_SERVER_ROOT + "/realms/test/account/applications";
|
||||
final String REDIRECT_URI = getAccountRedirectUrl() + "?path=applications";
|
||||
|
|
|
@ -22,6 +22,7 @@ import org.junit.Assert;
|
|||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.OAuth2Constants;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.events.EventType;
|
||||
import org.keycloak.models.UserModel;
|
||||
|
@ -31,6 +32,7 @@ import org.keycloak.representations.idm.RealmRepresentation;
|
|||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.testsuite.AssertEvents;
|
||||
import org.keycloak.testsuite.AbstractTestRealmKeycloakTest;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.drone.Different;
|
||||
import org.keycloak.testsuite.pages.AccountUpdateProfilePage;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
|
@ -74,6 +76,7 @@ public class SSOTest extends AbstractTestRealmKeycloakTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void loginSuccess() {
|
||||
loginPage.open();
|
||||
loginPage.login("test-user@localhost", "password");
|
||||
|
|
|
@ -20,7 +20,9 @@ import org.jboss.arquillian.graphene.page.Page;
|
|||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.representations.idm.ClientRepresentation;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.pages.AccountUpdateProfilePage;
|
||||
import org.keycloak.testsuite.pages.LoginPage;
|
||||
import org.keycloak.testsuite.ProfileAssume;
|
||||
|
@ -31,6 +33,7 @@ import java.util.List;
|
|||
* @author <a href="mailto:gerbermichi@me.com">Michael Gerber</a>
|
||||
* @author Stan Silvert ssilvert@redhat.com (C) 2016 Red Hat Inc.
|
||||
*/
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class AccountPageTest extends AbstractI18NTest {
|
||||
|
||||
@Page
|
||||
|
|
|
@ -7,6 +7,7 @@ import org.junit.Rule;
|
|||
import org.junit.Test;
|
||||
import org.keycloak.OAuth2Constants;
|
||||
import org.keycloak.admin.client.resource.ClientResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.util.Retry;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.events.EventType;
|
||||
|
@ -20,6 +21,7 @@ import org.keycloak.testsuite.admin.ApiUtil;
|
|||
import org.keycloak.testsuite.arquillian.SuiteContext;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude.AuthServer;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.auth.page.account.Applications;
|
||||
import org.keycloak.testsuite.auth.page.login.OAuthGrant;
|
||||
import org.keycloak.testsuite.auth.page.login.UpdatePassword;
|
||||
|
@ -280,6 +282,7 @@ public class JavascriptAdapterTest extends AbstractJavascriptTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void grantBrowserBasedApp() {
|
||||
Assume.assumeTrue("This test doesn't work with phantomjs", !"phantomjs".equals(System.getProperty("js.browser")));
|
||||
|
||||
|
|
|
@ -18,8 +18,7 @@
|
|||
package org.keycloak.testsuite.oauth;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.Collections;
|
||||
|
||||
import org.hamcrest.Matchers;
|
||||
import org.jboss.arquillian.graphene.page.Page;
|
||||
|
@ -92,12 +91,12 @@ public class OAuth2OnlyTest extends AbstractTestRealmKeycloakTest {
|
|||
trimRedirectUris(testApp);
|
||||
}
|
||||
|
||||
// testMissingRedirectUri requires only one redirection url defined in the client. We need to trim the other one.
|
||||
// testMissingRedirectUri requires only one redirection url defined in the client. We need to trim the other ones.
|
||||
private final void trimRedirectUris(ClientRepresentation testApp) {
|
||||
List<String> filteredUris = testApp.getRedirectUris().stream()
|
||||
String redirectUri = testApp.getRedirectUris().stream()
|
||||
.filter(uri -> AUTH_SERVER_SSL_REQUIRED ? uri.startsWith("https://") : uri.startsWith("http://"))
|
||||
.collect(Collectors.toList());
|
||||
testApp.setRedirectUris(filteredUris);
|
||||
.findFirst().get();
|
||||
testApp.setRedirectUris(Collections.singletonList(redirectUri));
|
||||
}
|
||||
|
||||
@Before
|
||||
|
|
|
@ -26,6 +26,7 @@ import org.keycloak.admin.client.resource.ClientResource;
|
|||
import org.keycloak.admin.client.resource.ClientScopeResource;
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.admin.client.resource.UserResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.constants.KerberosConstants;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.events.EventType;
|
||||
|
@ -41,6 +42,7 @@ import org.keycloak.representations.idm.RoleRepresentation;
|
|||
import org.keycloak.testsuite.AbstractKeycloakTest;
|
||||
import org.keycloak.testsuite.AssertEvents;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.pages.AccountApplicationsPage;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
import org.keycloak.testsuite.pages.ErrorPage;
|
||||
|
@ -66,6 +68,7 @@ import static org.keycloak.testsuite.admin.ApiUtil.findUserByUsernameId;
|
|||
/**
|
||||
* @author <a href="mailto:vrockai@redhat.com">Viliam Rockai</a>
|
||||
*/
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class OAuthGrantTest extends AbstractKeycloakTest {
|
||||
|
||||
public static final String THIRD_PARTY_APP = "third-party";
|
||||
|
|
|
@ -29,6 +29,7 @@ import org.keycloak.admin.client.resource.ClientResource;
|
|||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.admin.client.resource.RoleResource;
|
||||
import org.keycloak.admin.client.resource.UserResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.constants.ServiceAccountConstants;
|
||||
import org.keycloak.crypto.Algorithm;
|
||||
import org.keycloak.events.Details;
|
||||
|
@ -51,6 +52,7 @@ import org.keycloak.representations.idm.UserRepresentation;
|
|||
import org.keycloak.testsuite.AbstractKeycloakTest;
|
||||
import org.keycloak.testsuite.AssertEvents;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.auth.page.AuthRealm;
|
||||
import org.keycloak.testsuite.pages.AccountApplicationsPage;
|
||||
import org.keycloak.testsuite.pages.LoginPage;
|
||||
|
@ -511,6 +513,7 @@ public class OfflineTokenTest extends AbstractKeycloakTest {
|
|||
|
||||
// KEYCLOAK-4525
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void offlineTokenRemoveClientWithTokens() throws Exception {
|
||||
// Create new client
|
||||
RealmResource appRealm = adminClient.realm("test");
|
||||
|
|
|
@ -28,6 +28,7 @@ import org.keycloak.admin.client.resource.ClientResource;
|
|||
import org.keycloak.admin.client.resource.ProtocolMappersResource;
|
||||
import org.keycloak.admin.client.resource.UserResource;
|
||||
import org.keycloak.authentication.authenticators.client.JWTClientAuthenticator;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.util.Time;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.events.EventType;
|
||||
|
@ -56,6 +57,7 @@ import org.keycloak.testsuite.AssertEvents;
|
|||
import org.keycloak.testsuite.admin.AbstractAdminTest;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.client.resources.TestApplicationResourceUrls;
|
||||
import org.keycloak.testsuite.client.resources.TestOIDCEndpointsApplicationResource;
|
||||
import org.keycloak.testsuite.pages.AccountUpdateProfilePage;
|
||||
|
@ -92,6 +94,7 @@ import org.keycloak.testsuite.util.AdminClientUtil;
|
|||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
||||
*/
|
||||
@AuthServerContainerExclude(AuthServer.REMOTE)
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class OIDCAdvancedRequestParamsTest extends AbstractTestRealmKeycloakTest {
|
||||
|
||||
@Rule
|
||||
|
@ -247,6 +250,7 @@ public class OIDCAdvancedRequestParamsTest extends AbstractTestRealmKeycloakTest
|
|||
|
||||
// Prompt=none with consent required for client
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void promptNoneConsentRequired() throws Exception {
|
||||
// Require consent
|
||||
ClientManager.realm(adminClient.realm("test")).clientId("test-app").consentRequired(true);
|
||||
|
|
|
@ -23,6 +23,7 @@ import org.junit.Test;
|
|||
import org.keycloak.OAuth2Constants;
|
||||
import org.keycloak.admin.client.resource.ClientResource;
|
||||
import org.keycloak.admin.client.resource.ClientScopeResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.util.MultivaluedHashMap;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.events.EventType;
|
||||
|
@ -44,6 +45,7 @@ import org.keycloak.representations.idm.UserRepresentation;
|
|||
import org.keycloak.testsuite.Assert;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.pages.OAuthGrantPage;
|
||||
import org.keycloak.testsuite.util.ClientManager;
|
||||
import org.keycloak.testsuite.util.OAuthClient;
|
||||
|
@ -460,6 +462,7 @@ public class OIDCScopeTest extends AbstractOIDCScopeTest {
|
|||
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void testRefreshTokenWithConsentRequired() {
|
||||
// Login with consentRequired
|
||||
oauth.clientId("third-party");
|
||||
|
|
|
@ -20,6 +20,7 @@ import org.jboss.arquillian.graphene.page.Page;
|
|||
import org.junit.After;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.events.Errors;
|
||||
import org.keycloak.events.EventType;
|
||||
|
@ -31,6 +32,7 @@ import org.keycloak.testsuite.Assert;
|
|||
import org.keycloak.testsuite.AssertEvents;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.auth.page.AuthRealm;
|
||||
import org.keycloak.testsuite.auth.page.account.AccountManagement;
|
||||
import org.keycloak.testsuite.auth.page.login.OIDCLogin;
|
||||
|
@ -51,6 +53,7 @@ import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlStartsWith;
|
|||
*
|
||||
* @author fkiss
|
||||
*/
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class TrustStoreEmailTest extends AbstractTestRealmKeycloakTest {
|
||||
|
||||
@Page
|
||||
|
|
|
@ -185,7 +185,9 @@
|
|||
"baseUrl": "http://localhost:8180/auth/realms/master/app/auth",
|
||||
"redirectUris": [
|
||||
"http://localhost:8180/auth/realms/master/app/auth/*",
|
||||
"https://localhost:8543/auth/realms/master/app/auth/*"
|
||||
"https://localhost:8543/auth/realms/master/app/auth/*",
|
||||
"http://localhost:8180/auth/realms/test/app/auth/*",
|
||||
"https://localhost:8543/auth/realms/test/app/auth/*"
|
||||
],
|
||||
"adminUrl": "http://localhost:8180/auth/realms/master/app/admin",
|
||||
"secret": "password"
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
parent=${theme-default-name}-preview
|
||||
parent=${theme-default-name}.v2
|
||||
locales=en,de,lang01,lang02,lang03,lang04,lang05,test,lang06,lang07,lang08,lang09,lang10
|
|
@ -34,10 +34,9 @@ import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlStartsWithLo
|
|||
* @author Vaclav Muzikar <vmuzikar@redhat.com>
|
||||
*/
|
||||
@EnableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true)
|
||||
@EnableFeature(value = Profile.Feature.ACCOUNT_API, skipRestart = true)
|
||||
public abstract class AbstractAccountTest extends AbstractUiTest {
|
||||
public static final String ACCOUNT_THEME_NAME_KC = "keycloak-preview";
|
||||
public static final String ACCOUNT_THEME_NAME_RHSSO = "rh-sso-preview";
|
||||
public static final String ACCOUNT_THEME_NAME_KC = "keycloak.v2";
|
||||
public static final String ACCOUNT_THEME_NAME_RHSSO = "rh-sso.v2";
|
||||
|
||||
@Page
|
||||
protected WelcomeScreen accountWelcomeScreen;
|
||||
|
|
|
@ -36,8 +36,6 @@ import static org.junit.Assert.assertEquals;
|
|||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.keycloak.testsuite.util.OAuthClient.APP_ROOT;
|
||||
import static org.hamcrest.Matchers.containsInAnyOrder;
|
||||
|
||||
|
@ -116,8 +114,8 @@ public class ApplicationsTest extends BaseAccountPageTest {
|
|||
assertEquals(name, clientRep.getClientName());
|
||||
assertEquals(userConsentRequired, clientRep.isUserConsentRequired());
|
||||
assertEquals(inUse, clientRep.isInUse());
|
||||
assertEquals(effectiveUrl, clientRep.getEffectiveUrl());
|
||||
assertEquals(applicationDetailsVisible, clientRep.isApplicationDetailsVisible());
|
||||
if (applicationDetailsVisible) assertEquals(effectiveUrl, clientRep.getEffectiveUrl());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -64,8 +64,6 @@ import static org.keycloak.testsuite.util.WaitUtils.waitForPageToLoad;
|
|||
/**
|
||||
* @author Vaclav Muzikar <vmuzikar@redhat.com>
|
||||
*/
|
||||
@EnableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true)
|
||||
@EnableFeature(value = Profile.Feature.ACCOUNT_API, skipRestart = true)
|
||||
@EnableFeature(value = Profile.Feature.WEB_AUTHN, skipRestart = true, onlyForProduct = true)
|
||||
public class SigningInTest extends BaseAccountPageTest {
|
||||
public static final String PASSWORD_LABEL = "My Password";
|
||||
|
|
|
@ -58,8 +58,8 @@ public class ApplicationsPage extends AbstractLoggedInPage {
|
|||
String clientName = UIUtils.getTextFromElement(app.findElement(By.xpath("//div[@id='application-name-" + clientId + "']")));
|
||||
boolean userConsentRequired = !UIUtils.getTextFromElement(app.findElement(By.xpath("//div[@id='application-internal-" + clientId + "']"))).equals("Internal");
|
||||
boolean inUse = UIUtils.getTextFromElement(app.findElement(By.xpath("//div[@id='application-status-" + clientId + "']"))).equals("In use");
|
||||
String effectiveURL = UIUtils.getTextFromElement(app.findElement(By.xpath("//div[@id='application-effectiveurl-" + clientId + "']")));
|
||||
boolean applicationDetailsVisible = app.findElement(By.xpath("//section[@id='application-expandable-" + clientId + "']")).isDisplayed();
|
||||
String effectiveURL = UIUtils.getTextFromElement(app.findElement(By.xpath("//span[@id='application-effectiveurl-" + clientId + "']")));
|
||||
return new ClientRepresentation(clientId, clientName, userConsentRequired, inUse, effectiveURL, applicationDetailsVisible);
|
||||
}
|
||||
|
||||
|
|
|
@ -21,9 +21,11 @@ import org.jboss.arquillian.graphene.page.Page;
|
|||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.representations.idm.CredentialRepresentation;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.auth.page.login.LoginError;
|
||||
import org.keycloak.testsuite.auth.page.login.Registration;
|
||||
import org.keycloak.testsuite.auth.page.login.TermsAndConditions;
|
||||
|
@ -175,6 +177,7 @@ public class TermsAndConditionsTest extends AbstractConsoleTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public void testTermsAndConditionsOnAccountPage() {
|
||||
String userId = createUser(REALM, FLANDERS, FLANDERS_PASS);
|
||||
|
||||
|
|
|
@ -4,7 +4,9 @@ import org.jboss.arquillian.graphene.page.Page;
|
|||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.auth.page.AuthRealm;
|
||||
import org.keycloak.testsuite.console.page.fragment.LocaleDropdown;
|
||||
import org.keycloak.testsuite.console.page.realm.ThemeSettings;
|
||||
|
@ -19,6 +21,7 @@ import static org.keycloak.testsuite.util.URLAssert.*;
|
|||
/**
|
||||
* @author Vaclav Muzikar <vmuzikar@redhat.com>
|
||||
*/
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class InternationalizationTest extends AbstractRealmTest {
|
||||
private static final String THEME_NAME = "internat-test";
|
||||
private static final String LOCALE_CS_NAME = "Čeština";
|
||||
|
|
|
@ -21,8 +21,10 @@ import org.jboss.arquillian.graphene.page.Page;
|
|||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.auth.page.account.Account;
|
||||
import org.keycloak.testsuite.auth.page.login.Registration;
|
||||
import org.keycloak.testsuite.auth.page.login.ResetCredentials;
|
||||
|
@ -51,6 +53,7 @@ import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlStartsWithLo
|
|||
*
|
||||
* @author tkyjovsk
|
||||
*/
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class LoginSettingsTest extends AbstractRealmTest {
|
||||
|
||||
private static final String NEW_USERNAME = "newUsername";
|
||||
|
|
|
@ -20,6 +20,8 @@ package org.keycloak.testsuite.console.realm;
|
|||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.auth.page.account.Account;
|
||||
import org.keycloak.testsuite.console.page.realm.BruteForceDetection;
|
||||
import org.keycloak.testsuite.console.page.users.UserAttributes;
|
||||
|
@ -40,6 +42,7 @@ import static org.keycloak.testsuite.util.WaitUtils.*;
|
|||
* @author mhajas
|
||||
* @author Vaclav Muzikar <vmuzikar@redhat.com>
|
||||
*/
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class SecurityDefensesTest extends AbstractRealmTest {
|
||||
|
||||
public static final String INVALID_PWD_MSG = "Invalid username or password.";
|
||||
|
|
|
@ -3,6 +3,8 @@ package org.keycloak.testsuite.console.users;
|
|||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.auth.page.account.Account;
|
||||
import org.keycloak.testsuite.auth.page.login.TermsAndConditions;
|
||||
import org.keycloak.testsuite.auth.page.login.UpdateAccount;
|
||||
|
@ -26,6 +28,7 @@ import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlStartsWith;
|
|||
* @author tkyjovsk
|
||||
* @author mhajas
|
||||
*/
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class RequiredUserActionsTest extends AbstractUserTest {
|
||||
|
||||
@Page
|
||||
|
|
|
@ -10,6 +10,7 @@ import org.junit.Test;
|
|||
import org.keycloak.OAuth2Constants;
|
||||
import org.keycloak.admin.client.resource.ClientResource;
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.util.Base64Url;
|
||||
import org.keycloak.models.Constants;
|
||||
import org.keycloak.protocol.oidc.OIDCLoginProtocol;
|
||||
|
@ -20,6 +21,7 @@ import org.keycloak.services.resources.LoginActionsService;
|
|||
import org.keycloak.testsuite.ActionURIUtils;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.AuthServerTestEnricher;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.broker.BrokerTestTools;
|
||||
import org.keycloak.testsuite.pages.AccountUpdateProfilePage;
|
||||
import org.keycloak.testsuite.pages.ErrorPage;
|
||||
|
@ -53,6 +55,7 @@ import static org.keycloak.testsuite.util.ServerURLs.getAuthServerContextRoot;
|
|||
import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlStartsWith;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.pause;
|
||||
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class AccountLinkSpringBootTest extends AbstractSpringBootTest {
|
||||
|
||||
private static final String PARENT_REALM = "parent-realm";
|
||||
|
|
|
@ -8,12 +8,14 @@ import org.junit.Before;
|
|||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.OAuth2Constants;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.events.EventType;
|
||||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.services.Urls;
|
||||
import org.keycloak.testsuite.AssertEvents;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.pages.AccountApplicationsPage;
|
||||
import org.keycloak.testsuite.pages.OAuthGrantPage;
|
||||
import org.keycloak.testsuite.util.ClientManager;
|
||||
|
@ -35,6 +37,7 @@ import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlStartsWith;
|
|||
import static org.keycloak.testsuite.util.WaitUtils.pause;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitForPageToLoad;
|
||||
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class OfflineTokenSpringBootTest extends AbstractSpringBootTest {
|
||||
private static final String SERVLET_URL = BASE_URL + "/TokenServlet";
|
||||
|
||||
|
|
|
@ -7,10 +7,12 @@ import org.junit.Before;
|
|||
import org.junit.Test;
|
||||
import org.keycloak.admin.client.resource.ClientResource;
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.representations.idm.ClientRepresentation;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.auth.page.account.Sessions;
|
||||
import org.keycloak.testsuite.auth.page.login.OIDCLogin;
|
||||
import org.keycloak.testsuite.util.DroneUtils;
|
||||
|
@ -28,6 +30,7 @@ import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlStartsWith;
|
|||
import static org.keycloak.testsuite.util.WaitUtils.pause;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitForPageToLoad;
|
||||
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class SessionSpringBootTest extends AbstractSpringBootTest {
|
||||
|
||||
private static final String SERVLET_URL = BASE_URL + "/SessionServlet";
|
||||
|
|
|
@ -15,6 +15,8 @@ import org.junit.Before;
|
|||
import org.junit.BeforeClass;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.common.constants.GenericConstants;
|
||||
import org.keycloak.common.util.MultivaluedHashMap;
|
||||
import org.keycloak.representations.idm.ComponentRepresentation;
|
||||
import org.keycloak.representations.idm.GroupRepresentation;
|
||||
|
@ -25,10 +27,12 @@ import org.keycloak.testsuite.AbstractKeycloakTest;
|
|||
import org.keycloak.testsuite.Assert;
|
||||
import org.keycloak.testsuite.AssertEvents;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.DisableFeature;
|
||||
import org.keycloak.testsuite.pages.AccountPasswordPage;
|
||||
import org.keycloak.testsuite.pages.AccountUpdateProfilePage;
|
||||
import org.keycloak.testsuite.pages.LoginPage;
|
||||
|
||||
@DisableFeature(value = Profile.Feature.ACCOUNT2, skipRestart = true) // TODO remove this (KEYCLOAK-16228)
|
||||
public class SSSDTest extends AbstractKeycloakTest {
|
||||
|
||||
private static final Logger log = Logger.getLogger(SSSDTest.class);
|
||||
|
|
|
@ -14,7 +14,7 @@ Before committing changes review changes in `src/main/resources/theme/keycloak/c
|
|||
|
||||
The node dependencies will be downloaded at build time, based on the content of `package-lock.json`. To update `package-lock.json`:
|
||||
|
||||
cd src/main/resources/theme/keycloak-preview/account/resources/
|
||||
cd src/main/resources/theme/keycloak.v2/account/resources/
|
||||
npm install
|
||||
git add package-lock.json
|
||||
cd -
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
<properties>
|
||||
<dir.common>src/main/resources/theme/keycloak/common/resources</dir.common>
|
||||
<dir.account2>src/main/resources/theme/keycloak-preview/account/src</dir.account2>
|
||||
<dir.account2>src/main/resources/theme/keycloak.v2/account/src</dir.account2>
|
||||
<args.npm.install>ci --no-optional --ignore-scripts</args.npm.install>
|
||||
</properties>
|
||||
|
||||
|
@ -126,7 +126,7 @@
|
|||
<!-- Remove once rcue stops shipping this file -->
|
||||
<exclude>**/git-Logo.svg</exclude>
|
||||
|
||||
<exclude>**/keycloak-preview/account/src/**</exclude>
|
||||
<exclude>**/keycloak.v2/account/src/**</exclude>
|
||||
</excludes>
|
||||
</resource>
|
||||
</resources>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
"name" : "keycloak",
|
||||
"types": [ "admin", "account", "login", "common", "email", "welcome" ]
|
||||
}, {
|
||||
"name" : "keycloak-preview",
|
||||
"name" : "keycloak.v2",
|
||||
"types": [ "account" ]
|
||||
}]
|
||||
}
|
||||
|
|
|
@ -8,5 +8,9 @@
|
|||
}, {
|
||||
"name" : "rh-sso",
|
||||
"types": [ "admin", "account", "login", "common", "email", "welcome" ]
|
||||
},
|
||||
{
|
||||
"name" : "rh-sso.v2",
|
||||
"types": [ "account" ]
|
||||
}]
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
parent=keycloak-preview
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
|
@ -0,0 +1 @@
|
|||
parent=keycloak.v2
|
|
@ -1,64 +0,0 @@
|
|||
New Account Console
|
||||
========
|
||||
|
||||
The new Account Console uses PatternFly 4 and React.
|
||||
|
||||
Here is what you need to know in order to do development on the new console.
|
||||
|
||||
|
||||
Building
|
||||
--------
|
||||
First, you must install node and npm. The recommended version of npm is 6.9.0 or higher.
|
||||
|
||||
Then run install.
|
||||
|
||||
`npm install`
|
||||
|
||||
To build and lint the application:
|
||||
|
||||
`npm run build`
|
||||
|
||||
If your IDE doesn't handle dynamic TypeScript transpilation, use the watch script:
|
||||
|
||||
`npm run build:watch`
|
||||
|
||||
If you want to run lint by itself**:
|
||||
|
||||
`npm run lint`
|
||||
|
||||
** Please lint the code and fix any errors or warnings before doing a commit.
|
||||
|
||||
Edit standalone.xml
|
||||
--------
|
||||
Your standalone.xml should have the following set in the keycloak subsystem:
|
||||
|
||||
```xml
|
||||
<theme>
|
||||
<staticMaxAge>-1</staticMaxAge>
|
||||
<cacheThemes>false</cacheThemes>
|
||||
<cacheTemplates>false</cacheTemplates>
|
||||
<dir>path_to_keycloak_dev/keycloak/themes/src/main/resources/theme</dir>
|
||||
</theme>
|
||||
```
|
||||
|
||||
Running
|
||||
--------
|
||||
You should run the Keycloak server with the following system properties:
|
||||
|
||||
`standalone -Dkeycloak.profile.feature.account_api=enabled -Dkeycloak.profile.feature.account2=enabled`
|
||||
|
||||
Log in to the admin console. Go to Realm Settings --> Themes. Then set account theme to "keycloak-preview".
|
||||
|
||||
Now when you go to account management you should see the new React/PF4 version.
|
||||
|
||||
Running tests
|
||||
-------------
|
||||
1. Build New Account Console as stated in the "Building" chapter above
|
||||
1. Build the project (no need to build the whole distribution).
|
||||
1. Run:
|
||||
```
|
||||
mvn clean verify -f testsuite/integration-arquillian/tests/other/base-ui -Dtest=**.account2.** -Dbrowser=chrome -DchromeArguments=--enable-web-authentication-testing-api
|
||||
```
|
||||
Use `chrome` or `firefox` as the browser, other browsers are currently broken for the testsuite.
|
||||
|
||||
**You need to rebuild the `themes` module prior to running tests every time you make a change to the Account Console**
|
Before Width: | Height: | Size: 627 B After Width: | Height: | Size: 627 B |
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue