keycloak-uncached
Changes
testsuite/integration-arquillian/servers/auth-server/services/testsuite-providers/src/main/java/org/keycloak/testsuite/rest/TestingResourceProvider.java 19(+19 -0)
testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/client/resources/TestingResource.java 5(+5 -0)
testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/oauth/AccessTokenTest.java 8(+2 -6)
Details
diff --git a/testsuite/integration-arquillian/servers/auth-server/services/testsuite-providers/src/main/java/org/keycloak/testsuite/rest/TestingResourceProvider.java b/testsuite/integration-arquillian/servers/auth-server/services/testsuite-providers/src/main/java/org/keycloak/testsuite/rest/TestingResourceProvider.java
index 2730eb0..a1c1c4d 100644
--- a/testsuite/integration-arquillian/servers/auth-server/services/testsuite-providers/src/main/java/org/keycloak/testsuite/rest/TestingResourceProvider.java
+++ b/testsuite/integration-arquillian/servers/auth-server/services/testsuite-providers/src/main/java/org/keycloak/testsuite/rest/TestingResourceProvider.java
@@ -79,6 +79,25 @@ public class TestingResourceProvider implements RealmResourceProvider {
return Response.ok().build();
}
+ @GET
+ @Path("/get-user-session")
+ @Produces(MediaType.APPLICATION_JSON)
+ public Integer getLastSessionRefresh(@QueryParam("realm") final String name, @QueryParam("session") final String sessionId) {
+
+ RealmManager realmManager = new RealmManager(session);
+ RealmModel realm = realmManager.getRealmByName(name);
+ if (realm == null) {
+ throw new NotFoundException("Realm not found");
+ }
+
+ UserSessionModel sessionModel = session.sessions().getUserSession(realm, sessionId);
+ if (sessionModel == null) {
+ throw new NotFoundException("Session not found");
+ }
+
+ return sessionModel.getLastSessionRefresh();
+ }
+
@POST
@Path("/remove-expired")
@Produces(MediaType.APPLICATION_JSON)
diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/client/resources/TestingResource.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/client/resources/TestingResource.java
index 310cffe..6c950ee 100644
--- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/client/resources/TestingResource.java
+++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/client/resources/TestingResource.java
@@ -65,6 +65,11 @@ public interface TestingResource {
@Produces(MediaType.APPLICATION_JSON)
Response removeUserSession(@QueryParam("realm") final String realm, @QueryParam("session") final String sessionId);
+ @GET
+ @Path("/get-user-session")
+ @Produces(MediaType.APPLICATION_JSON)
+ Integer getLastSessionRefresh(@QueryParam("realm") final String realm, @QueryParam("session") final String sessionId);
+
@POST
@Path("/remove-expired")
@Produces(MediaType.APPLICATION_JSON)
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/oauth/AccessTokenTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/oauth/AccessTokenTest.java
index 887aa26..48b0275 100755
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/oauth/AccessTokenTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/oauth/AccessTokenTest.java
@@ -32,7 +32,6 @@ import org.keycloak.admin.client.resource.ClientTemplateResource;
import org.keycloak.admin.client.resource.RealmResource;
import org.keycloak.admin.client.resource.UserResource;
import org.keycloak.common.enums.SslRequired;
-import org.keycloak.common.util.Time;
import org.keycloak.events.Details;
import org.keycloak.events.Errors;
import org.keycloak.jose.jws.JWSInput;
@@ -55,6 +54,7 @@ import org.keycloak.representations.idm.UserRepresentation;
import org.keycloak.testsuite.AbstractKeycloakTest;
import org.keycloak.testsuite.AssertEvents;
import org.keycloak.testsuite.util.ClientBuilder;
+import org.keycloak.testsuite.util.ClientManager;
import org.keycloak.testsuite.util.OAuthClient;
import org.keycloak.testsuite.util.RealmManager;
import org.keycloak.testsuite.util.RoleBuilder;
@@ -110,11 +110,7 @@ public class AccessTokenTest extends AbstractKeycloakTest {
@Before
public void clientConfiguration() {
- ClientResource clientResource = findClientByClientId(adminClient.realm("test"), "test-app");
- ClientRepresentation clientRepresentation = new ClientRepresentation();
- clientRepresentation.setDirectAccessGrantsEnabled(true);
- clientResource.update(clientRepresentation);
-
+ ClientManager.realm(adminClient.realm("test")).clientId("test-app").directAccessGrant(true);
/*
* Configure the default client ID. Seems like OAuthClient is keeping the state of clientID
* For example: If some test case configure oauth.clientId("sample-public-client"), other tests
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/util/RealmManager.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/util/RealmManager.java
index 40ad33d..c5c17af 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/util/RealmManager.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/util/RealmManager.java
@@ -1,8 +1,15 @@
package org.keycloak.testsuite.util;
import org.keycloak.admin.client.resource.RealmResource;
+import org.keycloak.common.util.Base64;
+import org.keycloak.common.util.CertificateUtils;
import org.keycloak.representations.idm.RealmRepresentation;
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.X509Certificate;
+
/**
* @author <a href="mailto:bruno@abstractj.org">Bruno Oliveira</a>.
*/
@@ -39,24 +46,66 @@ public class RealmManager {
return this;
}
- public RealmManager accessTokenLifespan(int accessTokenLifespan) {
+ public RealmManager revokeRefreshToken(boolean enable) {
RealmRepresentation rep = realm.toRepresentation();
- rep.setAccessTokenLifespan(accessTokenLifespan);
+ rep.setRevokeRefreshToken(enable);
realm.update(rep);
return this;
}
- public RealmManager ssoSessionIdleTimeout(int sessionIdleTimeout) {
+ public void generateKeys() {
RealmRepresentation rep = realm.toRepresentation();
- rep.setSsoSessionIdleTimeout(sessionIdleTimeout);
+
+ KeyPair keyPair;
+ try {
+ KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
+ generator.initialize(2048);
+ keyPair = generator.generateKeyPair();
+ } catch (NoSuchAlgorithmException e) {
+ throw new RuntimeException(e);
+ }
+ rep.setPrivateKey(Base64.encodeBytes(keyPair.getPrivate().getEncoded()));
+ rep.setPublicKey(Base64.encodeBytes(keyPair.getPublic().getEncoded()));
+ X509Certificate certificate;
+ try {
+ certificate = CertificateUtils.generateV1SelfSignedCertificate(keyPair, rep.getId());
+ rep.setCertificate(Base64.encodeBytes(certificate.getEncoded()));
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ rep.setCodeSecret(org.keycloak.models.utils.KeycloakModelUtils.generateCodeSecret());
realm.update(rep);
- return this;
+ }
+ public void keyPair(String privateKey, String publicKey) {
+ RealmRepresentation rep = realm.toRepresentation();
+ rep.setPrivateKey(privateKey);
+ rep.setPublicKey(publicKey);
+ realm.update(rep);
}
- public RealmManager revokeRefreshToken(boolean enable) {
+ public void ssoSessionMaxLifespan(int ssoSessionMaxLifespan) {
RealmRepresentation rep = realm.toRepresentation();
- rep.setRevokeRefreshToken(enable);
+ rep.setSsoSessionMaxLifespan(ssoSessionMaxLifespan);
+ realm.update(rep);
+ }
+
+ public void sslRequired(String sslRequired) {
+ RealmRepresentation rep = realm.toRepresentation();
+ rep.setSslRequired(sslRequired);
+ realm.update(rep);
+ }
+
+ public void accessTokenLifespan(int accessTokenLifespan) {
+ RealmRepresentation rep = realm.toRepresentation();
+ rep.setAccessTokenLifespan(accessTokenLifespan);
+ realm.update(rep);
+ }
+
+ public RealmManager ssoSessionIdleTimeout(int ssoSessionIdleTimeout) {
+ RealmRepresentation rep = realm.toRepresentation();
+ rep.setSsoSessionIdleTimeout(ssoSessionIdleTimeout);
realm.update(rep);
return this;
}