keycloak-uncached

Details

diff --git a/services/src/main/java/org/keycloak/forms/account/freemarker/model/AccountFederatedIdentityBean.java b/services/src/main/java/org/keycloak/forms/account/freemarker/model/AccountFederatedIdentityBean.java
index ad3c491..e46264e 100755
--- a/services/src/main/java/org/keycloak/forms/account/freemarker/model/AccountFederatedIdentityBean.java
+++ b/services/src/main/java/org/keycloak/forms/account/freemarker/model/AccountFederatedIdentityBean.java
@@ -54,6 +54,9 @@ public class AccountFederatedIdentityBean {
         int availableIdentities = 0;
         if (identityProviders != null && !identityProviders.isEmpty()) {
             for (IdentityProviderModel provider : identityProviders) {
+                if (!provider.isEnabled()) {
+                    continue;
+                }
                 String providerId = provider.getAlias();
 
                 FederatedIdentityModel identity = getIdentity(identities, providerId);
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/account/AccountBrokerTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/account/AccountBrokerTest.java
index d21dcc6..327b308 100755
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/account/AccountBrokerTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/account/AccountBrokerTest.java
@@ -17,11 +17,14 @@
 package org.keycloak.testsuite.account;
 
 import org.jboss.arquillian.graphene.page.Page;
+import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
+import org.keycloak.admin.client.resource.IdentityProviderResource;
 import org.keycloak.admin.client.resource.RealmResource;
 import org.keycloak.representations.idm.ClientRepresentation;
+import org.keycloak.representations.idm.IdentityProviderRepresentation;
 import org.keycloak.representations.idm.UserRepresentation;
 import org.keycloak.testsuite.admin.ApiUtil;
 import org.keycloak.testsuite.broker.AbstractBaseBrokerTest;
@@ -116,6 +119,15 @@ public class AccountBrokerTest extends AbstractBaseBrokerTest {
         ApiUtil.resetUserPassword(adminClient.realm(KcOidcBrokerConfiguration.INSTANCE.consumerRealmName()).users().get(userId), "password", false);
     }
 
+    @After
+    public void after() {
+        RealmResource consumerRealm = adminClient.realm(KcOidcBrokerConfiguration.INSTANCE.consumerRealmName());
+        UserRepresentation userRep = ApiUtil.findUserByUsername(consumerRealm, "accountbrokertest");
+        if (userRep != null) {
+            consumerRealm.users().get(userRep.getId()).remove();
+        }
+    }
+
     @Test
     public void add() {
         identityPage.realm(KcOidcBrokerConfiguration.INSTANCE.consumerRealmName());
@@ -154,4 +166,29 @@ public class AccountBrokerTest extends AbstractBaseBrokerTest {
         Assert.assertEquals("add-link-kc-oidc-idp", identities.get(0).getAction().getAttribute("id"));
     }
 
+    @Test
+    public void displayEnabledIdentityProviders() {
+        identityPage.realm(KcOidcBrokerConfiguration.INSTANCE.consumerRealmName());
+        identityPage.open();
+        loginPage.login("accountbrokertest", "password");
+        Assert.assertTrue(identityPage.isCurrent());
+
+        List<AccountFederatedIdentityPage.FederatedIdentity> identities = identityPage.getIdentities();
+        Assert.assertEquals(1, identities.size());
+
+        // Disable the identity provider
+        RealmResource realm = adminClient.realm(bc.consumerRealmName());
+        IdentityProviderResource providerResource = realm.identityProviders().get(bc.getIDPAlias());
+        IdentityProviderRepresentation provider = providerResource.toRepresentation();
+        provider.setEnabled(false);
+        providerResource.update(provider);
+
+        // Reload federated identities page
+        identityPage.open();
+        Assert.assertTrue(identityPage.isCurrent());
+
+        identities = identityPage.getIdentities();
+        Assert.assertEquals(0, identities.size());
+    }
+
 }