keycloak-aplcache
Changes
export-import/export-import-api/src/main/java/org/keycloak/exportimport/util/ImportUtils.java 70(+5 -65)
model/invalidation-cache/infinispan/src/main/java/org/keycloak/models/cache/infinispan/RealmAdapter.java 2(+1 -1)
Details
diff --git a/export-import/export-import-api/src/main/java/org/keycloak/exportimport/util/ImportUtils.java b/export-import/export-import-api/src/main/java/org/keycloak/exportimport/util/ImportUtils.java
index 2cad3c1..b0827b1 100755
--- a/export-import/export-import-api/src/main/java/org/keycloak/exportimport/util/ImportUtils.java
+++ b/export-import/export-import-api/src/main/java/org/keycloak/exportimport/util/ImportUtils.java
@@ -14,6 +14,7 @@ import org.keycloak.models.RealmModel;
import org.keycloak.models.RealmProvider;
import org.keycloak.models.RoleModel;
import org.keycloak.models.utils.KeycloakModelUtils;
+import org.keycloak.models.utils.RealmImporter;
import org.keycloak.models.utils.RepresentationToModel;
import org.keycloak.representations.idm.RealmRepresentation;
import org.keycloak.representations.idm.UserRepresentation;
@@ -76,11 +77,8 @@ public class ImportUtils {
}
}
- realm = rep.getId() != null ? model.createRealm(rep.getId(), realmName) : model.createRealm(realmName);
-
- RepresentationToModel.importRealm(session, rep, realm);
-
- refreshMasterAdminApps(model, realm);
+ RealmImporter realmManager = session.getContext().getRealmManager();
+ realm = realmManager.importRealm(rep);
if (System.getProperty(ExportImportConfig.ACTION) != null) {
logger.infof("Realm '%s' imported", realmName);
@@ -89,64 +87,6 @@ public class ImportUtils {
return;
}
- private static void refreshMasterAdminApps(RealmProvider model, RealmModel realm) {
- String adminRealmId = Config.getAdminRealm();
- if (adminRealmId.equals(realm.getId())) {
- // We just imported master realm. All 'masterAdminApps' need to be refreshed
- RealmModel adminRealm = realm;
- for (RealmModel currentRealm : model.getRealms()) {
- ClientModel masterApp = adminRealm.getClientByClientId(KeycloakModelUtils.getMasterRealmAdminApplicationClientId(currentRealm));
- if (masterApp != null) {
- currentRealm.setMasterAdminClient(masterApp);
- } else {
- setupMasterAdminManagement(model, currentRealm);
- }
- }
- } else {
- // Need to refresh masterApp for current realm
- RealmModel adminRealm = model.getRealm(adminRealmId);
- ClientModel masterApp = adminRealm.getClientByClientId(KeycloakModelUtils.getMasterRealmAdminApplicationClientId(realm));
- if (masterApp != null) {
- realm.setMasterAdminClient(masterApp);
- } else {
- setupMasterAdminManagement(model, realm);
- }
- }
- }
-
- // TODO: We need method here, so we are able to refresh masterAdmin applications after import. Should be RealmManager moved to model/api instead?
- public static void setupMasterAdminManagement(RealmProvider model, RealmModel realm) {
- RealmModel adminRealm;
- RoleModel adminRole;
-
- if (realm.getName().equals(Config.getAdminRealm())) {
- adminRealm = realm;
-
- adminRole = realm.addRole(AdminRoles.ADMIN);
-
- RoleModel createRealmRole = realm.addRole(AdminRoles.CREATE_REALM);
- adminRole.addCompositeRole(createRealmRole);
- createRealmRole.setDescription("${role_"+AdminRoles.CREATE_REALM+"}");
- } else {
- adminRealm = model.getRealmByName(Config.getAdminRealm());
- adminRole = adminRealm.getRole(AdminRoles.ADMIN);
- }
- adminRole.setDescription("${role_"+AdminRoles.ADMIN+"}");
-
- ClientModel realmAdminApp = KeycloakModelUtils.createClient(adminRealm, KeycloakModelUtils.getMasterRealmAdminApplicationClientId(realm));
- // No localized name for now
- realmAdminApp.setName(realm.getName() + " Realm");
- realmAdminApp.setBearerOnly(true);
- realm.setMasterAdminClient(realmAdminApp);
-
- for (String r : AdminRoles.ALL_REALM_ROLES) {
- RoleModel role = realmAdminApp.addRole(r);
- role.setDescription("${role_"+r+"}");
- adminRole.addCompositeRole(role);
- }
- }
-
-
/**
* Fully import realm (or more realms from particular stream)
*
@@ -187,12 +127,12 @@ public class ImportUtils {
}
for (RealmRepresentation realmRep : realmReps) {
- result.put(realmRep.getId(), realmRep);
+ result.put(realmRep.getRealm(), realmRep);
}
} else if (parser.getCurrentToken() == JsonToken.START_OBJECT) {
// Case with single realm in stream
RealmRepresentation realmRep = parser.readValueAs(RealmRepresentation.class);
- result.put(realmRep.getId(), realmRep);
+ result.put(realmRep.getRealm(), realmRep);
}
} finally {
parser.close();
diff --git a/model/api/src/main/java/org/keycloak/models/ImpersonationConstants.java b/model/api/src/main/java/org/keycloak/models/ImpersonationConstants.java
index 99f08d1..274e7a6 100755
--- a/model/api/src/main/java/org/keycloak/models/ImpersonationConstants.java
+++ b/model/api/src/main/java/org/keycloak/models/ImpersonationConstants.java
@@ -22,7 +22,7 @@ public class ImpersonationConstants {
adminRealm = model.getRealmByName(Config.getAdminRealm());
adminRole = adminRealm.getRole(AdminRoles.ADMIN);
}
- ClientModel realmAdminApp = adminRealm.getClientByClientId(KeycloakModelUtils.getMasterRealmAdminApplicationClientId(realm));
+ ClientModel realmAdminApp = adminRealm.getClientByClientId(KeycloakModelUtils.getMasterRealmAdminApplicationClientId(realm.getName()));
if (realmAdminApp.getRole(IMPERSONATION_ROLE) != null) return;
RoleModel impersonationRole = realmAdminApp.addRole(IMPERSONATION_ROLE);
impersonationRole.setDescription("${role_" + IMPERSONATION_ROLE + "}");
diff --git a/model/api/src/main/java/org/keycloak/models/KeycloakContext.java b/model/api/src/main/java/org/keycloak/models/KeycloakContext.java
index 0714b4f..760ffe4 100755
--- a/model/api/src/main/java/org/keycloak/models/KeycloakContext.java
+++ b/model/api/src/main/java/org/keycloak/models/KeycloakContext.java
@@ -1,6 +1,7 @@
package org.keycloak.models;
import org.keycloak.ClientConnection;
+import org.keycloak.models.utils.RealmImporter;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.UriInfo;
@@ -30,4 +31,6 @@ public interface KeycloakContext {
void setConnection(ClientConnection connection);
+ RealmImporter getRealmManager();
+
}
diff --git a/model/api/src/main/java/org/keycloak/models/utils/KeycloakModelUtils.java b/model/api/src/main/java/org/keycloak/models/utils/KeycloakModelUtils.java
index a2f5356..79a9b12 100755
--- a/model/api/src/main/java/org/keycloak/models/utils/KeycloakModelUtils.java
+++ b/model/api/src/main/java/org/keycloak/models/utils/KeycloakModelUtils.java
@@ -257,8 +257,8 @@ public final class KeycloakModelUtils {
}
}
- public static String getMasterRealmAdminApplicationClientId(RealmModel realm) {
- return realm.getName() + "-realm";
+ public static String getMasterRealmAdminApplicationClientId(String realmName) {
+ return realmName + "-realm";
}
/**
diff --git a/model/api/src/main/java/org/keycloak/models/utils/RealmImporter.java b/model/api/src/main/java/org/keycloak/models/utils/RealmImporter.java
new file mode 100644
index 0000000..a655a96
--- /dev/null
+++ b/model/api/src/main/java/org/keycloak/models/utils/RealmImporter.java
@@ -0,0 +1,14 @@
+package org.keycloak.models.utils;
+
+import org.keycloak.models.RealmModel;
+import org.keycloak.representations.idm.RealmRepresentation;
+
+/**
+ * Helper interface used just because RealmManager is in keycloak-services and not accessible for ImportUtils
+ *
+ * @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
+ */
+public interface RealmImporter {
+
+ RealmModel importRealm(RealmRepresentation rep);
+}
diff --git a/model/invalidation-cache/infinispan/src/main/java/org/keycloak/models/cache/infinispan/RealmAdapter.java b/model/invalidation-cache/infinispan/src/main/java/org/keycloak/models/cache/infinispan/RealmAdapter.java
index eb43180..54700e2 100755
--- a/model/invalidation-cache/infinispan/src/main/java/org/keycloak/models/cache/infinispan/RealmAdapter.java
+++ b/model/invalidation-cache/infinispan/src/main/java/org/keycloak/models/cache/infinispan/RealmAdapter.java
@@ -779,7 +779,7 @@ public class RealmAdapter implements RealmModel {
@Override
public ClientModel getMasterAdminClient() {
- return cacheSession.getRealm(Config.getAdminRealm()).getClientById(cached.getMasterAdminClient());
+ return cached.getMasterAdminClient()==null ? null : cacheSession.getRealm(Config.getAdminRealm()).getClientById(cached.getMasterAdminClient());
}
@Override
diff --git a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedRealm.java b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedRealm.java
index 2546796..3d96870 100755
--- a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedRealm.java
+++ b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedRealm.java
@@ -187,7 +187,8 @@ public class CachedRealm implements Serializable {
adminEventsDetailsEnabled = model.isAdminEventsDetailsEnabled();
defaultRoles.addAll(model.getDefaultRoles());
- masterAdminClient = model.getMasterAdminClient().getId();
+ ClientModel masterAdminClient = model.getMasterAdminClient();
+ this.masterAdminClient = (masterAdminClient != null) ? masterAdminClient.getId() : null;
for (RoleModel role : model.getRoles()) {
realmRoles.put(role.getName(), role.getId());
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java b/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java
index cb6f19d..2d099d6 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java
@@ -1171,7 +1171,8 @@ public class RealmAdapter implements RealmModel {
@Override
public ClientModel getMasterAdminClient() {
- return new ClientAdapter(this, em, session, realm.getMasterAdminClient());
+ ClientEntity client = realm.getMasterAdminClient();
+ return client!=null ? new ClientAdapter(this, em, session, realm.getMasterAdminClient()) : null;
}
@Override
diff --git a/services/src/main/java/org/keycloak/exportimport/ExportImportManager.java b/services/src/main/java/org/keycloak/exportimport/ExportImportManager.java
index 540ef2c..89dc097 100644
--- a/services/src/main/java/org/keycloak/exportimport/ExportImportManager.java
+++ b/services/src/main/java/org/keycloak/exportimport/ExportImportManager.java
@@ -35,14 +35,18 @@ public class ExportImportManager {
if (export) {
ExportProvider exportProvider = session.getProvider(ExportProvider.class, exportImportProviderId);
- if (realmName == null) {
- logger.info("Full model export requested");
- exportProvider.exportModel(sessionFactory);
+ if (exportProvider == null) {
+ logger.errorf("Invalid Export Provider %s", exportImportProviderId);
} else {
- logger.infof("Export of realm '%s' requested", realmName);
- exportProvider.exportRealm(sessionFactory, realmName);
+ if (realmName == null) {
+ logger.info("Full model export requested");
+ exportProvider.exportModel(sessionFactory);
+ } else {
+ logger.infof("Export of realm '%s' requested", realmName);
+ exportProvider.exportRealm(sessionFactory, realmName);
+ }
+ logger.info("Export finished successfully");
}
- logger.info("Export finished successfully");
} else {
ImportProvider importProvider = session.getProvider(ImportProvider.class, exportImportProviderId);
diff --git a/services/src/main/java/org/keycloak/services/DefaultKeycloakContext.java b/services/src/main/java/org/keycloak/services/DefaultKeycloakContext.java
index 06dc86c..665662d 100755
--- a/services/src/main/java/org/keycloak/services/DefaultKeycloakContext.java
+++ b/services/src/main/java/org/keycloak/services/DefaultKeycloakContext.java
@@ -4,7 +4,10 @@ import org.jboss.resteasy.spi.ResteasyProviderFactory;
import org.keycloak.ClientConnection;
import org.keycloak.models.ClientModel;
import org.keycloak.models.KeycloakContext;
+import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
+import org.keycloak.models.utils.RealmImporter;
+import org.keycloak.services.managers.RealmManager;
import org.keycloak.services.resources.KeycloakApplication;
import javax.ws.rs.core.HttpHeaders;
@@ -21,6 +24,12 @@ public class DefaultKeycloakContext implements KeycloakContext {
private ClientConnection connection;
+ private KeycloakSession session;
+
+ public DefaultKeycloakContext(KeycloakSession session) {
+ this.session = session;
+ }
+
@Override
public String getContextPath() {
KeycloakApplication app = getContextObject(KeycloakApplication.class);
@@ -71,4 +80,11 @@ public class DefaultKeycloakContext implements KeycloakContext {
public void setConnection(ClientConnection connection) {
this.connection = connection;
}
+
+ @Override
+ public RealmImporter getRealmManager() {
+ RealmManager manager = new RealmManager(session);
+ manager.setContextPath(getContextPath());
+ return manager;
+ }
}
diff --git a/services/src/main/java/org/keycloak/services/DefaultKeycloakSession.java b/services/src/main/java/org/keycloak/services/DefaultKeycloakSession.java
index 8588a53..de996c3 100755
--- a/services/src/main/java/org/keycloak/services/DefaultKeycloakSession.java
+++ b/services/src/main/java/org/keycloak/services/DefaultKeycloakSession.java
@@ -46,7 +46,7 @@ public class DefaultKeycloakSession implements KeycloakSession {
this.factory = factory;
this.transactionManager = new DefaultKeycloakTransactionManager();
federationManager = new UserFederationManager(this);
- context = new DefaultKeycloakContext();
+ context = new DefaultKeycloakContext(this);
}
@Override
diff --git a/services/src/main/java/org/keycloak/services/managers/RealmManager.java b/services/src/main/java/org/keycloak/services/managers/RealmManager.java
index a445113..bb582af 100755
--- a/services/src/main/java/org/keycloak/services/managers/RealmManager.java
+++ b/services/src/main/java/org/keycloak/services/managers/RealmManager.java
@@ -3,7 +3,7 @@ package org.keycloak.services.managers;
import org.jboss.logging.Logger;
import org.keycloak.Config;
import org.keycloak.enums.SslRequired;
-import org.keycloak.exportimport.util.ImportUtils;
+import org.keycloak.models.utils.RealmImporter;
import org.keycloak.models.AccountRoles;
import org.keycloak.models.AdminRoles;
import org.keycloak.models.ClientModel;
@@ -39,7 +39,7 @@ import java.util.List;
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
-public class RealmManager {
+public class RealmManager implements RealmImporter {
protected static final Logger logger = Logger.getLogger(RealmManager.class);
protected KeycloakSession session;
@@ -161,7 +161,9 @@ public class RealmManager {
boolean removed = model.removeRealm(realm.getId());
if (removed) {
- new ClientManager(this).removeClient(getKeycloakAdminstrationRealm(), realm.getMasterAdminClient());
+ if (realm.getMasterAdminClient() != null) {
+ new ClientManager(this).removeClient(getKeycloakAdminstrationRealm(), realm.getMasterAdminClient());
+ }
UserSessionProvider sessions = session.sessions();
if (sessions != null) {
@@ -191,9 +193,47 @@ public class RealmManager {
realm.setAdminEventsDetailsEnabled(rep.isAdminEventsDetailsEnabled());
}
- // Should be RealmManager moved to model/api instead of referencing methods this way?
private void setupMasterAdminManagement(RealmModel realm) {
- ImportUtils.setupMasterAdminManagement(model, realm);
+ // Need to refresh masterApp for current realm
+ String adminRealmId = Config.getAdminRealm();
+ RealmModel adminRealm = model.getRealm(adminRealmId);
+ ClientModel masterApp = adminRealm.getClientByClientId(KeycloakModelUtils.getMasterRealmAdminApplicationClientId(realm.getName()));
+ if (masterApp != null) {
+ realm.setMasterAdminClient(masterApp);
+ } else {
+ createMasterAdminManagement(model, realm);
+ }
+ }
+
+ private void createMasterAdminManagement(RealmProvider model, RealmModel realm) {
+ RealmModel adminRealm;
+ RoleModel adminRole;
+
+ if (realm.getName().equals(Config.getAdminRealm())) {
+ adminRealm = realm;
+
+ adminRole = realm.addRole(AdminRoles.ADMIN);
+
+ RoleModel createRealmRole = realm.addRole(AdminRoles.CREATE_REALM);
+ adminRole.addCompositeRole(createRealmRole);
+ createRealmRole.setDescription("${role_"+AdminRoles.CREATE_REALM+"}");
+ } else {
+ adminRealm = model.getRealmByName(Config.getAdminRealm());
+ adminRole = adminRealm.getRole(AdminRoles.ADMIN);
+ }
+ adminRole.setDescription("${role_"+AdminRoles.ADMIN+"}");
+
+ ClientModel realmAdminApp = KeycloakModelUtils.createClient(adminRealm, KeycloakModelUtils.getMasterRealmAdminApplicationClientId(realm.getName()));
+ // No localized name for now
+ realmAdminApp.setName(realm.getName() + " Realm");
+ realmAdminApp.setBearerOnly(true);
+ realm.setMasterAdminClient(realmAdminApp);
+
+ for (String r : AdminRoles.ALL_REALM_ROLES) {
+ RoleModel role = realmAdminApp.addRole(r);
+ role.setDescription("${role_"+r+"}");
+ adminRole.addCompositeRole(role);
+ }
}
private void setupRealmAdminManagement(RealmModel realm) {
@@ -257,6 +297,7 @@ public class RealmManager {
}
}
+ @Override
public RealmModel importRealm(RealmRepresentation rep) {
String id = rep.getId();
if (id == null) {
@@ -268,7 +309,12 @@ public class RealmManager {
// setup defaults
setupRealmDefaults(realm);
- setupMasterAdminManagement(realm);
+
+ boolean postponeMasterClientSetup = postponeMasterClientSetup(rep);
+ if (!postponeMasterClientSetup) {
+ setupMasterAdminManagement(realm);
+ }
+
if (!hasRealmAdminManagementClient(rep)) setupRealmAdminManagement(realm);
if (!hasAccountManagementClient(rep)) setupAccountManagement(realm);
@@ -286,6 +332,10 @@ public class RealmManager {
RepresentationToModel.importRealm(session, rep, realm);
+ if (postponeMasterClientSetup) {
+ setupMasterAdminManagement(realm);
+ }
+
// Could happen when migrating from older version and I have exported JSON file, which contains "realm-management" client but not "impersonation" client
// I need to postpone impersonation because it needs "realm-management" client and it's roles set
if (postponeImpersonationSetup) {
@@ -304,8 +354,16 @@ public class RealmManager {
return realm;
}
+ private boolean postponeMasterClientSetup(RealmRepresentation rep) {
+ if (!Config.getAdminRealm().equals(rep.getRealm())) {
+ return false;
+ }
+
+ return hasRealmAdminManagementClient(rep);
+ }
+
private boolean hasRealmAdminManagementClient(RealmRepresentation rep) {
- String realmAdminClientId = getRealmAdminClientId(rep);
+ String realmAdminClientId = Config.getAdminRealm().equals(rep.getRealm()) ? KeycloakModelUtils.getMasterRealmAdminApplicationClientId(rep.getRealm()) : getRealmAdminClientId(rep);
return hasClient(rep, realmAdminClientId);
}
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/admin/ImpersonationTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/admin/ImpersonationTest.java
index a73d9ce..0de7dd6 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/admin/ImpersonationTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/admin/ImpersonationTest.java
@@ -77,7 +77,7 @@ public class ImpersonationTest {
{
UserModel masterImpersonator = manager.getSession().users().addUser(adminstrationRealm, "master-impersonator");
masterImpersonator.setEnabled(true);
- ClientModel adminRealmClient = adminstrationRealm.getClientByClientId(KeycloakModelUtils.getMasterRealmAdminApplicationClientId(appRealm));
+ ClientModel adminRealmClient = adminstrationRealm.getClientByClientId(KeycloakModelUtils.getMasterRealmAdminApplicationClientId(appRealm.getName()));
RoleModel masterImpersonatorRole = adminRealmClient.getRole(ImpersonationConstants.IMPERSONATION_ROLE);
masterImpersonator.grantRole(masterImpersonatorRole);
}
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/exportimport/ExportImportTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/exportimport/ExportImportTest.java
index ae40c92..84557d9 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/exportimport/ExportImportTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/exportimport/ExportImportTest.java
@@ -26,6 +26,7 @@ import org.keycloak.testsuite.rule.KeycloakRule;
import java.io.File;
import java.io.IOException;
+import java.net.URL;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -186,6 +187,37 @@ public class ExportImportTest {
}
@Test
+ public void testSingleFileRealmWithoutBuiltinsImport() throws Throwable {
+ // Remove test realm
+ KeycloakSession session = keycloakRule.startSession();
+ try {
+ new RealmManager(session).removeRealm(session.realms().getRealmByName("test-realm"));
+ } finally {
+ keycloakRule.stopSession(session, true);
+ }
+
+ // Set the realm, which doesn't have builtin clients/roles inside JSON
+ ExportImportConfig.setProvider(SingleFileExportProviderFactory.PROVIDER_ID);
+ URL url = ExportImportTest.class.getResource("/model/testrealm.json");
+ String targetFilePath = new File(url.getFile()).getAbsolutePath();
+ ExportImportConfig.setFile(targetFilePath);
+
+ ExportImportConfig.setAction(ExportImportConfig.ACTION_IMPORT);
+
+ // Restart server to trigger import
+ keycloakRule.restartServer();
+
+ // Ensure realm imported
+ session = keycloakRule.startSession();
+ try {
+ RealmModel testRealmRealm = session.realms().getRealmByName("test-realm");
+ ImportTest.assertDataImportedInRealm(session, testRealmRealm);
+ } finally {
+ keycloakRule.stopSession(session, true);
+ }
+ }
+
+ @Test
public void testZipFullExportImport() throws Throwable {
ExportImportConfig.setProvider(ZipExportProviderFactory.PROVIDER_ID);
String zipFilePath = getExportImportTestDirectory() + File.separator + "export-full.zip";
@@ -222,7 +254,8 @@ public class ExportImportTest {
RealmProvider realmProvider = session.realms();
UserProvider userProvider = session.users();
new RealmManager(session).removeRealm(realmProvider.getRealmByName("test"));
- Assert.assertEquals(2, realmProvider.getRealms().size());
+ new RealmManager(session).removeRealm(realmProvider.getRealmByName("test-realm"));
+ Assert.assertEquals(1, realmProvider.getRealms().size());
assertNotAuthenticated(userProvider, realmProvider, "test", "test-user@localhost", "password");
assertNotAuthenticated(userProvider, realmProvider, "test", "user1", "password");
@@ -250,7 +283,7 @@ public class ExportImportTest {
assertAuthenticated(userProvider, model, "test", "user2", "password");
assertAuthenticated(userProvider, model, "test", "user3", "password");
- RealmModel testRealmRealm = model.getRealm("test-realm");
+ RealmModel testRealmRealm = model.getRealmByName("test-realm");
ImportTest.assertDataImportedInRealm(session, testRealmRealm);
} finally {
keycloakRule.stopSession(session, true);