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 5da9b4e4cd..3172665dde 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 6b842b04b3..40ed6ee661 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(); + } + }