keycloak-aplcache

Details

diff --git a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/Client.java b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/Client.java
index 0294a04..a6ce3e5 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/Client.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/Client.java
@@ -6,6 +6,7 @@ import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
 
 import static org.keycloak.testsuite.console.page.fragment.Breadcrumb.BREADCRUMB_XPATH;
+import org.openqa.selenium.NoSuchElementException;
 
 /**
  *
@@ -73,6 +74,8 @@ public class Client extends Clients {
         private WebElement sessionsLink;
         @FindBy(linkText = "Installation")
         private WebElement installationLink;
+        @FindBy(linkText = "Service Account Roles")
+        private WebElement serviceAccountRoles;
 
         public void settings() {
             settingsLink.click();
@@ -102,6 +105,14 @@ public class Client extends Clients {
             installationLink.click();
         }
         
+        public boolean isServiceAccountRolesDisplayed() {
+            try {
+                return serviceAccountRoles.isDisplayed();
+            } catch (NoSuchElementException ex) {
+            }
+            return false;
+        }
+        
         public WebElement getTabs() {
             return tabs;
         }
diff --git a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientSettingsTest.java b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientSettingsTest.java
index 4469901..f94bb99 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientSettingsTest.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientSettingsTest.java
@@ -22,6 +22,7 @@ import org.junit.Test;
 import org.keycloak.representations.idm.ClientRepresentation;
 import org.keycloak.testsuite.console.page.clients.settings.ClientSettings;
 import org.keycloak.testsuite.util.Timer;
+import org.openqa.selenium.By;
 
 import javax.ws.rs.core.Response;
 import java.util.ArrayList;
@@ -32,7 +33,6 @@ import static org.keycloak.testsuite.auth.page.login.Login.OIDC;
 import static org.keycloak.testsuite.auth.page.login.Login.SAML;
 import static org.keycloak.testsuite.console.page.clients.settings.ClientSettingsForm.OidcAccessType.BEARER_ONLY;
 import static org.keycloak.testsuite.console.page.clients.settings.ClientSettingsForm.OidcAccessType.CONFIDENTIAL;
-import static org.keycloak.testsuite.console.page.clients.settings.ClientSettingsForm.SAMLClientSettingsForm.*;
 import static org.keycloak.testsuite.util.WaitUtils.pause;
 
 /**
@@ -109,6 +109,28 @@ public class ClientSettingsTest extends AbstractClientTest {
         assertClientSettingsEqual(newClient, found);
     }
     
+    //KEYCLOAK-4022
+    @Test
+    public void testOIDCConfidentialServiceAccountRolesTab() {
+        newClient = createClientRep("oidc-service-account-tab", OIDC);
+        createClient(newClient);
+        
+        newClient.setRedirectUris(TEST_REDIRECT_URIs);
+        newClient.setPublicClient(false);
+        
+        clientSettingsPage.form().setAccessType(CONFIDENTIAL);
+        clientSettingsPage.form().setServiceAccountsEnabled(true);
+        assertTrue(clientSettingsPage.form().isServiceAccountsEnabled());
+        //check if Service Account Roles tab is not present
+        assertFalse(clientSettingsPage.tabs().isServiceAccountRolesDisplayed());
+        
+        clientSettingsPage.form().setRedirectUris(TEST_REDIRECT_URIs);
+        clientSettingsPage.form().save();
+        
+        //should be there now
+        assertTrue(clientSettingsPage.tabs().getTabs().findElement(By.linkText("Service Account Roles")).isDisplayed());
+    }
+    
     @Test
     public void saveOIDCConfidentialWithoutRedirectURIs() {
         newClient = createClientRep("oidc-confidential", OIDC);