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;
     }