keycloak-aplcache

Merge pull request #2574 from stianst/KEYCLOAK-2700-1.9 KEYCLOAK-2700

4/12/2016 2:20:03 AM

Details

diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/JpaRealmProvider.java b/model/jpa/src/main/java/org/keycloak/models/jpa/JpaRealmProvider.java
index 5da9b4e..3172665 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/JpaRealmProvider.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/JpaRealmProvider.java
@@ -127,6 +127,10 @@ public class JpaRealmProvider implements RealmProvider {
         em.refresh(realm);
         RealmAdapter adapter = new RealmAdapter(session, em, realm);
         session.users().preRemove(adapter);
+
+        realm.getDefaultGroups().clear();
+        em.flush();
+
         int num = em.createNamedQuery("deleteGroupRoleMappingsByRealm")
                 .setParameter("realm", realm).executeUpdate();
         num = em.createNamedQuery("deleteGroupAttributesByRealm")
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
index 6b842b0..40ed6ee 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/admin/RealmTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/admin/RealmTest.java
@@ -27,6 +27,7 @@ import org.keycloak.models.KeycloakSession;
 import org.keycloak.models.RealmModel;
 import org.keycloak.models.utils.KeycloakModelUtils;
 import org.keycloak.representations.idm.ClientRepresentation;
+import org.keycloak.representations.idm.GroupRepresentation;
 import org.keycloak.representations.idm.RealmRepresentation;
 import org.keycloak.representations.idm.RoleRepresentation;
 import org.keycloak.services.managers.RealmManager;
@@ -35,6 +36,7 @@ import org.keycloak.util.JsonSerialization;
 
 import javax.ws.rs.BadRequestException;
 import javax.ws.rs.NotFoundException;
+import javax.ws.rs.core.Response;
 import java.io.IOException;
 import java.util.Collections;
 import java.util.LinkedList;
@@ -441,4 +443,22 @@ public class RealmTest extends AbstractClientTest {
         assertEquals(certificate, rep.getCertificate());
     }
 
+    @Test
+    // KEYCLOAK-2700
+    public void deleteRealmWithDefaultGroups() throws IOException {
+        RealmRepresentation rep = new RealmRepresentation();
+        rep.setRealm("foo");
+
+        GroupRepresentation group = new GroupRepresentation();
+        group.setName("default1");
+        group.setPath("/default1");
+
+        rep.setGroups(Collections.singletonList(group));
+        rep.setDefaultGroups(Collections.singletonList("/default1"));
+
+        keycloak.realms().create(rep);
+
+        keycloak.realm(rep.getRealm()).remove();
+    }
+
 }