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);