From e7009cac477d2c4a503ccc057f2ef53937e4df7e Mon Sep 17 00:00:00 2001 From: Stian Thorgersen Date: Mon, 4 Jan 2016 13:15:18 +0100 Subject: [PATCH] KEYCLOAK-2204 Add test to make sure disabled client can't refresh token --- .../testsuite/oauth/RefreshTokenTest.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/oauth/RefreshTokenTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/oauth/RefreshTokenTest.java index a69b733ab68..b8002d3f679 100755 --- a/testsuite/integration/src/test/java/org/keycloak/testsuite/oauth/RefreshTokenTest.java +++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/oauth/RefreshTokenTest.java @@ -331,6 +331,48 @@ public class RefreshTokenTest { } } + @Test + public void refreshTokenClientDisabled() throws Exception { + oauth.doLogin("test-user@localhost", "password"); + + Event loginEvent = events.expectLogin().assertEvent(); + + String sessionId = loginEvent.getSessionId(); + String codeId = loginEvent.getDetails().get(Details.CODE_ID); + + String code = oauth.getCurrentQuery().get(OAuth2Constants.CODE); + + AccessTokenResponse response = oauth.doAccessTokenRequest(code, "password"); + String refreshTokenString = response.getRefreshToken(); + RefreshToken refreshToken = oauth.verifyRefreshToken(refreshTokenString); + + events.expectCodeToToken(codeId, sessionId).assertEvent(); + + try { + keycloakRule.configure(new KeycloakRule.KeycloakSetup() { + @Override + public void config(RealmManager manager, RealmModel adminstrationRealm, RealmModel appRealm) { + appRealm.getClientByClientId(oauth.getClientId()).setEnabled(false); + } + }); + + response = oauth.doRefreshTokenRequest(refreshTokenString, "password"); + + assertEquals(400, response.getStatusCode()); + assertEquals("invalid_client", response.getError()); + + events.expectRefresh(refreshToken.getId(), sessionId).user((String) null).session((String) null).clearDetails().error(Errors.CLIENT_DISABLED).assertEvent(); + } finally { + keycloakRule.configure(new KeycloakRule.KeycloakSetup() { + @Override + public void config(RealmManager manager, RealmModel adminstrationRealm, RealmModel appRealm) { + appRealm.getClientByClientId(oauth.getClientId()).setEnabled(true); + } + }); + + } + } + @Test public void refreshTokenUserSessionExpired() { oauth.doLogin("test-user@localhost", "password");