keycloak-aplcache
Changes
testsuite/integration-arquillian/servers/migration/pom.xml 424(+194 -230)
testsuite/integration-arquillian/servers/migration/wildfly_kc13/src/main/xslt/add-dialect-logger.xsl 45(+0 -45)
testsuite/integration-arquillian/servers/migration/wildfly_kc13/src/main/xslt/datasource.xsl 111(+0 -111)
testsuite/integration-arquillian/servers/migration/wildfly_kc14/src/main/xslt/add-dialect-logger.xsl 45(+0 -45)
testsuite/integration-arquillian/servers/migration/wildfly_kc14/src/main/xslt/datasource.xsl 111(+0 -111)
testsuite/integration-arquillian/servers/migration/wildfly_kc15/src/main/xslt/add-dialect-logger.xsl 45(+0 -45)
testsuite/integration-arquillian/servers/migration/wildfly_kc15/src/main/xslt/datasource.xsl 111(+0 -111)
testsuite/integration-arquillian/servers/migration/wildfly_kc16/src/main/xslt/add-dialect-logger.xsl 45(+0 -45)
testsuite/integration-arquillian/servers/migration/wildfly_kc16/src/main/xslt/datasource.xsl 111(+0 -111)
testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/AuthServerTestEnricher.java 40(+14 -26)
testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/migration/MigrationTestExecutionDecider.java 2(+1 -1)
testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/SuiteContext.java 3(+3 -0)
testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/migration/MigrationTest.java 71(+27 -44)
testsuite/integration-arquillian/tests/base/src/test/resources/migration-test/migration-realm-1.9.8.Final.json 836(+538 -298)
testsuite/integration-arquillian/tests/base/src/test/resources/migration-test/migration-realm-15.json 751(+0 -751)
testsuite/integration-arquillian/tests/pom.xml 179(+8 -171)
Details
diff --git a/testsuite/integration-arquillian/pom.xml b/testsuite/integration-arquillian/pom.xml
index 4a4cdce..7bada0c 100644
--- a/testsuite/integration-arquillian/pom.xml
+++ b/testsuite/integration-arquillian/pom.xml
@@ -113,6 +113,10 @@
<artifactId>xml-maven-plugin</artifactId>
<version>1.0.1</version>
</plugin>
+ <plugin>
+ <artifactId>maven-resources-plugin</artifactId>
+ <version>3.0.0</version>
+ </plugin>
</plugins>
</pluginManagement>
</build>
diff --git a/testsuite/integration-arquillian/servers/auth-server/jboss/common/datasource.xsl b/testsuite/integration-arquillian/servers/auth-server/jboss/common/datasource.xsl
index e42a21c..37ce56f 100644
--- a/testsuite/integration-arquillian/servers/auth-server/jboss/common/datasource.xsl
+++ b/testsuite/integration-arquillian/servers/auth-server/jboss/common/datasource.xsl
@@ -17,12 +17,8 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="http://xml.apache.org/xalan"
- xmlns:j="urn:jboss:domain:4.0"
- xmlns:ds="urn:jboss:domain:datasources:4.0"
- xmlns:k="urn:jboss:domain:keycloak:1.1"
- xmlns:sec="urn:jboss:domain:security:1.2"
version="2.0"
- exclude-result-prefixes="xalan j ds k sec">
+ exclude-result-prefixes="xalan">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" xalan:indent-amount="4" standalone="no"/>
<xsl:strip-space elements="*"/>
@@ -47,7 +43,7 @@
<xsl:param name="pool.prefill" select="'true'"/>
<xsl:variable name="newDatasourceDefinition">
- <datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" use-java-context="true">
+ <datasource jndi-name="java:jboss/datasources/KeycloakDS" jta="false" pool-name="KeycloakDS" use-java-context="true">
<connection-url>
<xsl:value-of select="$jdbc.url"/>
</connection-url>
diff --git a/testsuite/integration-arquillian/servers/auth-server/jboss/common/datasource-jdbc-url.xsl b/testsuite/integration-arquillian/servers/auth-server/jboss/common/datasource-jdbc-url.xsl
index 589ee4c..445b973 100644
--- a/testsuite/integration-arquillian/servers/auth-server/jboss/common/datasource-jdbc-url.xsl
+++ b/testsuite/integration-arquillian/servers/auth-server/jboss/common/datasource-jdbc-url.xsl
@@ -1,11 +1,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="http://xml.apache.org/xalan"
- xmlns:j="urn:jboss:domain:4.0"
- xmlns:ds="urn:jboss:domain:datasources:4.0"
- xmlns:k="urn:jboss:domain:keycloak:1.1"
- xmlns:sec="urn:jboss:domain:security:1.2"
version="2.0"
- exclude-result-prefixes="xalan j ds k sec">
+ exclude-result-prefixes="xalan">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" xalan:indent-amount="4" standalone="no"/>
<xsl:strip-space elements="*"/>
testsuite/integration-arquillian/servers/migration/pom.xml 424(+194 -230)
diff --git a/testsuite/integration-arquillian/servers/migration/pom.xml b/testsuite/integration-arquillian/servers/migration/pom.xml
index 6f6301a..b7a5ff9 100644
--- a/testsuite/integration-arquillian/servers/migration/pom.xml
+++ b/testsuite/integration-arquillian/servers/migration/pom.xml
@@ -1,20 +1,20 @@
<?xml version="1.0"?>
<!--
- ~ Copyright 2016 Red Hat, Inc. and/or its affiliates
- ~ and other contributors as indicated by the @author tags.
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -25,231 +25,195 @@
</parent>
<modelVersion>4.0.0</modelVersion>
- <artifactId>integration-arquillian-migration-servers</artifactId>
+ <artifactId>integration-arquillian-migration-server</artifactId>
<packaging>pom</packaging>
- <name>Migration Servers</name>
+ <name>Migration Server</name>
+
+ <properties>
+ <keycloak.server.home>${project.build.directory}/unpacked/keycloak-${migrated.auth.server.version}</keycloak.server.home>
+ <jdbc.mvn.driver.deployment.dir>${keycloak.server.home}/modules/system/layers/base/com/${jdbc.mvn.artifactId}/main</jdbc.mvn.driver.deployment.dir>
+ </properties>
- <profiles>
- <profile>
- <id>migration-kc16</id>
- <modules>
- <module>wildfly_kc16</module>
- </modules>
- </profile>
- <profile>
- <id>migration-kc15</id>
- <modules>
- <module>wildfly_kc15</module>
- </modules>
- </profile>
- <profile>
- <id>migration-kc14</id>
- <modules>
- <module>wildfly_kc14</module>
- </modules>
- </profile>
- <profile>
- <id>migration-kc13</id>
- <modules>
- <module>wildfly_kc13</module>
- </modules>
- </profile>
- <profile>
- <id>migration-kc12</id>
- <modules>
- <module>wildfly_kc12</module>
- </modules>
- </profile>
- </profiles>
-
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-enforcer-plugin</artifactId>
+ <artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-enforcer-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>enforce-properties</id>
+ <goals>
+ <goal>enforce</goal>
+ </goals>
+ <configuration>
+ <rules>
+ <requireProperty>
+ <property>migrated.auth.server.version</property>
+ </requireProperty>
+ <requireProperty>
+ <property>jdbc.mvn.groupId</property>
+ </requireProperty>
+ <requireProperty>
+ <property>jdbc.mvn.artifactId</property>
+ </requireProperty>
+ <requireProperty>
+ <property>jdbc.mvn.version</property>
+ </requireProperty>
+ <requireProperty>
+ <property>keycloak.connectionsJpa.url</property>
+ </requireProperty>
+ <requireProperty>
+ <property>keycloak.connectionsJpa.user</property>
+ </requireProperty>
+ <requireProperty>
+ <property>keycloak.connectionsJpa.password</property>
+ </requireProperty>
+ </rules>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>unpack-server</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>unpack</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.keycloak</groupId>
+ <artifactId>keycloak-server-dist</artifactId>
+ <version>${migrated.auth.server.version}</version>
+ <type>zip</type>
+ <outputDirectory>${project.build.directory}/unpacked</outputDirectory>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ <execution>
+ <id>jdbc-driver</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>${jdbc.mvn.groupId}</groupId>
+ <artifactId>${jdbc.mvn.artifactId}</artifactId>
+ <version>${jdbc.mvn.version}</version>
+ <type>jar</type>
+ </artifactItem>
+ </artifactItems>
+ <outputDirectory>${jdbc.mvn.driver.deployment.dir}</outputDirectory>
+ <overWriteIfNewer>true</overWriteIfNewer>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>xml-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>configure-wildfly-datasource</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>transform</goal>
+ </goals>
+ <configuration>
+ <transformationSets>
+ <!-- create module.xml in modules -->
+ <transformationSet>
+ <dir>${keycloak.server.home}/modules/system/layers/base/com/h2database/h2/main</dir>
+ <stylesheet>src/main/xslt/module.xsl</stylesheet>
+ <includes>
+ <include>module.xml</include>
+ </includes>
+ <outputDir>${jdbc.mvn.driver.deployment.dir}</outputDir>
+ <parameters>
+ <parameter>
+ <name>database</name>
+ <value>${jdbc.mvn.artifactId}</value>
+ </parameter>
+ <parameter>
+ <name>version</name>
+ <value>${jdbc.mvn.version}</value>
+ </parameter>
+ </parameters>
+ </transformationSet>
+ <!-- add datasource to standalone.xml -->
+ <transformationSet>
+ <dir>${keycloak.server.home}/standalone/configuration</dir>
+ <stylesheet>src/main/xslt/datasource.xsl</stylesheet>
+ <includes>
+ <include>standalone.xml</include>
+ </includes>
+ <outputDir>${keycloak.server.home}/standalone/configuration</outputDir>
+ <parameters>
+ <parameter>
+ <name>jdbc.url</name>
+ <value>${keycloak.connectionsJpa.url}</value>
+ </parameter>
+ <parameter>
+ <name>driver</name>
+ <value>${jdbc.mvn.artifactId}</value>
+ </parameter>
+ <parameter>
+ <name>username</name>
+ <value>${keycloak.connectionsJpa.user}</value>
+ </parameter>
+ <parameter>
+ <name>password</name>
+ <value>${keycloak.connectionsJpa.password}</value>
+ </parameter>
+ </parameters>
+ </transformationSet>
+ <!-- add logger for org.hibernate.dialect.Dialect to standalone.xml-->
+ <transformationSet>
+ <dir>${keycloak.server.home}/standalone/configuration</dir>
+ <stylesheet>src/main/xslt/add-dialect-logger.xsl</stylesheet>
+ <includes>
+ <include>standalone.xml</include>
+ </includes>
+ <outputDir>${keycloak.server.home}/standalone/configuration</outputDir>
+ </transformationSet>
+ </transformationSets>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>create-zip</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <configuration>
+ <descriptors>
+ <descriptor>assembly.xml</descriptor>
+ </descriptors>
+ <appendAssemblyId>false</appendAssemblyId>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-deploy-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-enforcer-plugin</artifactId>
- <executions>
- <execution>
- <id>enforce-properties</id>
- <goals>
- <goal>enforce</goal>
- </goals>
- <configuration>
- <rules>
- <requireProperty>
- <property>jdbc.mvn.groupId</property>
- </requireProperty>
- <requireProperty>
- <property>jdbc.mvn.artifactId</property>
- </requireProperty>
- <requireProperty>
- <property>jdbc.mvn.version</property>
- </requireProperty>
- <requireProperty>
- <property>keycloak.connectionsJpa.url</property>
- </requireProperty>
- <requireProperty>
- <property>keycloak.connectionsJpa.user</property>
- </requireProperty>
- <requireProperty>
- <property>keycloak.connectionsJpa.password</property>
- </requireProperty>
- </rules>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <id>unpack-server</id>
- <phase>generate-resources</phase>
- <goals>
- <goal>unpack</goal>
- </goals>
- <configuration>
- <artifactItems>
- <artifactItem>
- <groupId>org.keycloak</groupId>
- <artifactId>keycloak-server-dist</artifactId>
- <version>${server.version}</version>
- <type>zip</type>
- <outputDirectory>${project.build.directory}/unpacked</outputDirectory>
- </artifactItem>
- </artifactItems>
- </configuration>
- </execution>
- <execution>
- <id>jdbc-driver</id>
- <phase>process-resources</phase>
- <goals>
- <goal>copy</goal>
- </goals>
- <configuration>
- <artifactItems>
- <artifactItem>
- <groupId>${jdbc.mvn.groupId}</groupId>
- <artifactId>${jdbc.mvn.artifactId}</artifactId>
- <version>${jdbc.mvn.version}</version>
- <type>jar</type>
- </artifactItem>
- </artifactItems>
- <outputDirectory>${jdbc.mvn.driver.deployment.dir}</outputDirectory>
- <overWriteIfNewer>true</overWriteIfNewer>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>xml-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>configure-wildfly-datasource</id>
- <phase>process-resources</phase>
- <goals>
- <goal>transform</goal>
- </goals>
- <configuration>
- <transformationSets>
- <!-- create module.xml in modules -->
- <transformationSet>
- <dir>${keycloak.server.home}/modules/system/layers/base/com/h2database/h2/main</dir>
- <stylesheet>src/main/xslt/module.xsl</stylesheet>
- <includes>
- <include>module.xml</include>
- </includes>
- <outputDir>${jdbc.mvn.driver.deployment.dir}</outputDir>
- <parameters>
- <parameter>
- <name>database</name>
- <value>${jdbc.mvn.artifactId}</value>
- </parameter>
- <parameter>
- <name>version</name>
- <value>${jdbc.mvn.version}</value>
- </parameter>
- </parameters>
- </transformationSet>
- <!-- add datasource to standalone.xml -->
- <transformationSet>
- <dir>${keycloak.server.home}/standalone/configuration</dir>
- <stylesheet>src/main/xslt/datasource.xsl</stylesheet>
- <includes>
- <include>standalone.xml</include>
- </includes>
- <outputDir>${keycloak.server.home}/standalone/configuration</outputDir>
- <parameters>
- <parameter>
- <name>jdbc.url</name>
- <value>${keycloak.connectionsJpa.url}</value>
- </parameter>
- <parameter>
- <name>driver</name>
- <value>${jdbc.mvn.artifactId}</value>
- </parameter>
- <parameter>
- <name>username</name>
- <value>${keycloak.connectionsJpa.user}</value>
- </parameter>
- <parameter>
- <name>password</name>
- <value>${keycloak.connectionsJpa.password}</value>
- </parameter>
- </parameters>
- </transformationSet>
- <!-- add logger for org.hibernate.dialect.Dialect to standalone.xml-->
- <transformationSet>
- <dir>${keycloak.server.home}/standalone/configuration</dir>
- <stylesheet>src/main/xslt/add-dialect-logger.xsl</stylesheet>
- <includes>
- <include>standalone.xml</include>
- </includes>
- <outputDir>${keycloak.server.home}/standalone/configuration</outputDir>
- </transformationSet>
- </transformationSets>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-assembly-plugin</artifactId>
- <executions>
- <execution>
- <id>create-zip</id>
- <phase>package</phase>
- <goals>
- <goal>single</goal>
- </goals>
- <configuration>
- <descriptors>
- <descriptor>assembly.xml</descriptor>
- </descriptors>
- <appendAssemblyId>false</appendAssemblyId>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </pluginManagement>
</build>
</project>
diff --git a/testsuite/integration-arquillian/tests/base/pom.xml b/testsuite/integration-arquillian/tests/base/pom.xml
index ac85ebd..15594da 100644
--- a/testsuite/integration-arquillian/tests/base/pom.xml
+++ b/testsuite/integration-arquillian/tests/base/pom.xml
@@ -36,8 +36,6 @@
<exclude.console>-</exclude.console>
<exclude.account>-</exclude.account>
<exclude.client>-</exclude.client>
- <!--exclude migration tests by default, enabled by 'migration' profile in tests/pom.xml-->
- <exclude.migration>**/migration/**/*Test.java</exclude.migration>
<!--exclude cluster tests by default, enabled by 'auth-server-*-cluster' profiles in tests/pom.xml-->
<exclude.cluster>**/cluster/**/*Test.java</exclude.cluster>
</properties>
@@ -102,7 +100,6 @@
<exclude>${exclude.console}</exclude>
<exclude>${exclude.account}</exclude>
<exclude>${exclude.client}</exclude>
- <exclude>${exclude.migration}</exclude>
<exclude>${exclude.cluster}</exclude>
</excludes>
</configuration>
@@ -137,6 +134,7 @@
<goal>copy-resources</goal>
</goals>
<configuration>
+ <skip>${skip.add.user.json}</skip>
<outputDirectory>${auth.server.config.dir}</outputDirectory>
<resources>
<resource>
diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/AuthServerTestEnricher.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/AuthServerTestEnricher.java
index 984ba7d..d958e6e 100644
--- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/AuthServerTestEnricher.java
+++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/AuthServerTestEnricher.java
@@ -26,7 +26,7 @@ import org.jboss.arquillian.container.spi.Container;
import org.jboss.arquillian.container.spi.ContainerRegistry;
import org.jboss.arquillian.container.spi.event.StartContainer;
import org.jboss.arquillian.container.spi.event.StartSuiteContainers;
-import org.jboss.arquillian.container.test.api.ContainerController;
+import org.jboss.arquillian.container.spi.event.StopContainer;
import org.jboss.arquillian.core.api.Event;
import org.jboss.arquillian.core.api.Instance;
import org.jboss.arquillian.core.api.InstanceProducer;
@@ -53,10 +53,9 @@ public class AuthServerTestEnricher {
private Instance<ContainerRegistry> containerRegistry;
@Inject
- private Instance<ContainerController> containerController;
-
- @Inject
private Event<StartContainer> startContainerEvent;
+ @Inject
+ private Event<StopContainer> stopContainerEvent;
private static final String AUTH_SERVER_CONTAINER_DEFAULT = "auth-server-undertow";
private static final String AUTH_SERVER_CONTAINER_PROPERTY = "auth.server.container";
@@ -65,8 +64,8 @@ public class AuthServerTestEnricher {
private static final String AUTH_SERVER_CLUSTER_PROPERTY = "auth.server.cluster";
public static final boolean AUTH_SERVER_CLUSTER = Boolean.parseBoolean(System.getProperty(AUTH_SERVER_CLUSTER_PROPERTY, "false"));
- private static final String MIGRATED_AUTH_SERVER_CONTAINER_PROPERTY = "migrated.auth.server.container";
- public static final String MIGRATED_AUTH_SERVER_CONTAINER = System.getProperty(MIGRATED_AUTH_SERVER_CONTAINER_PROPERTY); // == null if migration not enabled
+ private static final String MIGRATION_PROPERTY = "auth.server.jboss.migration";
+ private static final Boolean MIGRATION_ENABLED = Boolean.parseBoolean(System.getProperty(MIGRATION_PROPERTY));
@Inject
@SuiteScoped
@@ -132,23 +131,19 @@ public class AuthServerTestEnricher {
throw new RuntimeException(String.format("No auth server container matching '%sN' found in arquillian.xml.", authServerBackend));
}
- if (MIGRATED_AUTH_SERVER_CONTAINER != null) {
+ if (MIGRATION_ENABLED) {
// init migratedAuthServerInfo
- if (MIGRATED_AUTH_SERVER_CONTAINER.startsWith("migrated-auth-server-")) {
- for (ContainerInfo container : suiteContext.getContainers()) {
- // migrated auth server
- if (container.getQualifier().equals(MIGRATED_AUTH_SERVER_CONTAINER)) {
- updateWithAuthServerInfo(container);
- suiteContext.setMigratedAuthServerInfo(container);
- }
+ for (ContainerInfo container : suiteContext.getContainers()) {
+ // migrated auth server
+ if (container.getQualifier().equals("auth-server-jboss-migration")) {
+ updateWithAuthServerInfo(container);
+ suiteContext.setMigratedAuthServerInfo(container);
}
- } else {
- throw new IllegalArgumentException(String.format("Value of %s should start with 'migrated-auth-server-' prefix.", MIGRATED_AUTH_SERVER_CONTAINER_PROPERTY));
}
// validate setup
if (suiteContext.getMigratedAuthServerInfo() == null) {
throw new RuntimeException(String.format("Migration test was enabled but no auth server from which to migrate was activated. "
- + "A container matching '%s' needs to be enabled in arquillian.xml.", MIGRATED_AUTH_SERVER_CONTAINER));
+ + "A container matching auth-server-jboss-migration needs to be enabled in arquillian.xml."));
}
}
@@ -178,7 +173,8 @@ public class AuthServerTestEnricher {
public void stopMigratedContainer(@Observes(precedence = 1) StartSuiteContainers event) {
if (suiteContext.isAuthServerMigrationEnabled()) {
- containerController.get().stop(suiteContext.getAuthServerInfo().getQualifier());
+ log.info("## STOP old container: " + suiteContext.getMigratedAuthServerInfo().getQualifier());
+ stopContainerEvent.fire(new StopContainer(suiteContext.getMigratedAuthServerInfo().getArquillianContainer()));
}
}
@@ -189,14 +185,6 @@ public class AuthServerTestEnricher {
LogChecker.checkJBossServerLog(jbossHomePath);
}
}
-//
-// public void startAuthServerContainer(@Observes BeforeSuite event) {
-// startContainerEvent.fire(new StartContainer(suiteContext.getAuthServerInfo().getArquillianContainer()));
-// }
-//
-// public void stopAuthServerContainer(@Observes AfterSuite event) {
-// containerController.get().stop(suiteContext.getAuthServerInfo().getQualifier());
-// }
public void initializeTestContext(@Observes(precedence = 2) BeforeClass event) {
TestContext testContext = new TestContext(suiteContext, event.getTestClass().getJavaClass());
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
index 333c5dd..78d26d5 100644
--- 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
@@ -38,7 +38,7 @@ public class MigrationTestExecutionDecider implements TestExecutionDecider {
if (migrationTest && migrationAnnotation != null) {
String versionFrom = migrationAnnotation.versionFrom();
- if (migratedAuthServerVersion.equals(versionFrom)) {
+ if (versionFrom.equals(migratedAuthServerVersion)) {
return ExecutionDecision.execute();
} else {
return ExecutionDecision.dontExecute(method.getName() + "doesn't fit with migration version.");
diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/SuiteContext.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/SuiteContext.java
index 929c23d..d576b49 100644
--- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/SuiteContext.java
+++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/SuiteContext.java
@@ -98,6 +98,9 @@ public final class SuiteContext {
for (ContainerInfo bInfo : getAuthServerBackendsInfo()) {
containers += "Backend: " + bInfo + "\n";
}
+ if (isAuthServerMigrationEnabled()) {
+ containers += "Migrated from: " + System.getProperty("migrated.auth.server.version") + "\n";
+ }
return "SUITE CONTEXT:\n"
+ containers;
}
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
index 78d4faa..1864324 100644
--- 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
@@ -17,69 +17,52 @@
package org.keycloak.testsuite.migration;
import java.util.List;
-import static org.junit.Assert.*;
-import org.junit.Ignore;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
-import org.keycloak.admin.client.resource.ClientsResource;
import org.keycloak.admin.client.resource.RealmResource;
-import org.keycloak.representations.idm.ClientRepresentation;
import org.keycloak.representations.idm.RealmRepresentation;
-import org.keycloak.representations.idm.RoleRepresentation;
import org.keycloak.testsuite.AbstractKeycloakTest;
+import org.keycloak.testsuite.Assert;
import org.keycloak.testsuite.arquillian.migration.Migration;
/**
* @author <a href="mailto:vramik@redhat.com">Vlastislav Ramik</a>
*/
public class MigrationTest extends AbstractKeycloakTest {
-
+
+ private RealmResource realmResource;
+ private RealmRepresentation realmRep;
+
@Override
public void addTestRealms(List<RealmRepresentation> testRealms) {
log.info("Adding no test realms for migration test. Test realm should be migrated from previous vesrion.");
}
- @Test
- @Migration(versionFrom = "1.6.1.Final")
- public void migration16Test() {
- RealmResource realmResource = adminClient.realms().realm("Migration");
- RealmRepresentation realmRep = realmResource.toRepresentation();
- assertEquals("Migration", realmRep.getRealm());
-
- List<RoleRepresentation> realmRoles = realmResource.roles().list();
- assertEquals(1, realmRoles.size());
- assertEquals("offline_access", realmRoles.get(0).getName());
-
- for (ClientRepresentation client : realmResource.clients().findAll()) {
- final String clientId = client.getClientId();
- switch (clientId) {
- case "realm-management":
- assertEquals(13, realmResource.clients().get(client.getId()).roles().list().size());
- break;
- case "security-admin-console":
- assertEquals(0, realmResource.clients().get(client.getId()).roles().list().size());
- break;
- case "broker":
- assertEquals(1, realmResource.clients().get(client.getId()).roles().list().size());
- break;
- case "account":
- assertEquals(2, realmResource.clients().get(client.getId()).roles().list().size());
- break;
- default:
- fail("Migrated realm contains unexpected client " + clientId);
- break;
- }
- }
+ @Before
+ public void beforeMigrationTest() {
+ realmResource = adminClient.realms().realm("Migration");
+ realmRep = realmResource.toRepresentation();
}
@Test
- @Migration(versionFrom = "1.5.1.Final")
- @Ignore
- public void migration15Test() {
- for (RealmRepresentation realm : adminClient.realms().findAll()) {
- System.out.println(realm.getRealm());
- }
+ @Migration(versionFrom = "1.9.8.Final")
+ public void migration198Test() {
+ Assert.assertNames(realmResource.roles().list(), "offline_access", "uma_authorization");
+ Assert.assertNames(realmResource.clients().findAll(), "admin-cli", "realm-management", "security-admin-console", "broker", "account");
//TODO
}
-
+
+ /**
+ * Assumed that there is only one migration test for each version and *remove*
+ * 'Migration' realm from Keycloak after test to be able to run the rest
+ * of the testsuite isolated afterward.
+ */
+ @After
+ public void afterMigrationTest() {
+ log.info("removing '" + realmRep.getRealm() + "' realm");
+ removeRealm(realmRep);
+ }
+
}
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 215da8e..8c996d6 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/resources/arquillian.xml
+++ b/testsuite/integration-arquillian/tests/base/src/test/resources/arquillian.xml
@@ -150,11 +150,11 @@
</configuration>
</container>
- <!-- PREVIOUS VERSIONS OF KEYCLOAK FOR MIGRATION TESTS -->
+ <!-- PREVIOUS VERSION OF KEYCLOAK FOR MIGRATION TESTS -->
- <container qualifier="auth-server-jboss-kc16" mode="manual" >
+ <container qualifier="auth-server-jboss-migration" mode="manual" >
<configuration>
- <property name="enabled">${auth.server.jboss.kc16}</property>
+ <property name="enabled">${auth.server.jboss.migration}</property>
<property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
<property name="jbossHome">${keycloak.migration.home}</property>
<property name="javaVmArguments">
@@ -164,62 +164,10 @@
-Dkeycloak.migration.strategy=OVERWRITE_EXISTING
-Dkeycloak.migration.realmName=Migration
-Djboss.socket.binding.port-offset=${auth.server.port.offset}
- -Xms64m -Xmx512m -XX:MaxPermSize=256m
- </property>
- <property name="managementPort">${auth.server.management.port}</property>
- <property name="startupTimeoutInSeconds">${auth.server.startup.timeout}</property>
- </configuration>
- </container>
-
- <container qualifier="auth-server-jboss-kc15" mode="manual" >
- <configuration>
- <property name="enabled">${auth.server.jboss.kc15}</property>
- <property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
- <property name="jbossHome">${keycloak.migration.home}</property>
- <property name="javaVmArguments">
- -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.memory.settings}
</property>
<property name="managementPort">${auth.server.management.port}</property>
- <property name="startupTimeoutInSeconds">${auth.server.startup.timeout}</property>
- </configuration>
- </container>
-
- <container qualifier="auth-server-jboss-kc14" mode="manual" >
- <configuration>
- <property name="enabled">${auth.server.jboss.kc14}</property>
- <property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
- <property name="jbossHome">${keycloak.migration.home}</property>
- <property name="javaVmArguments">-Djboss.socket.binding.port-offset=${auth.server.port.offset} -Xms64m -Xmx512m -XX:MaxPermSize=256m</property>
- <property name="managementPort">${auth.server.management.port}</property>
- <property name="startupTimeoutInSeconds">${auth.server.startup.timeout}</property>
- </configuration>
- </container>
-
- <container qualifier="auth-server-jboss-kc13" mode="manual" >
- <configuration>
- <property name="enabled">${auth.server.jboss.kc13}</property>
- <property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
- <property name="jbossHome">${keycloak.migration.home}</property>
- <property name="javaVmArguments">-Djboss.socket.binding.port-offset=${auth.server.port.offset} -Xms64m -Xmx512m -XX:MaxPermSize=256m</property>
- <property name="managementPort">${auth.server.management.port}</property>
- <property name="startupTimeoutInSeconds">${auth.server.startup.timeout}</property>
- </configuration>
- </container>
-
- <container qualifier="auth-server-jboss-kc12" mode="manual" >
- <configuration>
- <property name="enabled">${auth.server.jboss.kc12}</property>
- <property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
- <property name="jbossHome">${keycloak.migration.home}</property>
- <property name="javaVmArguments">-Djboss.socket.binding.port-offset=${auth.server.port.offset} -Xms64m -Xmx512m -XX:MaxPermSize=256m</property>
- <property name="managementPort">${auth.server.management.port}</property>
- <property name="startupTimeoutInSeconds">${auth.server.startup.timeout}</property>
+ <property name="startupTimeoutInSeconds">${auth.server.jboss.startup.timeout}</property>
</configuration>
</container>
testsuite/integration-arquillian/tests/pom.xml 179(+8 -171)
diff --git a/testsuite/integration-arquillian/tests/pom.xml b/testsuite/integration-arquillian/tests/pom.xml
index 3220be5..3e97fc1 100755
--- a/testsuite/integration-arquillian/tests/pom.xml
+++ b/testsuite/integration-arquillian/tests/pom.xml
@@ -54,7 +54,6 @@
<auth.server.management.port>10090</auth.server.management.port>
<auth.server.management.port.jmx>10099</auth.server.management.port.jmx>
<auth.server.ssl.required>false</auth.server.ssl.required>
- <auth.server.jboss.startup.timeout>60</auth.server.jboss.startup.timeout>
<auth.server.memory.settings>-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m</auth.server.memory.settings>
<auth.server.config.property.name>serverConfig</auth.server.config.property.name>
<auth.server.adapter.impl.class>org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</auth.server.adapter.impl.class>
@@ -76,6 +75,7 @@
<testsuite.constants>${project.build.directory}/dependency/test-constants.properties</testsuite.constants>
+ <skip.add.user.json>false</skip.add.user.json>
</properties>
<build>
@@ -116,6 +116,7 @@
<goal>copy-resources</goal>
</goals>
<configuration>
+ <skip>${skip.add.user.json}</skip>
<outputDirectory>${auth.server.config.dir}</outputDirectory>
<resources>
<resource>
@@ -402,7 +403,7 @@
</build>
</profile>
- <!-- Profiles for migration tests-->
+ <!-- Profile for migration tests-->
<profile>
<id>migration</id>
@@ -411,31 +412,9 @@
<name>migrated.auth.server.version</name>
</property>
</activation>
- <properties>
- <!--diable exclusion pattern for migration tests, which is enabled by default in the base/pom.xml-->
- <exclude.migration>-</exclude.migration>
- </properties>
<build>
<plugins>
<plugin>
- <artifactId>maven-enforcer-plugin</artifactId>
- <executions>
- <execution>
- <id>enforce-properties</id>
- <goals>
- <goal>enforce</goal>
- </goals>
- <configuration>
- <rules>
- <requireProperty>
- <property>migrated.auth.server.version</property>
- </requireProperty>
- </rules>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
@@ -448,7 +427,7 @@
<artifactItems>
<artifactItem>
<groupId>org.keycloak.testsuite</groupId>
- <artifactId>${migrated.auth.server.jboss.artifactId}</artifactId>
+ <artifactId>integration-arquillian-migration-server</artifactId>
<version>${project.version}</version>
<type>zip</type>
</artifactItem>
@@ -464,158 +443,16 @@
<configuration>
<systemPropertyVariables>
<migrated.auth.server.version>${migrated.auth.server.version}</migrated.auth.server.version>
+ <auth.server.jboss.migration>true</auth.server.jboss.migration>
+ <keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
+ <keycloak.migration.file>src/test/resources/migration-test/migration-realm-${migrated.auth.server.version}.json</keycloak.migration.file>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
</profile>
-
- <profile>
- <id>migration-kc16</id>
- <activation>
- <property>
- <name>migrated.auth.server.version</name>
- <value>1.6.1.Final</value>
- </property>
- </activation>
- <properties>
- <migrated.auth.server.jboss.artifactId>integration-arquillian-server-wildfly-kc16</migrated.auth.server.jboss.artifactId>
- </properties>
- <build>
- <pluginManagement>
- <plugins>
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <systemPropertyVariables>
- <auth.server.jboss.kc16>true</auth.server.jboss.kc16>
- <keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
- <keycloak.migration.file>src/test/resources/migration-test/migration-realm-16.json</keycloak.migration.file>
- </systemPropertyVariables>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
- </profile>
-
- <profile>
- <id>migration-kc15</id>
- <activation>
- <property>
- <name>migrated.auth.server.version</name>
- <value>1.5.1.Final</value>
- </property>
- </activation>
- <properties>
- <migrated.auth.server.jboss.artifactId>integration-arquillian-server-wildfly-kc15</migrated.auth.server.jboss.artifactId>
- </properties>
- <build>
- <pluginManagement>
- <plugins>
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <systemPropertyVariables>
- <auth.server.jboss.kc15>true</auth.server.jboss.kc15>
- <keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
- <keycloak.migration.file>src/test/resources/migration-test/migration-realm-15.json</keycloak.migration.file>
- </systemPropertyVariables>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
- </profile>
-
- <profile>
- <id>migration-kc14</id>
- <activation>
- <property>
- <name>migrated.auth.server.version</name>
- <value>1.4.0.Final</value>
- </property>
- </activation>
- <properties>
- <migrated.auth.server.jboss.artifactId>integration-arquillian-server-wildfly-kc14</migrated.auth.server.jboss.artifactId>
- </properties>
- <build>
- <pluginManagement>
- <plugins>
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <systemPropertyVariables>
- <auth.server.jboss.kc14>true</auth.server.jboss.kc14>
- <keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
- </systemPropertyVariables>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
- </profile>
-
- <profile>
- <id>migration-kc13</id>
- <activation>
- <property>
- <name>migrated.auth.server.version</name>
- <value>1.3.1.Final</value>
- </property>
- </activation>
- <properties>
- <migrated.auth.server.jboss.artifactId>integration-arquillian-server-wildfly-kc13</migrated.auth.server.jboss.artifactId>
- </properties>
- <build>
- <pluginManagement>
- <plugins>
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <systemPropertyVariables>
- <auth.server.jboss.kc13>true</auth.server.jboss.kc13>
- <keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
- </systemPropertyVariables>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
- </profile>
-
- <profile>
- <id>migration-kc12</id>
- <activation>
- <property>
- <name>migrated.auth.server.version</name>
- <value>1.2.0.Final</value>
- </property>
- </activation>
- <properties>
- <migrated.auth.server.jboss.artifactId>integration-arquillian-server-wildfly-kc12</migrated.auth.server.jboss.artifactId>
- </properties>
- <build>
- <pluginManagement>
- <plugins>
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <systemPropertyVariables>
- <auth.server.jboss.kc12>true</auth.server.jboss.kc12>
- <keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
- </systemPropertyVariables>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
- </profile>
-
-
-
-
+
<profile>
<id>no-account</id>
<properties>