From fcc95ef99bdffdbdeee4ee74a961a69591b9adaa Mon Sep 17 00:00:00 2001 From: Bill Burke Date: Wed, 12 Mar 2014 15:00:31 -0400 Subject: [PATCH] fix delete realm --- .../models/jpa/JpaKeycloakSession.java | 4 +- .../org/keycloak/model/test/ImportTest.java | 17 +++ .../tests/src/test/resources/testrealm2.json | 100 ++++++++++++++++++ 3 files changed, 120 insertions(+), 1 deletion(-) create mode 100755 model/tests/src/test/resources/testrealm2.json diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/JpaKeycloakSession.java b/model/jpa/src/main/java/org/keycloak/models/jpa/JpaKeycloakSession.java index 78123153e0..057679e15a 100755 --- a/model/jpa/src/main/java/org/keycloak/models/jpa/JpaKeycloakSession.java +++ b/model/jpa/src/main/java/org/keycloak/models/jpa/JpaKeycloakSession.java @@ -83,7 +83,9 @@ public class JpaKeycloakSession implements KeycloakSession { adapter.removeApplication(a.getId()); } - em.createQuery("delete from " + OAuthClientEntity.class.getSimpleName() + " where realm = :realm").setParameter("realm", realm).executeUpdate(); + for (OAuthClientModel oauth : adapter.getOAuthClients()) { + adapter.removeOAuthClient(oauth.getId()); + } for (UserEntity u : em.createQuery("from UserEntity", UserEntity.class).getResultList()) { adapter.removeUser(u.getLoginName()); diff --git a/model/tests/src/test/java/org/keycloak/model/test/ImportTest.java b/model/tests/src/test/java/org/keycloak/model/test/ImportTest.java index ae83661dfb..c48e134451 100755 --- a/model/tests/src/test/java/org/keycloak/model/test/ImportTest.java +++ b/model/tests/src/test/java/org/keycloak/model/test/ImportTest.java @@ -28,6 +28,16 @@ import java.util.Set; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class ImportTest extends AbstractModelTest { + @Test + public void demoDelete() throws Exception { + // was having trouble deleting this realm from admin console + RealmRepresentation rep = AbstractModelTest.loadJson("testrealm2.json"); + RealmModel realm = realmManager.importRealm(rep); + commit(); + realm = realmManager.getRealmByName("demo-delete"); + realmManager.removeRealm(realm); + } + @Test public void install() throws Exception { RealmRepresentation rep = AbstractModelTest.loadJson("testrealm.json"); @@ -160,6 +170,13 @@ public class ImportTest extends AbstractModelTest { Assert.assertTrue(realm.removeSocialLink(socialUser, "facebook")); Assert.assertNull(realm.getSocialLink(socialUser, "facebook")); Assert.assertFalse(realm.removeSocialLink(socialUser, "facebook")); + + commit(); + + realm = realmManager.getRealm("demo"); + realmManager.removeRealm(realm); + + } @Test diff --git a/model/tests/src/test/resources/testrealm2.json b/model/tests/src/test/resources/testrealm2.json new file mode 100755 index 0000000000..ff9e3bcc67 --- /dev/null +++ b/model/tests/src/test/resources/testrealm2.json @@ -0,0 +1,100 @@ +{ + "realm": "demo-delete", + "enabled": true, + "accessTokenLifespan": 3000, + "accessCodeLifespan": 10, + "accessCodeLifespanUserAction": 6000, + "sslNotRequired": true, + "registrationAllowed": false, + "social": false, + "updateProfileOnInitialSocialLogin": false, + "privateKey": "MIICXAIBAAKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQABAoGAfmO8gVhyBxdqlxmIuglbz8bcjQbhXJLR2EoS8ngTXmN1bo2L90M0mUKSdc7qF10LgETBzqL8jYlQIbt+e6TH8fcEpKCjUlyq0Mf/vVbfZSNaVycY13nTzo27iPyWQHK5NLuJzn1xvxxrUeXI6A2WFpGEBLbHjwpx5WQG9A+2scECQQDvdn9NE75HPTVPxBqsEd2z10TKkl9CZxu10Qby3iQQmWLEJ9LNmy3acvKrE3gMiYNWb6xHPKiIqOR1as7L24aTAkEAtyvQOlCvr5kAjVqrEKXalj0Tzewjweuxc0pskvArTI2Oo070h65GpoIKLc9jf+UA69cRtquwP93aZKtW06U8dQJAF2Y44ks/mK5+eyDqik3koCI08qaC8HYq2wVl7G2QkJ6sbAaILtcvD92ToOvyGyeE0flvmDZxMYlvaZnaQ0lcSQJBAKZU6umJi3/xeEbkJqMfeLclD27XGEFoPeNrmdx0q10Azp4NfJAY+Z8KRyQCR2BEG+oNitBOZ+YXF9KCpH3cdmECQHEigJhYg+ykOvr1aiZUMFT72HU0jnmQe2FVekuG+LJUt2Tm7GtMjTFoGpf0JwrVuZN39fOYAlo+nTixgeW7X8Y=", + "publicKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB", + "requiredCredentials": [ "password" ], + "users" : [ + { + "username" : "bburke@redhat.com", + "enabled": true, + "email" : "bburke@redhat.com", + "firstName": "Bill", + "lastName": "Burke", + "credentials" : [ + { "type" : "password", + "value" : "password" } + ] + } + ], + "roles" : { + "realm" : [ + { + "name": "user", + "description": "User privileges" + }, + { + "name": "admin", + "description": "Administrator privileges" + } + ] + }, + "roleMappings": [ + { + "username": "bburke@redhat.com", + "roles": ["user"] + } + ], + "scopeMappings": [ + { + "client": "third-party", + "roles": ["user"] + }, + { + "client": "customer-portal", + "roles": ["user"] + }, + { + "client": "product-portal", + "roles": ["user"] + } + + ], + "applications": [ + { + "name": "customer-portal", + "enabled": true, + "adminUrl": "http://localhost:8080/customer-portal", + "redirectUris": [ + "http://localhost:8080/customer-portal/*" + ], + "secret": "password" + }, + { + "name": "product-portal", + "enabled": true, + "adminUrl": "http://localhost:8080/product-portal", + "redirectUris": [ + "http://localhost:8080/product-portal/*" + ], + "secret": "password" + } + ], + "oauthClients": [ + { + "name": "third-party", + "enabled": true, + "redirectUris": [ + "http://localhost:8080/oauth-client/*", + "http://localhost:8080/oauth-client-cdi/*" + ], + "secret": "password" + } + ], + "applicationRoleMappings": { + "account": [ + { + "username": "bburke@redhat.com", + "roles": ["manage-account"] + } + ] + } + +}