From e6620ca005a7f8037a4b7b09d213551c62e2d444 Mon Sep 17 00:00:00 2001 From: vramik Date: Tue, 27 Oct 2015 14:31:15 +0100 Subject: [PATCH] arquillian-testsuite added initial version of migration test --- .../arquillian/ContainersTestEnricher.java | 74 +- .../KeycloakArquillianExtension.java | 4 +- .../arquillian/migration/Migration.java | 39 + .../MigrationTestExecutionDecider.java | 61 ++ .../testsuite/AbstractKeycloakTest.java | 1 + .../testsuite/migration/MigrationTest.java | 44 + .../base/src/test/resources/arquillian.xml | 20 +- .../migration-test/migration-realm-16.json | 796 ++++++++++++++++++ .../integration-arquillian/tests/pom.xml | 183 +--- 9 files changed, 1067 insertions(+), 155 deletions(-) create mode 100644 testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/migration/Migration.java create mode 100644 testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/migration/MigrationTestExecutionDecider.java create mode 100644 testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/migration/MigrationTest.java create mode 100644 testsuite/integration-arquillian/tests/base/src/test/resources/migration-test/migration-realm-16.json diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/ContainersTestEnricher.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/ContainersTestEnricher.java index 257fb55689..01d8efd7a2 100644 --- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/ContainersTestEnricher.java +++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/ContainersTestEnricher.java @@ -1,7 +1,13 @@ package org.keycloak.testsuite.arquillian; +import java.io.File; +import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; +import java.util.LinkedList; +import org.apache.commons.io.FileUtils; +import org.jboss.arquillian.container.spi.Container; +import org.jboss.arquillian.container.spi.ContainerRegistry; import org.jboss.arquillian.container.spi.event.StartSuiteContainers; import org.jboss.arquillian.container.spi.event.StopSuiteContainers; import org.jboss.arquillian.container.test.api.ContainerController; @@ -33,13 +39,16 @@ import static org.keycloak.testsuite.auth.page.AuthRealm.MASTER; public class ContainersTestEnricher { protected final Logger log = Logger.getLogger(this.getClass()); - + @Inject private Instance containerController; + @Inject + private Instance containerRegistry; + @Inject private Event stopSuiteContainers; - + private String appServerQualifier; private static final String AUTH_SERVER_CONTAINER_PROPERTY = "auth.server.container"; @@ -62,24 +71,77 @@ public class ContainersTestEnricher { private InstanceProducer oauthClient; private ContainerController controller; + private LinkedList containers; private final boolean migrationTests = System.getProperty("migration", "false").equals("true"); private boolean alreadyStopped = false; + private boolean init = false; + private void init() { + if (!init) { + containers = new LinkedList(containerRegistry.get().getContainers()); + } + init = true; + } + + /* + * non-javadoc + * + * Before starting suite containers. Initialization of containers is done + * (only once during class life cycle) + */ public void startSuiteContainers(@Observes(precedence = 1) StartSuiteContainers event) { + init(); if (migrationTests) { - log.info("\n### Starting keycloak with previous version ###\n"); + log.info("\n\n### Starting keycloak with previous version ###\n"); } } - public void stopMigrationContainer(@Observes AfterStart event) { + /* + * non-javadoc + * + * After start container. Server logs are checked (in case jboss based container). + * In case of migration scenario: previous container is stopped. + */ + public void afterStart(@Observes AfterStart event) throws IOException { + if (System.getProperty("check.server.log", "true").equals("true")) { + checkServerLog(); + } + if (migrationTests && !alreadyStopped) { - log.info("\n### Stopping keycloak with previous version ###\n"); + log.info("\n\n### Stopping keycloak with previous version ###\n"); stopSuiteContainers.fire(new StopSuiteContainers()); + log.info("\n\n### Starting keycloak with current version ###\n"); } alreadyStopped = true; } - + + /* + * non-javadoc + * + * check server logs (in case jboss based container) whether there are no ERRORs or SEVEREs + */ + private void checkServerLog() throws IOException { + Container container = containers.removeFirst(); + if (!container.getName().equals("auth-server-undertow")) { + String jbossHomePath = container.getContainerConfiguration().getContainerProperties().get("jbossHome"); + log.debug("jbossHome: " + jbossHomePath + "\n"); + + String serverLogContent = FileUtils.readFileToString(new File(jbossHomePath + "/standalone/log/server.log")); + + boolean containsError + = serverLogContent.contains("ERROR") + || serverLogContent.contains("SEVERE") + || serverLogContent.contains("Exception "); + //There is expected string "Exception" in server log: Adding provider + //singleton org.keycloak.services.resources.ModelExceptionMapper + + if (containsError) { + throw new RuntimeException(container.getName() + ": Server log contains ERROR."); + } + } + } + public void beforeSuite(@Observes BeforeSuite event) { suiteContext.set(new SuiteContext()); } diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/KeycloakArquillianExtension.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/KeycloakArquillianExtension.java index 73583cf489..a987a16371 100644 --- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/KeycloakArquillianExtension.java +++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/KeycloakArquillianExtension.java @@ -10,6 +10,7 @@ import org.jboss.arquillian.graphene.location.CustomizableURLResourceProvider; import org.jboss.arquillian.test.spi.enricher.resource.ResourceProvider; import org.jboss.arquillian.test.spi.execution.TestExecutionDecider; import org.keycloak.testsuite.arquillian.jira.JiraTestExecutionDecider; +import org.keycloak.testsuite.arquillian.migration.MigrationTestExecutionDecider; import org.keycloak.testsuite.arquillian.undertow.CustomUndertowContainer; /** @@ -36,7 +37,8 @@ public class KeycloakArquillianExtension implements LoadableExtension { .service(DeployableContainer.class, CustomUndertowContainer.class); builder - .service(TestExecutionDecider.class, JiraTestExecutionDecider.class); + .service(TestExecutionDecider.class, JiraTestExecutionDecider.class) + .service(TestExecutionDecider.class, MigrationTestExecutionDecider.class); builder .override(ResourceProvider.class, URLResourceProvider.class, URLProvider.class) diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/migration/Migration.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/migration/Migration.java new file mode 100644 index 0000000000..791e588711 --- /dev/null +++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/migration/Migration.java @@ -0,0 +1,39 @@ +/* + * JBoss, Home of Professional Open Source. + * Copyright 2012, Red Hat, Inc., and individual contributors + * as indicated by the @author tags. See the copyright.txt file in the + * distribution for a full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.keycloak.testsuite.arquillian.migration; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import static java.lang.annotation.RetentionPolicy.RUNTIME; +import java.lang.annotation.Target; + +/** + * + * @author Vlastislav Ramik + */ +@Documented +@Retention(RUNTIME) +@Target({ElementType.METHOD}) +public @interface Migration { + String versionFrom(); +} diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/migration/MigrationTestExecutionDecider.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/migration/MigrationTestExecutionDecider.java new file mode 100644 index 0000000000..bfac24ba65 --- /dev/null +++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/migration/MigrationTestExecutionDecider.java @@ -0,0 +1,61 @@ +/* + * JBoss, Home of Professional Open Source. + * Copyright 2012, Red Hat, Inc., and individual contributors + * as indicated by the @author tags. See the copyright.txt file in the + * distribution for a full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.keycloak.testsuite.arquillian.migration; + +import java.lang.reflect.Method; +import org.jboss.arquillian.test.spi.execution.ExecutionDecision; +import org.jboss.arquillian.test.spi.execution.TestExecutionDecider; + +/** + * @author Vlastislav Ramik + */ +public class MigrationTestExecutionDecider implements TestExecutionDecider { + + @Override + public ExecutionDecision decide(Method method) { + + boolean migrationTest = "true".equals(System.getProperty("migration", "false")); + Migration migrationAnnotation = method.getAnnotation(Migration.class); + + if (migrationTest && migrationAnnotation != null) { + String versionFrom = migrationAnnotation.versionFrom(); + String version = System.getProperty("version"); + + + if (version.equals(versionFrom)) { + return ExecutionDecision.execute(); + } else { + return ExecutionDecision.dontExecute(method.getName() + "doesn't fit with migration version."); + } + } + if ((migrationTest && migrationAnnotation == null) || (!migrationTest && migrationAnnotation != null)) { + return ExecutionDecision.dontExecute("Migration test and no migration annotation or no migration test and migration annotation"); + } + return ExecutionDecision.execute(); + } + + @Override + public int precedence() { + return 1; + } + +} diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/AbstractKeycloakTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/AbstractKeycloakTest.java index 99c5d670ce..8ed6dcdd16 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/AbstractKeycloakTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/AbstractKeycloakTest.java @@ -86,6 +86,7 @@ public abstract class AbstractKeycloakTest { driverSettings(); if (!suiteContext.isAdminPasswordUpdated()) { + log.debug("updating admin password"); updateMasterAdminPassword(); suiteContext.setAdminPasswordUpdated(true); } diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/migration/MigrationTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/migration/MigrationTest.java new file mode 100644 index 0000000000..3fd1b7c135 --- /dev/null +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/migration/MigrationTest.java @@ -0,0 +1,44 @@ +/* + * JBoss, Home of Professional Open Source. + * Copyright 2012, Red Hat, Inc., and individual contributors + * as indicated by the @author tags. See the copyright.txt file in the + * distribution for a full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.keycloak.testsuite.migration; + +import org.junit.Test; +import org.keycloak.representations.idm.RealmRepresentation; +import org.keycloak.testsuite.AbstractAuthTest; +import org.keycloak.testsuite.arquillian.migration.Migration; + +/** + * @author Vlastislav Ramik + */ +public class MigrationTest extends AbstractAuthTest { + + @Test + @Migration(versionFrom = "1.6.0.Final") + public void migration16Test() { + for (RealmRepresentation realm : adminClient.realms().findAll()) { + System.out.println(realm.getRealm()); + } + + throw new RuntimeException("TODO"); + } + +} diff --git a/testsuite/integration-arquillian/tests/base/src/test/resources/arquillian.xml b/testsuite/integration-arquillian/tests/base/src/test/resources/arquillian.xml index bc82ac773c..f8bbfc00a9 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/resources/arquillian.xml +++ b/testsuite/integration-arquillian/tests/base/src/test/resources/arquillian.xml @@ -25,8 +25,16 @@ ${migration.kc16} org.jboss.as.arquillian.container.managed.ManagedDeployableContainer - ${keycloak-1.6.0.Final.home} - -Djboss.socket.binding.port-offset=${auth.server.port.offset} -Xms64m -Xmx512m -XX:MaxPermSize=256m + ${keycloak.migration.home} + + -Dkeycloak.migration.action=import + -Dkeycloak.migration.provider=singleFile + -Dkeycloak.migration.file=${keycloak.migration.file} + -Dkeycloak.migration.strategy=OVERWRITE_EXISTING + -Dkeycloak.migration.realmName=Migration + -Djboss.socket.binding.port-offset=${auth.server.port.offset} + -Xms64m -Xmx512m -XX:MaxPermSize=256m + ${auth.server.management.port} ${startup.timeout.sec} @@ -36,7 +44,7 @@ ${migration.kc15} org.jboss.as.arquillian.container.managed.ManagedDeployableContainer - ${keycloak-1.5.1.Final.home} + ${keycloak.migration.homev} -Djboss.socket.binding.port-offset=${auth.server.port.offset} -Xms64m -Xmx512m -XX:MaxPermSize=256m ${auth.server.management.port} ${startup.timeout.sec} @@ -47,7 +55,7 @@ ${migration.kc14} org.jboss.as.arquillian.container.managed.ManagedDeployableContainer - ${keycloak-1.4.0.Final.home} + ${keycloak.migration.home} -Djboss.socket.binding.port-offset=${auth.server.port.offset} -Xms64m -Xmx512m -XX:MaxPermSize=256m ${auth.server.management.port} ${startup.timeout.sec} @@ -58,7 +66,7 @@ ${migration.kc13} org.jboss.as.arquillian.container.managed.ManagedDeployableContainer - ${keycloak-1.3.1.Final.home} + ${keycloak.migration.home} -Djboss.socket.binding.port-offset=${auth.server.port.offset} -Xms64m -Xmx512m -XX:MaxPermSize=256m ${auth.server.management.port} ${startup.timeout.sec} @@ -69,7 +77,7 @@ ${migration.kc12} org.jboss.as.arquillian.container.managed.ManagedDeployableContainer - ${keycloak-1.2.0.Final.home} + ${keycloak.migration.homee} -Djboss.socket.binding.port-offset=${auth.server.port.offset} -Xms64m -Xmx512m -XX:MaxPermSize=256m ${auth.server.management.port} ${startup.timeout.sec} diff --git a/testsuite/integration-arquillian/tests/base/src/test/resources/migration-test/migration-realm-16.json b/testsuite/integration-arquillian/tests/base/src/test/resources/migration-test/migration-realm-16.json new file mode 100644 index 0000000000..4b7e19575b --- /dev/null +++ b/testsuite/integration-arquillian/tests/base/src/test/resources/migration-test/migration-realm-16.json @@ -0,0 +1,796 @@ +{ + "id" : "Migration", + "realm" : "Migration", + "notBefore" : 0, + "revokeRefreshToken" : false, + "accessTokenLifespan" : 300, + "ssoSessionIdleTimeout" : 1800, + "ssoSessionMaxLifespan" : 36000, + "offlineSessionIdleTimeout" : 2592000, + "accessCodeLifespan" : 60, + "accessCodeLifespanUserAction" : 300, + "accessCodeLifespanLogin" : 1800, + "enabled" : true, + "sslRequired" : "external", + "registrationAllowed" : false, + "registrationEmailAsUsername" : false, + "rememberMe" : false, + "verifyEmail" : false, + "resetPasswordAllowed" : false, + "editUsernameAllowed" : false, + "bruteForceProtected" : false, + "maxFailureWaitSeconds" : 900, + "minimumQuickLoginWaitSeconds" : 60, + "waitIncrementSeconds" : 60, + "quickLoginCheckMilliSeconds" : 1000, + "maxDeltaTimeSeconds" : 43200, + "failureFactor" : 30, + "privateKey" : "MIIEogIBAAKCAQEArQLywI66vQOLm7qtYOTgyZAiKegCPnLM89Rb6ta4aktJ2eOc46yMXe7q6Cu0TiItABjeur3YMqYpWRLdUTBFkh5ZIQINtihiB57bCO7FCQB008a0yJLePyfljfRJ6l1MHyLGOGhPH8FNtw2urGpD+J59aApDzKercCFrdOz4A8sGT2NP+q8Bb/BJOb6XgkE/b9e3G4nvlxSVSxXKNgA+XOYGeLRuDzDp391F/rx5Nm/utCrKTakP5YC2jFNccv9XXMr/S6GIAb7Z1B7QZaP+snrIa06mF6LO+KsHRb1EYYIt/2jMw/buz/HxwIq43/bJMvI2GqFZKxRIT3X5KEzaeQIDAQABAoIBAGv43w6VBK1ZPRNfGTzTGgYw0WFdzaizdHznFsYkYsrTWa+FgTAFS0SECk4CmG/6nCLnYnkgaYCSelOAlmZIveJG1lDnOy9nXGZtGT0l5gmMI1zXMZPLNLAtcfF5d3ev6gW0aghh8J9cv+dxvoUTfH/4SUNYxJ9ANJmyAaHjEZUrY6JyiLqCo1y+iYyYRmmhYbj6qU6ld1mOVvWOF4ZFWKJ1ZCxWf9cUMpzphBQVqrBOW/OqOv6F7MotwBrRW8K/rnIq7sfO//+6RXMMmdCSseprBHWKC6NkS822lPSA3Co0j6TwL54cOrw7W7iEzY9WanyHQNiBnTyPqGmIXGwBnAECgYEA5FTYZTb2yLSo41LBPbvH2aRje+/yEESPTz+O60y6T3ZED8yzoGfyJd3OBkuNKEwFCztM0sZdyRvSJKXxyWCW+RwZ8JHRtYr476DGO6e/ZqW4IQuLGTwsExvbZGuYotrF1Eeyhy3TtEkkDuEsK5wwW+OMUkGcJpoEN8DGlROcJqECgYEAwfoA2E5TnM6YZwJktVKOQdoyvvSFLrhCUoOSNKJwYJGSBhVqdP0SFvKWCkL8DHP8zPn+GOw2DLokrby2Ac72XmQvXJKeRpeOk5C+uancRCUdfm+Fc6+5ownjH32LzYvwVw3qEbidM7a2GgdzJNxmGXgL8x8h9ClhWkhtaDWmnNkCgYBA2QwAawTZ6d1Req5hTxSqbnLGv1X7Ys1kz4NStp7vdIJODnAxrXPrZzxdM1XqzPRdxUDDWA1I0br0J6Es9V7Lbzy6w19Q9SBQRlQmmzTT/Vr3H6UozJsj7jR4J8rY7dNjv90nYU+QE3nHNBJsbFabslum/PVRTUrHXtvHeSNPIQKBgFhI9QF+BMglr2+Sw0tTm7OVH+uRVtyAuI7dmzmhhQwutQtXy/AbDpSrLGbXPehdEf4o+eFWAPOh9PeuIBiKnc8wQe4cPTVb3WSESIowKTRKwDW/hDm3DQKLiXfXqD2RJ343swUFxWa4DgGiymFIfp+w559r2ARMoSZ6OHFpmb9hAoGAKd4lA9rz7YRbL0S2dFjbZ2BLVZpjb8rvR1VQQuCGYxqlLkWlrSeiuhkqMyaUtL0PRuEcXrcobHV/IXrYq2WoWItmVCnWq2Wx7pmEa4HYJhhmIQXAthU0USWY77zEagpeTB+VPV8CpwLEsKQqhQeNkepxEI9fMYEYpwUo6bzDyeA=", + "publicKey" : "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArQLywI66vQOLm7qtYOTgyZAiKegCPnLM89Rb6ta4aktJ2eOc46yMXe7q6Cu0TiItABjeur3YMqYpWRLdUTBFkh5ZIQINtihiB57bCO7FCQB008a0yJLePyfljfRJ6l1MHyLGOGhPH8FNtw2urGpD+J59aApDzKercCFrdOz4A8sGT2NP+q8Bb/BJOb6XgkE/b9e3G4nvlxSVSxXKNgA+XOYGeLRuDzDp391F/rx5Nm/utCrKTakP5YC2jFNccv9XXMr/S6GIAb7Z1B7QZaP+snrIa06mF6LO+KsHRb1EYYIt/2jMw/buz/HxwIq43/bJMvI2GqFZKxRIT3X5KEzaeQIDAQAB", + "certificate" : "MIICoTCCAYkCBgFQjuc8LjANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAlNaWdyYXRpb24wHhcNMTUxMDIyMDkzMzUwWhcNMjUxMDIyMDkzNTMwWjAUMRIwEAYDVQQDDAlNaWdyYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtAvLAjrq9A4ubuq1g5ODJkCIp6AI+cszz1Fvq1rhqS0nZ45zjrIxd7uroK7ROIi0AGN66vdgypilZEt1RMEWSHlkhAg22KGIHntsI7sUJAHTTxrTIkt4/J+WN9EnqXUwfIsY4aE8fwU23Da6sakP4nn1oCkPMp6twIWt07PgDywZPY0/6rwFv8Ek5vpeCQT9v17cbie+XFJVLFco2AD5c5gZ4tG4PMOnf3UX+vHk2b+60KspNqQ/lgLaMU1xy/1dcyv9LoYgBvtnUHtBlo/6yeshrTqYXos74qwdFvURhgi3/aMzD9u7P8fHAirjf9sky8jYaoVkrFEhPdfkoTNp5AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAE6l3lMPlWPOgE6TFj/fJvCa5OH3exKdvN1mofiq3VmNRoxyPWcehezS0SvKjWvF79QXMHLidH4Wr8IDrc8JS5YrCy1GVwGcJecwZpoMgqeaJ0UcfWgDz6+n+uaXZ49kNZH0CD1zoxHc1A49AlGQMO4jd517lfwjyuKl1DbWymmplvOmE8PKGaDTMyohwJlvoZbAs3BNhHss5IIyfGESyYYG98tRfKdIvddZOBfTp1rbXzr8oE+bgJKlGuX+oun67jfdNuYC+2f7bzTkqeSF215T6aA0j1oAxEIlmBBsIiiGEre2Xk3Lr+/itNKBZPJv92GbTmcNq/EpLhvEMz0s84o=", + "codeSecret" : "5a609b38-3b83-482b-b2f1-d0289f21b6a2", + "roles" : { + "realm" : [ { + "id" : "748f1d8c-5f0a-4bce-a3b1-096360252e3f", + "name" : "offline_access", + "description" : "${role_offline-access}", + "scopeParamRequired" : true, + "composite" : false + } ], + "client" : { + "realm-management" : [ { + "id" : "9b4e8326-cc09-4d3d-ac48-f4b9576c9da2", + "name" : "manage-realm", + "description" : "${role_manage-realm}", + "scopeParamRequired" : false, + "composite" : false + }, { + "id" : "2283a92b-dcc3-4c6e-be62-140d27500115", + "name" : "view-realm", + "description" : "${role_view-realm}", + "scopeParamRequired" : false, + "composite" : false + }, { + "id" : "5a6653ea-91a9-4c15-9f6f-ed84970afd78", + "name" : "manage-events", + "description" : "${role_manage-events}", + "scopeParamRequired" : false, + "composite" : false + }, { + "id" : "61b3467d-d0db-4fa2-9241-17096961744d", + "name" : "manage-users", + "description" : "${role_manage-users}", + "scopeParamRequired" : false, + "composite" : false + }, { + "id" : "52741497-a533-4d23-b989-0054b961c8b2", + "name" : "impersonation", + "description" : "${role_impersonation}", + "scopeParamRequired" : false, + "composite" : false + }, { + "id" : "0744e5e8-ce96-4dbb-9eca-a3a1cb3a5903", + "name" : "view-identity-providers", + "description" : "${role_view-identity-providers}", + "scopeParamRequired" : false, + "composite" : false + }, { + "id" : "d1877efa-4bdd-4378-923a-fd1f8bd6ce71", + "name" : "manage-clients", + "description" : "${role_manage-clients}", + "scopeParamRequired" : false, + "composite" : false + }, { + "id" : "c0041a9a-38d2-41a7-a886-f47dcec2f49b", + "name" : "manage-identity-providers", + "description" : "${role_manage-identity-providers}", + "scopeParamRequired" : false, + "composite" : false + }, { + "id" : "e4fbf986-956b-4b6e-ba9a-0c2a604c5f0a", + "name" : "realm-admin", + "description" : "${role_realm-admin}", + "scopeParamRequired" : false, + "composite" : true, + "composites" : { + "client" : { + "realm-management" : [ "view-clients", "manage-realm", "view-realm", "manage-events", "view-events", "manage-users", "impersonation", "view-users", "view-identity-providers", "manage-clients", "create-client", "manage-identity-providers" ] + } + } + }, { + "id" : "c2786492-d49c-4893-807b-274b4eb6ec54", + "name" : "view-clients", + "description" : "${role_view-clients}", + "scopeParamRequired" : false, + "composite" : false + }, { + "id" : "fa92320c-3f12-44b3-b61f-3c5dacec755c", + "name" : "view-events", + "description" : "${role_view-events}", + "scopeParamRequired" : false, + "composite" : false + }, { + "id" : "033e98f0-21a1-44c8-a71d-03be8126c615", + "name" : "view-users", + "description" : "${role_view-users}", + "scopeParamRequired" : false, + "composite" : false + }, { + "id" : "c33f11a9-c82a-4218-a29f-a57c89d094b7", + "name" : "create-client", + "description" : "${role_create-client}", + "scopeParamRequired" : false, + "composite" : false + } ], + "security-admin-console" : [ ], + "broker" : [ { + "id" : "e57662f2-0206-4103-bfba-db54433d53f7", + "name" : "read-token", + "description" : "${role_read-token}", + "scopeParamRequired" : false, + "composite" : false + } ], + "account" : [ { + "id" : "b15e3ee9-033e-48d1-b9b0-267afa93f3c9", + "name" : "manage-account", + "description" : "${role_manage-account}", + "scopeParamRequired" : false, + "composite" : false + }, { + "id" : "686afa3d-4a43-43f1-9b17-b92d152944d2", + "name" : "view-profile", + "description" : "${role_view-profile}", + "scopeParamRequired" : false, + "composite" : false + } ] + } + }, + "defaultRoles" : [ "offline_access" ], + "requiredCredentials" : [ "password" ], + "otpPolicyType" : "totp", + "otpPolicyAlgorithm" : "HmacSHA1", + "otpPolicyInitialCounter" : 0, + "otpPolicyDigits" : 6, + "otpPolicyLookAheadWindow" : 1, + "otpPolicyPeriod" : 30, + "clientScopeMappings" : { + "realm-management" : [ { + "client" : "security-admin-console", + "roles" : [ "realm-admin" ] + } ] + }, + "clients" : [ { + "id" : "3793af8e-47ec-47b2-ac31-3cb813c395b8", + "clientId" : "realm-management", + "name" : "${client_realm-management}", + "surrogateAuthRequired" : false, + "enabled" : true, + "clientAuthenticatorType" : "client-secret", + "secret" : "1d5f503f-dc13-45e3-8b4f-e541743f7291", + "redirectUris" : [ ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : true, + "consentRequired" : false, + "serviceAccountsEnabled" : false, + "directGrantsOnly" : false, + "publicClient" : false, + "frontchannelLogout" : false, + "attributes" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "protocolMappers" : [ { + "id" : "f232fbdf-b7fb-4b1d-b2e9-f54e3470bc7c", + "name" : "family name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : true, + "consentText" : "${familyName}", + "config" : { + "user.attribute" : "lastName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "family_name", + "jsonType.label" : "String" + } + }, { + "id" : "8171f547-4738-4aeb-837e-cbfc7d0cc017", + "name" : "username", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : true, + "consentText" : "${username}", + "config" : { + "user.attribute" : "username", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "preferred_username", + "jsonType.label" : "String" + } + }, { + "id" : "d9ca8f34-270d-4f9f-a6ff-320e57689a0a", + "name" : "email", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : true, + "consentText" : "${email}", + "config" : { + "user.attribute" : "email", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "email", + "jsonType.label" : "String" + } + }, { + "id" : "a9a237e8-134d-4fc2-b41d-3b7f4023d7f8", + "name" : "role list", + "protocol" : "saml", + "protocolMapper" : "saml-role-list-mapper", + "consentRequired" : false, + "config" : { + "single" : "false", + "attribute.nameformat" : "Basic", + "attribute.name" : "Role" + } + }, { + "id" : "ef97b539-b493-4081-ae84-ac6ce162f24b", + "name" : "given name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : true, + "consentText" : "${givenName}", + "config" : { + "user.attribute" : "firstName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "given_name", + "jsonType.label" : "String" + } + }, { + "id" : "ea669796-f1c5-41e3-a635-f4c2cd537cf1", + "name" : "full name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-full-name-mapper", + "consentRequired" : true, + "consentText" : "${fullName}", + "config" : { + "id.token.claim" : "true", + "access.token.claim" : "true" + } + } ] + }, { + "id" : "1487423c-d03e-464e-aa8e-4db48c6b9977", + "clientId" : "security-admin-console", + "name" : "${client_security-admin-console}", + "baseUrl" : "/auth/admin/Migration/console/index.html", + "surrogateAuthRequired" : false, + "enabled" : true, + "clientAuthenticatorType" : "client-secret", + "secret" : "799f2249-0b27-4d8d-8bff-c8ed8ee98fcf", + "redirectUris" : [ "/auth/admin/Migration/console/*" ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "serviceAccountsEnabled" : false, + "directGrantsOnly" : false, + "publicClient" : true, + "frontchannelLogout" : false, + "attributes" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "protocolMappers" : [ { + "id" : "bc58f583-70f1-47a9-b64c-edd91e34a9d2", + "name" : "family name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : true, + "consentText" : "${familyName}", + "config" : { + "user.attribute" : "lastName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "family_name", + "jsonType.label" : "String" + } + }, { + "id" : "222cd811-48b6-4f67-a959-42ef4b5422dd", + "name" : "email", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : true, + "consentText" : "${email}", + "config" : { + "user.attribute" : "email", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "email", + "jsonType.label" : "String" + } + }, { + "id" : "4dcc8851-7f55-4ac2-a840-455789b5f012", + "name" : "locale", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "consentText" : "${locale}", + "config" : { + "user.attribute" : "locale", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "locale", + "jsonType.label" : "String" + } + }, { + "id" : "4d536574-fa9b-40a2-aed3-8fe647ea3a2b", + "name" : "role list", + "protocol" : "saml", + "protocolMapper" : "saml-role-list-mapper", + "consentRequired" : false, + "config" : { + "single" : "false", + "attribute.nameformat" : "Basic", + "attribute.name" : "Role" + } + }, { + "id" : "36c6275c-fc00-4511-b1f2-b0a0db25c3c7", + "name" : "username", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : true, + "consentText" : "${username}", + "config" : { + "user.attribute" : "username", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "preferred_username", + "jsonType.label" : "String" + } + }, { + "id" : "826950eb-8d2d-42ae-b2fa-df2d98cf09f8", + "name" : "full name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-full-name-mapper", + "consentRequired" : true, + "consentText" : "${fullName}", + "config" : { + "id.token.claim" : "true", + "access.token.claim" : "true" + } + }, { + "id" : "b50a73f8-4f50-4cd0-8fdf-a23c59103bfc", + "name" : "given name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : true, + "consentText" : "${givenName}", + "config" : { + "user.attribute" : "firstName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "given_name", + "jsonType.label" : "String" + } + } ] + }, { + "id" : "57690443-ad65-4198-ba24-73e0a9f0968c", + "clientId" : "broker", + "name" : "${client_broker}", + "surrogateAuthRequired" : false, + "enabled" : true, + "clientAuthenticatorType" : "client-secret", + "secret" : "633b0791-2877-4fba-9b99-32a793ced077", + "redirectUris" : [ ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "serviceAccountsEnabled" : false, + "directGrantsOnly" : false, + "publicClient" : false, + "frontchannelLogout" : false, + "attributes" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "protocolMappers" : [ { + "id" : "bdc92df4-9053-4651-9a95-4a36cc825b94", + "name" : "username", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : true, + "consentText" : "${username}", + "config" : { + "user.attribute" : "username", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "preferred_username", + "jsonType.label" : "String" + } + }, { + "id" : "7a90d6af-b6a6-4d59-82fe-7c6b6206a3a8", + "name" : "given name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : true, + "consentText" : "${givenName}", + "config" : { + "user.attribute" : "firstName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "given_name", + "jsonType.label" : "String" + } + }, { + "id" : "24179c32-d778-4ab9-a32c-305832e3581e", + "name" : "role list", + "protocol" : "saml", + "protocolMapper" : "saml-role-list-mapper", + "consentRequired" : false, + "config" : { + "single" : "false", + "attribute.nameformat" : "Basic", + "attribute.name" : "Role" + } + }, { + "id" : "30903d54-a53c-4238-9258-3aec427adc71", + "name" : "email", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : true, + "consentText" : "${email}", + "config" : { + "user.attribute" : "email", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "email", + "jsonType.label" : "String" + } + }, { + "id" : "2dcc7b59-4a56-4e71-a763-5853a58fb3d1", + "name" : "full name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-full-name-mapper", + "consentRequired" : true, + "consentText" : "${fullName}", + "config" : { + "id.token.claim" : "true", + "access.token.claim" : "true" + } + }, { + "id" : "f997c17d-e6a5-4bf1-a40a-0f240fd0e3f3", + "name" : "family name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : true, + "consentText" : "${familyName}", + "config" : { + "user.attribute" : "lastName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "family_name", + "jsonType.label" : "String" + } + } ] + }, { + "id" : "dba6eddb-ad7f-46d7-8f69-c4b56b32566e", + "clientId" : "account", + "name" : "${client_account}", + "baseUrl" : "/auth/realms/Migration/account", + "surrogateAuthRequired" : false, + "enabled" : true, + "clientAuthenticatorType" : "client-secret", + "secret" : "6b602649-f42f-43bb-a2f0-c02043872cdc", + "defaultRoles" : [ "view-profile", "manage-account" ], + "redirectUris" : [ "/auth/realms/Migration/account/*" ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "serviceAccountsEnabled" : false, + "directGrantsOnly" : false, + "publicClient" : false, + "frontchannelLogout" : false, + "attributes" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "protocolMappers" : [ { + "id" : "47990dfe-a600-4301-bbfb-f41ab94b9dff", + "name" : "username", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : true, + "consentText" : "${username}", + "config" : { + "user.attribute" : "username", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "preferred_username", + "jsonType.label" : "String" + } + }, { + "id" : "8a8e1c9e-9fff-4418-8941-66a77842bce7", + "name" : "full name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-full-name-mapper", + "consentRequired" : true, + "consentText" : "${fullName}", + "config" : { + "id.token.claim" : "true", + "access.token.claim" : "true" + } + }, { + "id" : "581a2aef-ef7b-4a5a-95fe-f59b0c7e95a0", + "name" : "family name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : true, + "consentText" : "${familyName}", + "config" : { + "user.attribute" : "lastName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "family_name", + "jsonType.label" : "String" + } + }, { + "id" : "8713a65f-f602-4973-9719-6b9ae792fb39", + "name" : "email", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : true, + "consentText" : "${email}", + "config" : { + "user.attribute" : "email", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "email", + "jsonType.label" : "String" + } + }, { + "id" : "0f49eaee-4fd2-48da-9ca3-60f33f26b101", + "name" : "given name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : true, + "consentText" : "${givenName}", + "config" : { + "user.attribute" : "firstName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "given_name", + "jsonType.label" : "String" + } + }, { + "id" : "964acb2b-9e6b-42e8-8f8d-382ac32a9da8", + "name" : "role list", + "protocol" : "saml", + "protocolMapper" : "saml-role-list-mapper", + "consentRequired" : false, + "config" : { + "single" : "false", + "attribute.nameformat" : "Basic", + "attribute.name" : "Role" + } + } ] + } ], + "browserSecurityHeaders" : { + "contentSecurityPolicy" : "frame-src 'self'", + "xFrameOptions" : "SAMEORIGIN" + }, + "smtpServer" : { }, + "eventsEnabled" : false, + "eventsListeners" : [ "jboss-logging" ], + "enabledEventTypes" : [ ], + "adminEventsEnabled" : false, + "adminEventsDetailsEnabled" : false, + "identityFederationEnabled" : false, + "internationalizationEnabled" : false, + "supportedLocales" : [ ], + "authenticationFlows" : [ { + "alias" : "clients", + "description" : "Base authentication for clients", + "providerId" : "client-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "client-secret", + "autheticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "userSetupAllowed" : false, + "priority" : 10 + }, { + "authenticator" : "client-jwt", + "autheticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "userSetupAllowed" : false, + "priority" : 20 + } ] + }, { + "alias" : "forms", + "description" : "Username, password, otp and other auth forms.", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "auth-username-password-form", + "autheticatorFlow" : false, + "requirement" : "REQUIRED", + "userSetupAllowed" : false, + "priority" : 10 + }, { + "authenticator" : "auth-otp-form", + "autheticatorFlow" : false, + "requirement" : "OPTIONAL", + "userSetupAllowed" : false, + "priority" : 20 + } ] + }, { + "alias" : "browser", + "description" : "browser based authentication", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "auth-cookie", + "autheticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "userSetupAllowed" : false, + "priority" : 10 + }, { + "authenticator" : "auth-spnego", + "autheticatorFlow" : false, + "requirement" : "DISABLED", + "userSetupAllowed" : false, + "priority" : 20 + }, { + "flowAlias" : "forms", + "autheticatorFlow" : true, + "requirement" : "ALTERNATIVE", + "userSetupAllowed" : false, + "priority" : 30 + } ] + }, { + "alias" : "reset credentials", + "description" : "Reset credentials for a user if they forgot their password or something", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "reset-credentials-choose-user", + "autheticatorFlow" : false, + "requirement" : "REQUIRED", + "userSetupAllowed" : false, + "priority" : 10 + }, { + "authenticator" : "reset-credential-email", + "autheticatorFlow" : false, + "requirement" : "REQUIRED", + "userSetupAllowed" : false, + "priority" : 20 + }, { + "authenticator" : "reset-password", + "autheticatorFlow" : false, + "requirement" : "REQUIRED", + "userSetupAllowed" : false, + "priority" : 30 + }, { + "authenticator" : "reset-otp", + "autheticatorFlow" : false, + "requirement" : "OPTIONAL", + "userSetupAllowed" : false, + "priority" : 40 + } ] + }, { + "alias" : "registration", + "description" : "registration flow", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "registration-page-form", + "flowAlias" : "registration form", + "autheticatorFlow" : true, + "requirement" : "REQUIRED", + "userSetupAllowed" : false, + "priority" : 10 + } ] + }, { + "alias" : "registration form", + "description" : "registration form", + "providerId" : "form-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "registration-user-creation", + "autheticatorFlow" : false, + "requirement" : "REQUIRED", + "userSetupAllowed" : false, + "priority" : 20 + }, { + "authenticator" : "registration-profile-action", + "autheticatorFlow" : false, + "requirement" : "REQUIRED", + "userSetupAllowed" : false, + "priority" : 40 + }, { + "authenticator" : "registration-password-action", + "autheticatorFlow" : false, + "requirement" : "REQUIRED", + "userSetupAllowed" : false, + "priority" : 50 + }, { + "authenticator" : "registration-recaptcha-action", + "autheticatorFlow" : false, + "requirement" : "DISABLED", + "userSetupAllowed" : false, + "priority" : 60 + } ] + }, { + "alias" : "direct grant", + "description" : "OpenID Connect Resource Owner Grant", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "direct-grant-validate-username", + "autheticatorFlow" : false, + "requirement" : "REQUIRED", + "userSetupAllowed" : false, + "priority" : 10 + }, { + "authenticator" : "direct-grant-validate-password", + "autheticatorFlow" : false, + "requirement" : "REQUIRED", + "userSetupAllowed" : false, + "priority" : 20 + }, { + "authenticator" : "direct-grant-validate-otp", + "autheticatorFlow" : false, + "requirement" : "OPTIONAL", + "userSetupAllowed" : false, + "priority" : 30 + } ] + } ], + "authenticatorConfig" : [ ], + "requiredActions" : [ { + "alias" : "terms_and_conditions", + "name" : "Terms and Conditions", + "providerId" : "terms_and_conditions", + "enabled" : false, + "defaultAction" : false, + "config" : { } + }, { + "alias" : "UPDATE_PASSWORD", + "name" : "Update Password", + "providerId" : "UPDATE_PASSWORD", + "enabled" : true, + "defaultAction" : false, + "config" : { } + }, { + "alias" : "UPDATE_PROFILE", + "name" : "Update Profile", + "providerId" : "UPDATE_PROFILE", + "enabled" : true, + "defaultAction" : false, + "config" : { } + }, { + "alias" : "CONFIGURE_TOTP", + "name" : "Configure Totp", + "providerId" : "CONFIGURE_TOTP", + "enabled" : true, + "defaultAction" : false, + "config" : { } + }, { + "alias" : "VERIFY_EMAIL", + "name" : "Verify Email", + "providerId" : "VERIFY_EMAIL", + "enabled" : true, + "defaultAction" : false, + "config" : { } + } ], + "browserFlow" : "browser", + "registrationFlow" : "registration", + "directGrantFlow" : "direct grant", + "resetCredentialsFlow" : "reset credentials", + "clientAuthenticationFlow" : "clients" +} \ No newline at end of file diff --git a/testsuite/integration-arquillian/tests/pom.xml b/testsuite/integration-arquillian/tests/pom.xml index cec51ebe6a..2a4b2a8dff 100644 --- a/testsuite/integration-arquillian/tests/pom.xml +++ b/testsuite/integration-arquillian/tests/pom.xml @@ -96,6 +96,31 @@ false + + org.apache.maven.plugins + maven-dependency-plugin + + + unpack-previous + generate-test-resources + + unpack + + + + + org.keycloak.testsuite + ${server.artifactId} + ${project.version} + zip + + + ${containers.home} + true + + + + @@ -348,7 +373,6 @@ org.apache.maven.plugins maven-dependency-plugin - 2.10 unpack @@ -409,7 +433,6 @@ org.apache.maven.plugins maven-dependency-plugin - 2.10 unpack @@ -454,37 +477,12 @@ migration-kc16 - ${containers.home}/keycloak-1.6.0.Final + 1.6.0.Final + integration-arquillian-server-wildfly-kc16 - - org.apache.maven.plugins - maven-dependency-plugin - 2.10 - - - unpack-previous - generate-test-resources - - unpack - - - - - org.keycloak.testsuite - integration-arquillian-server-wildfly-kc16 - ${project.version} - zip - - - ${containers.home} - true - - - - org.apache.maven.plugins maven-surefire-plugin @@ -492,8 +490,9 @@ true true - ${keycloak-1.6.0.Final.home} + ${containers.home}/keycloak-${server.version} src/test/resources/migration-test/migration-realm-16.json + ${server.version} @@ -505,37 +504,12 @@ migration-kc15 - ${containers.home}/keycloak-1.5.1.Final + 1.5.1.Final + integration-arquillian-server-wildfly-kc15 - - org.apache.maven.plugins - maven-dependency-plugin - 2.10 - - - unpack-previous - generate-test-resources - - unpack - - - - - org.keycloak.testsuite - integration-arquillian-server-wildfly-kc15 - ${project.version} - zip - - - ${containers.home} - true - - - - org.apache.maven.plugins maven-surefire-plugin @@ -543,7 +517,7 @@ true true - ${keycloak-1.5.1.Final.home} + ${containers.home}/keycloak-${server.version} @@ -555,37 +529,12 @@ migration-kc14 - ${containers.home}/keycloak-1.4.0.Final + 1.4.0.Final + integration-arquillian-server-wildfly-kc14 - - org.apache.maven.plugins - maven-dependency-plugin - 2.10 - - - unpack-previous - generate-test-resources - - unpack - - - - - org.keycloak.testsuite - integration-arquillian-server-wildfly-kc14 - ${project.version} - zip - - - ${containers.home} - true - - - - org.apache.maven.plugins maven-surefire-plugin @@ -593,7 +542,7 @@ true true - ${keycloak-1.4.0.Final.home} + ${containers.home}/keycloak-${server.version} @@ -605,37 +554,12 @@ migration-kc13 - ${containers.home}/keycloak-1.3.1.Final + 1.3.1.Final + integration-arquillian-server-wildfly-kc13 - - org.apache.maven.plugins - maven-dependency-plugin - 2.10 - - - unpack-previous - generate-test-resources - - unpack - - - - - org.keycloak.testsuite - integration-arquillian-server-wildfly-kc13 - ${project.version} - zip - - - ${containers.home} - true - - - - org.apache.maven.plugins maven-surefire-plugin @@ -643,7 +567,7 @@ true true - ${keycloak-1.3.1.Final.home} + ${containers.home}/keycloak-${server.version} @@ -655,37 +579,12 @@ migration-kc12 - ${containers.home}/keycloak-1.2.0.Final + 1.2.0.Final + integration-arquillian-server-wildfly-kc12 - - org.apache.maven.plugins - maven-dependency-plugin - 2.10 - - - unpack-previous - generate-test-resources - - unpack - - - - - org.keycloak.testsuite - integration-arquillian-server-wildfly-kc12 - ${project.version} - zip - - - ${containers.home} - true - - - - org.apache.maven.plugins maven-surefire-plugin @@ -693,7 +592,7 @@ true true - ${keycloak-1.2.0.Final.home} + ${containers.home}/keycloak-${server.version}