Fix KeycloakQuarkusServerDeployableContainer to correctly configure map store
Closes #13721
This commit is contained in:
parent
1445646e77
commit
ab431e3bd9
5 changed files with 42 additions and 15 deletions
|
@ -54,7 +54,7 @@ import org.keycloak.testsuite.arquillian.SuiteContext;
|
||||||
public class KeycloakQuarkusServerDeployableContainer implements DeployableContainer<KeycloakQuarkusConfiguration> {
|
public class KeycloakQuarkusServerDeployableContainer implements DeployableContainer<KeycloakQuarkusConfiguration> {
|
||||||
|
|
||||||
private static final int DEFAULT_SHUTDOWN_TIMEOUT_SECONDS = 10;
|
private static final int DEFAULT_SHUTDOWN_TIMEOUT_SECONDS = 10;
|
||||||
private static final String AUTH_SERVER_QUARKUS_MAP_STORAGE_PROFILE = "auth.server.quarkus.mapStorage.profile";
|
private static final String AUTH_SERVER_QUARKUS_MAP_STORAGE_PROFILE = "auth.server.quarkus.mapStorage.profile.config";
|
||||||
|
|
||||||
private static final Logger log = Logger.getLogger(KeycloakQuarkusServerDeployableContainer.class);
|
private static final Logger log = Logger.getLogger(KeycloakQuarkusServerDeployableContainer.class);
|
||||||
|
|
||||||
|
@ -247,6 +247,14 @@ public class KeycloakQuarkusServerDeployableContainer implements DeployableConta
|
||||||
String mapStorageProfile = System.getProperty(AUTH_SERVER_QUARKUS_MAP_STORAGE_PROFILE);
|
String mapStorageProfile = System.getProperty(AUTH_SERVER_QUARKUS_MAP_STORAGE_PROFILE);
|
||||||
|
|
||||||
if (mapStorageProfile != null) {
|
if (mapStorageProfile != null) {
|
||||||
|
// We need to drop optimized flag because --storage is build option therefore startup requires re-augmentation
|
||||||
|
commands.removeIf("--optimized"::equals);
|
||||||
|
|
||||||
|
// As config is re-augmented on startup we need to also add --http-relative-path as ant build from
|
||||||
|
// integration-arquillian/servers/auth-server/quarkus/ant/configure.xml is replaced by build invoked on
|
||||||
|
// startup when we add new build option below
|
||||||
|
commands.add("--http-relative-path=/auth");
|
||||||
|
|
||||||
switch (mapStorageProfile) {
|
switch (mapStorageProfile) {
|
||||||
case "chm":
|
case "chm":
|
||||||
commands.add("--storage=" + mapStorageProfile);
|
commands.add("--storage=" + mapStorageProfile);
|
||||||
|
@ -256,6 +264,7 @@ public class KeycloakQuarkusServerDeployableContainer implements DeployableConta
|
||||||
commands.add("--db-username=" + System.getProperty("keycloak.map.storage.connectionsJpa.url"));
|
commands.add("--db-username=" + System.getProperty("keycloak.map.storage.connectionsJpa.url"));
|
||||||
commands.add("--db-password=" + System.getProperty("keycloak.map.storage.connectionsJpa.user"));
|
commands.add("--db-password=" + System.getProperty("keycloak.map.storage.connectionsJpa.user"));
|
||||||
commands.add("--db-url=" + System.getProperty("keycloak.map.storage.connectionsJpa.password"));
|
commands.add("--db-url=" + System.getProperty("keycloak.map.storage.connectionsJpa.password"));
|
||||||
|
break;
|
||||||
case "hotrod":
|
case "hotrod":
|
||||||
commands.add("--storage=" + mapStorageProfile);
|
commands.add("--storage=" + mapStorageProfile);
|
||||||
// TODO: URL / username / password
|
// TODO: URL / username / password
|
||||||
|
|
|
@ -366,17 +366,21 @@ public class PermissionsTest extends AbstractKeycloakTest {
|
||||||
response.set(realm.partialImport(new PartialImportRepresentation()));
|
response.set(realm.partialImport(new PartialImportRepresentation()));
|
||||||
}
|
}
|
||||||
}, Resource.REALM, true);
|
}, Resource.REALM, true);
|
||||||
invoke(new Invocation() {
|
|
||||||
public void invoke(RealmResource realm) {
|
|
||||||
realm.clearRealmCache();
|
|
||||||
}
|
|
||||||
}, Resource.REALM, true);
|
|
||||||
invoke(new Invocation() {
|
|
||||||
public void invoke(RealmResource realm) {
|
|
||||||
realm.clearUserCache();
|
|
||||||
}
|
|
||||||
}, Resource.REALM, true);
|
|
||||||
|
|
||||||
|
if (isJpaRealmProvider()) {
|
||||||
|
// Caching is disabled with the new store, we need to skip these invocations
|
||||||
|
invoke(new Invocation() {
|
||||||
|
public void invoke(RealmResource realm) {
|
||||||
|
realm.clearRealmCache();
|
||||||
|
}
|
||||||
|
}, Resource.REALM, true);
|
||||||
|
invoke(new Invocation() {
|
||||||
|
public void invoke(RealmResource realm) {
|
||||||
|
realm.clearUserCache();
|
||||||
|
}
|
||||||
|
}, Resource.REALM, true);
|
||||||
|
|
||||||
|
}
|
||||||
// Delete realm
|
// Delete realm
|
||||||
invoke(new Invocation() {
|
invoke(new Invocation() {
|
||||||
public void invoke(RealmResource realm) {
|
public void invoke(RealmResource realm) {
|
||||||
|
|
|
@ -64,9 +64,11 @@ public class ServerInfoTest extends AbstractKeycloakTest {
|
||||||
assertNotNull(info.getSystemInfo().getServerTime());
|
assertNotNull(info.getSystemInfo().getServerTime());
|
||||||
assertNotNull(info.getSystemInfo().getUptime());
|
assertNotNull(info.getSystemInfo().getUptime());
|
||||||
|
|
||||||
Map<String, ProviderRepresentation> jpaProviders = info.getProviders().get("connectionsJpa").getProviders();
|
if (isJpaRealmProvider()) {
|
||||||
ProviderRepresentation jpaProvider = jpaProviders.values().iterator().next();
|
Map<String, ProviderRepresentation> jpaProviders = info.getProviders().get("connectionsJpa").getProviders();
|
||||||
log.infof("JPA Connections provider info: %s", jpaProvider.getOperationalInfo());
|
ProviderRepresentation jpaProvider = jpaProviders.values().iterator().next();
|
||||||
|
log.infof("JPA Connections provider info: %s", jpaProvider.getOperationalInfo());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -17,10 +17,13 @@
|
||||||
|
|
||||||
package org.keycloak.testsuite.domainextension;
|
package org.keycloak.testsuite.domainextension;
|
||||||
|
|
||||||
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.keycloak.common.Profile;
|
||||||
import org.keycloak.representations.idm.RealmRepresentation;
|
import org.keycloak.representations.idm.RealmRepresentation;
|
||||||
import org.keycloak.testsuite.AbstractKeycloakTest;
|
import org.keycloak.testsuite.AbstractKeycloakTest;
|
||||||
import org.keycloak.testsuite.Assert;
|
import org.keycloak.testsuite.Assert;
|
||||||
|
import org.keycloak.testsuite.ProfileAssume;
|
||||||
import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude;
|
import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude;
|
||||||
import org.keycloak.testsuite.client.resources.TestExampleCompanyResource;
|
import org.keycloak.testsuite.client.resources.TestExampleCompanyResource;
|
||||||
import org.keycloak.testsuite.util.RealmBuilder;
|
import org.keycloak.testsuite.util.RealmBuilder;
|
||||||
|
@ -47,6 +50,11 @@ public class CustomExtensionTest extends AbstractKeycloakTest {
|
||||||
testRealms.add(foo);
|
testRealms.add(foo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void checkNotMapStorage() {
|
||||||
|
ProfileAssume.assumeFeatureDisabled(Profile.Feature.MAP_STORAGE);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDomainExtension() throws Exception {
|
public void testDomainExtension() throws Exception {
|
||||||
companyResource().createCompany("foo", buildCompany("foo-company"));
|
companyResource().createCompany("foo", buildCompany("foo-company"));
|
||||||
|
|
|
@ -190,7 +190,11 @@ public class DeployedScriptAuthenticatorTest extends AbstractFlowTest {
|
||||||
|
|
||||||
loginPage.login("user", "password");
|
loginPage.login("user", "password");
|
||||||
|
|
||||||
events.expectLogin().user("user").detail(Details.USERNAME, "user").assertEvent();
|
events.expectLogin().user(okayUser()).detail(Details.USERNAME, "user").assertEvent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private UserRepresentation okayUser() {
|
||||||
|
return adminClient.realm(TEST_REALM_NAME).users().search("user", true).get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue