diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/adapter/AdapterTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/adapter/AdapterTest.java
index 9db1b10..d218cc8 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/adapter/AdapterTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/adapter/AdapterTest.java
@@ -25,9 +25,15 @@ import org.junit.Assert;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
+import org.keycloak.models.ApplicationModel;
+import org.keycloak.models.Constants;
import org.keycloak.models.RealmModel;
+import org.keycloak.models.UserModel;
+import org.keycloak.representations.AccessToken;
+import org.keycloak.representations.adapters.action.SessionStats;
import org.keycloak.representations.idm.RealmRepresentation;
import org.keycloak.services.managers.RealmManager;
+import org.keycloak.services.managers.TokenManager;
import org.keycloak.testsuite.OAuthClient;
import org.keycloak.testsuite.pages.LoginPage;
import org.keycloak.testsuite.rule.AbstractKeycloakRule;
@@ -36,8 +42,15 @@ import org.keycloak.testsuite.rule.WebRule;
import org.keycloak.testutils.KeycloakServer;
import org.openqa.selenium.WebDriver;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.GenericType;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.UriBuilder;
import java.net.URL;
import java.security.PublicKey;
+import java.util.Map;
/**
* Tests Undertow Adapter
@@ -46,6 +59,7 @@ import java.security.PublicKey;
*/
public class AdapterTest {
+ public static final String LOGIN_URL = "http://localhost:8081/auth/rest/realms/demo/tokens/login";
public static PublicKey realmPublicKey;
@ClassRule
public static AbstractKeycloakRule keycloakRule = new AbstractKeycloakRule(){
@@ -62,10 +76,17 @@ public class AdapterTest {
deployApplication("customer-db", "/customer-db", CustomerDatabaseServlet.class, url.getPath(), "user");
url = getClass().getResource("/adapter-test/product-keycloak.json");
deployApplication("product-portal", "/product-portal", ProductServlet.class, url.getPath(), "user");
+ ApplicationModel adminConsole = adminRealm.getApplicationByName(Constants.ADMIN_CONSOLE_APPLICATION);
+ TokenManager tm = new TokenManager();
+ UserModel admin = adminRealm.getUser("admin");
+ AccessToken token = tm.createClientAccessToken(null, adminRealm, adminConsole, admin);
+ adminToken = tm.encodeToken(adminRealm, token);
}
};
+ public static String adminToken;
+
@Rule
public WebRule webRule = new WebRule(this);
@@ -79,11 +100,11 @@ public class AdapterTest {
protected LoginPage loginPage;
@Test
- public void testLogin() throws Exception {
+ public void testLoginSSOAndLogout() throws Exception {
// test login to customer-portal which does a bearer request to customer-db
driver.navigate().to("http://localhost:8081/customer-portal");
System.out.println("Current url: " + driver.getCurrentUrl());
- Assert.assertTrue(driver.getCurrentUrl().startsWith("http://localhost:8081/auth"));
+ Assert.assertTrue(driver.getCurrentUrl().startsWith(LOGIN_URL));
loginPage.login("bburke@redhat.com", "password");
System.out.println("Current url: " + driver.getCurrentUrl());
Assert.assertEquals(driver.getCurrentUrl(), "http://localhost:8081/customer-portal");
@@ -98,7 +119,33 @@ public class AdapterTest {
System.out.println(pageSource);
Assert.assertTrue(pageSource.contains("iPhone") && pageSource.contains("iPad"));
+ // View stats
+ Client client = ClientBuilder.newClient();
+ WebTarget adminTarget = client.target("http://localhost:8081/auth/rest/admin/realms/demo");
+ Map<String, SessionStats> stats = adminTarget.path("session-stats").request()
+ .header(HttpHeaders.AUTHORIZATION, "Bearer " + adminToken)
+ .get(new GenericType<Map<String, SessionStats>>(){});
+
+ SessionStats custStats = stats.get("customer-portal");
+ Assert.assertNotNull(custStats);
+ Assert.assertEquals(1, custStats.getActiveSessions());
+ SessionStats prodStats = stats.get("product-portal");
+ Assert.assertNotNull(prodStats);
+ Assert.assertEquals(1, prodStats.getActiveSessions());
+
+ client.close();
+
+ // test logout
+
+ String logoutUri = UriBuilder.fromUri("http://localhost:8081/auth/rest/realms/demo/tokens/logout")
+ .queryParam("redirect_uri", "http://localhost:8081/customer-portal").build().toString();
+ driver.navigate().to(logoutUri);
+ Assert.assertTrue(driver.getCurrentUrl().startsWith(LOGIN_URL));
+ driver.navigate().to("http://localhost:8081/product-portal");
+ Assert.assertTrue(driver.getCurrentUrl().startsWith(LOGIN_URL));
+ driver.navigate().to("http://localhost:8081/customer-portal");
+ Assert.assertTrue(driver.getCurrentUrl().startsWith(LOGIN_URL));
}