diff --git a/model/api/src/main/java/org/keycloak/models/utils/RepresentationToModel.java b/model/api/src/main/java/org/keycloak/models/utils/RepresentationToModel.java
index 3b2cfdc..f40f962 100755
--- a/model/api/src/main/java/org/keycloak/models/utils/RepresentationToModel.java
+++ b/model/api/src/main/java/org/keycloak/models/utils/RepresentationToModel.java
@@ -1,5 +1,6 @@
package org.keycloak.models.utils;
+import org.keycloak.Config;
import org.keycloak.models.ClientTemplateModel;
import org.keycloak.models.Constants;
import org.keycloak.common.util.Base64;
@@ -593,9 +594,16 @@ public class RepresentationToModel {
}
}
+ public static void renameRealm(RealmModel realm, String name) {
+ if (name.equals(realm.getName())) return;
+ ClientModel masterApp = realm.getMasterAdminClient();
+ masterApp.setClientId(KeycloakModelUtils.getMasterRealmAdminApplicationClientId(name));
+ realm.setName(name);
+ }
+
public static void updateRealm(RealmRepresentation rep, RealmModel realm) {
if (rep.getRealm() != null) {
- realm.setName(rep.getRealm());
+ renameRealm(realm, rep.getRealm());
}
if (rep.getDisplayName() != null) realm.setDisplayName(rep.getDisplayName());
if (rep.getDisplayNameHtml() != null) realm.setDisplayNameHtml(rep.getDisplayNameHtml());
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/admin/RealmTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/admin/RealmTest.java
old mode 100644
new mode 100755
index b2fb326..4f0936b
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/admin/RealmTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/admin/RealmTest.java
@@ -101,6 +101,33 @@ public class RealmTest extends AbstractClientTest {
serverInfoResource.getInfo();
}
+ /**
+ * KEYCLOAK-1990 1991
+ * @throws Exception
+ */
+ @Test
+ public void renameRealmTest() throws Exception {
+ Keycloak keycloak = Keycloak.getInstance("http://localhost:8081/auth", "master", "admin", "admin", Constants.ADMIN_CLI_CLIENT_ID);
+ RealmRepresentation realm1 = new RealmRepresentation();
+ realm1.setRealm("test-immutable");
+ keycloak.realms().create(realm1);
+ realm1 = keycloak.realms().realm("test-immutable").toRepresentation();
+ realm1.setRealm("test-immutable-old");
+ keycloak.realms().realm("test-immutable").update(realm1);
+ realm1 = keycloak.realms().realm("test-immutable-old").toRepresentation();
+
+ RealmRepresentation realm2 = new RealmRepresentation();
+ realm2.setRealm("test-immutable");
+ keycloak.realms().create(realm2);
+ realm2 = keycloak.realms().realm("test-immutable").toRepresentation();
+
+ keycloak.realms().realm("test-immutable-old").remove();
+
+
+
+
+ }
+
@Test
public void updateRealm() {
// first change