keycloak-aplcache

Details

diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/ProfileAssume.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/ProfileAssume.java
index 84b8282..ab7542a 100644
--- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/ProfileAssume.java
+++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/ProfileAssume.java
@@ -18,26 +18,58 @@
 package org.keycloak.testsuite;
 
 import org.junit.Assume;
+import org.keycloak.admin.client.Keycloak;
 import org.keycloak.common.Profile;
+import org.keycloak.representations.info.ProfileInfoRepresentation;
+import org.keycloak.testsuite.util.AdminClientUtil;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
 /**
  * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
  */
 public class ProfileAssume {
 
+    private static Set<String> disabledFeatures;
+    private static String profile;
+
+    static {
+        String host = System.getProperty("auth.server.host", "localhost");
+        String port = System.getProperty("auth.server.http.port", "8180");
+
+        String authServerContextRoot = "http://" + host + ":" + port;
+        try {
+            Keycloak adminClient = AdminClientUtil.createAdminClient(false, authServerContextRoot);
+            ProfileInfoRepresentation profileInfo = adminClient.serverInfo().getInfo().getProfileInfo();
+            profile = profileInfo.getName();
+            List<String> disabled = profileInfo.getDisabledFeatures();
+            disabledFeatures = Collections.unmodifiableSet(new HashSet(disabled));
+            adminClient.close();
+        } catch (Exception e) {
+            throw new RuntimeException("Failed to obtain profile / features info from serverinfo endpoint of " + authServerContextRoot, e);
+        }
+    }
+
     public static void assumeFeatureEnabled(Profile.Feature feature) {
-        Assume.assumeTrue("Ignoring test as " + feature.name() + " is not enabled", Profile.isFeatureEnabled(feature));
+        Assume.assumeTrue("Ignoring test as " + feature.name() + " is not enabled", isFeatureEnabled(feature));
     }
 
     public static void assumePreview() {
-        Assume.assumeTrue("Ignoring test as community/preview profile is not enabled", !Profile.getName().equals("product"));
+        Assume.assumeTrue("Ignoring test as community/preview profile is not enabled", !profile.equals("product"));
     }
 
     public static void assumePreviewDisabled() {
-        Assume.assumeFalse("Ignoring test as community/preview profile is enabled", !Profile.getName().equals("product"));
+        Assume.assumeFalse("Ignoring test as community/preview profile is enabled", !profile.equals("product"));
     }
 
     public static void assumeCommunity() {
-        Assume.assumeTrue("Ignoring test as community profile is not enabled", Profile.getName().equals("community"));
+        Assume.assumeTrue("Ignoring test as community profile is not enabled", profile.equals("community"));
+    }
+
+    private static boolean isFeatureEnabled(Profile.Feature feature) {
+        return !disabledFeatures.contains(feature.name());
     }
 }