keycloak-aplcache

Fixes to server-info

7/24/2015 11:45:58 AM

Details

diff --git a/forms/common-themes/src/main/resources/theme/base/admin/resources/js/controllers/clients.js b/forms/common-themes/src/main/resources/theme/base/admin/resources/js/controllers/clients.js
index 8ad8ae6..810aef7 100755
--- a/forms/common-themes/src/main/resources/theme/base/admin/resources/js/controllers/clients.js
+++ b/forms/common-themes/src/main/resources/theme/base/admin/resources/js/controllers/clients.js
@@ -549,7 +549,7 @@ module.controller('ClientDetailCtrl', function($scope, realm, client, $route, se
         "bearer-only"
     ];
 
-    $scope.protocols = Object.keys(serverInfo.providers['login-protocol'].providers);
+    $scope.protocols = Object.keys(serverInfo.providers['login-protocol'].providers).sort();
 
     $scope.signatureAlgorithms = [
         "RSA_SHA1",
diff --git a/forms/common-themes/src/main/resources/theme/base/admin/resources/partials/server-info-providers.html b/forms/common-themes/src/main/resources/theme/base/admin/resources/partials/server-info-providers.html
index 6f8bbb4..aa95b50 100755
--- a/forms/common-themes/src/main/resources/theme/base/admin/resources/partials/server-info-providers.html
+++ b/forms/common-themes/src/main/resources/theme/base/admin/resources/partials/server-info-providers.html
@@ -28,7 +28,7 @@
         </tr>
         </thead>
         <tbody>
-        <tr data-ng-repeat="spi in (providers | orderBy:'name' | filter:search)">
+        <tr data-ng-repeat="spi in (providers | filter:search)">
             <td>{{spi.name}}</td>
             <td>
                 <div data-ng-repeat="(providerName, provider) in spi.providers">
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/info/ServerInfoAdminResource.java b/services/src/main/java/org/keycloak/services/resources/admin/info/ServerInfoAdminResource.java
index 8223556..fd0afc9 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/info/ServerInfoAdminResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/info/ServerInfoAdminResource.java
@@ -60,12 +60,27 @@ public class ServerInfoAdminResource {
     }
 
     private void setProviders(ServerInfoRepresentation info) {
-        Map<String, SpiInfoRepresentation> spis = new HashMap<>();
+        LinkedHashMap<String, SpiInfoRepresentation> spiReps = new LinkedHashMap<>();
+
+        List<Spi> spis = new LinkedList<>();
         for (Spi spi : ServiceLoader.load(Spi.class)) {
+            spis.add(spi);
+        }
+        Collections.sort(spis, new Comparator<Spi>() {
+            @Override
+            public int compare(Spi s1, Spi s2) {
+                return s1.getName().compareTo(s2.getName());
+            }
+        });
+
+        for (Spi spi : spis) {
             SpiInfoRepresentation spiRep = new SpiInfoRepresentation();
             spiRep.setInternal(spi.isInternal());
             spiRep.setSystemInfo(ServerInfoAwareProviderFactory.class.isAssignableFrom(spi.getProviderFactoryClass()));
-            Set<String> providerIds = session.listProviderIds(spi.getProviderClass());
+
+            List<String> providerIds = new LinkedList<>(session.listProviderIds(spi.getProviderClass()));
+            Collections.sort(providerIds);
+
             Map<String, ProviderRepresentation> providers = new HashMap<>();
 
             if (providerIds != null) {
@@ -79,9 +94,9 @@ public class ServerInfoAdminResource {
             }
             spiRep.setProviders(providers);
 
-            spis.put(spi.getName(), spiRep);
+            spiReps.put(spi.getName(), spiRep);
         }
-        info.setProviders(spis);
+        info.setProviders(spiReps);
     }
 
     private void setThemes(ServerInfoRepresentation info) {
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/admin/AdminAPITest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/admin/AdminAPITest.java
index 33ead31..dc49661 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/admin/AdminAPITest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/admin/AdminAPITest.java
@@ -299,7 +299,6 @@ public class AdminAPITest {
 
     @Test
     public void testServerInfo() {
-
         String token = createToken();
         final String authHeader = "Bearer " + token;
         ClientRequestFilter authFilter = new ClientRequestFilter() {
@@ -314,45 +313,21 @@ public class AdminAPITest {
 
         Map<?, ?> response = target.request().accept("application/json").get(Map.class);
 
-        Assert.assertNotNull(response);
-        Assert.assertEquals(Version.VERSION, response.get("version"));
-        Assert.assertNotNull(response.get("serverTime"));
-        Assert.assertNotNull(response.get("providers"));
-        Assert.assertNotNull(response.get("themes"));
-        Assert.assertNotNull(response.get("enums"));
-
-        // System.out.println(response);
-
-    }
-
-    @Test
-    public void testServerInfoPage() {
-
-        String token = createToken();
-        final String authHeader = "Bearer " + token;
-        ClientRequestFilter authFilter = new ClientRequestFilter() {
-            @Override
-            public void filter(ClientRequestContext requestContext) throws IOException {
-                requestContext.getHeaders().add(HttpHeaders.AUTHORIZATION, authHeader);
-            }
-        };
-        Client client = ClientBuilder.newBuilder().register(authFilter).build();
-        UriBuilder authBase = UriBuilder.fromUri("http://localhost:8081/auth");
-        WebTarget target = client.target(AdminRoot.adminBaseUrl(authBase).path("serverinfopage"));
 
-        Map<?, ?> response = target.request().accept("application/json").get(Map.class);
+        System.out.println(response.keySet().toString());
 
         Assert.assertNotNull(response);
-        Assert.assertEquals(Version.VERSION, response.get("version"));
-        Assert.assertNotNull(response.get("serverTime"));
         Assert.assertNotNull(response.get("providers"));
-        Assert.assertNotNull(response.get("serverStartupTime"));
+        Assert.assertNotNull(response.get("themes"));
+        Assert.assertNotNull(response.get("enums"));
 
         Assert.assertNotNull(response.get("memoryInfo"));
         Assert.assertNotNull(response.get("systemInfo"));
-        
-        // System.out.println(response);
 
+        Map<?, ?> systemInfo = (Map<?, ?>) response.get("systemInfo");
+        Assert.assertEquals(Version.VERSION, systemInfo.get("version"));
+        Assert.assertNotNull(systemInfo.get("serverTime"));
+        Assert.assertNotNull(systemInfo.get("uptime"));
     }
 
 }