diff --git a/integration/client-cli/admin-cli/src/main/java/org/keycloak/client/admin/cli/util/HttpUtil.java b/integration/client-cli/admin-cli/src/main/java/org/keycloak/client/admin/cli/util/HttpUtil.java index f2e27b3c7af..ebc9b8d4a50 100644 --- a/integration/client-cli/admin-cli/src/main/java/org/keycloak/client/admin/cli/util/HttpUtil.java +++ b/integration/client-cli/admin-cli/src/main/java/org/keycloak/client/admin/cli/util/HttpUtil.java @@ -442,7 +442,11 @@ public class HttpUtil { public static String getAttrForType(String rootUrl, String realm, String auth, String resourceEndpoint, String attrName, String attrValue, String returnAttrName) { String resourceUrl = composeResourceUrl(rootUrl, realm, resourceEndpoint); - resourceUrl = HttpUtil.addQueryParamsToUri(resourceUrl, attrName, attrValue, "first", "0", "max", "2"); + if ("roles".equals(resourceEndpoint)) { + resourceUrl = HttpUtil.addQueryParamsToUri(resourceUrl, "search", attrValue, "first", "0", "max", "2"); + } else { + resourceUrl = HttpUtil.addQueryParamsToUri(resourceUrl, attrName, attrValue, "first", "0", "max", "2"); + } List users = doGetJSON(RoleOperations.LIST_OF_NODES.class, resourceUrl, auth); diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/cli/admin/KcAdmSessionTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/cli/admin/KcAdmSessionTest.java index f50e744f9ba..4b6e9b5d752 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/cli/admin/KcAdmSessionTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/cli/admin/KcAdmSessionTest.java @@ -197,4 +197,33 @@ public class KcAdmSessionTest extends AbstractAdmCliTest { assertExitCodeAndStreamSizes(exe, 0, 0, 0); } } + + @Test + public void testCompositeRoleCreationWithHigherVolumeOfRoles() throws Exception { + + FileConfigHandler handler = initCustomConfigFile(); + try (TempFileResource configFile = new TempFileResource(handler.getConfigFile())) { + + // login as admin + loginAsUser(configFile.getFile(), serverUrl, "master", "admin", "admin"); + + final String realmName = "HigherVolumeRolesRealm"; + + // create realm + KcAdmExec exe = execute(String.format("create realms --config '%s' -s realm=%s -s enabled=true", configFile.getName(), realmName)); + assertExitCodeAndStreamSizes(exe, 0, 0, 1); + + for (int i = 0; i < 20; i++) { + exe = execute(String.format("create roles --config '%s' -r %s -s name=ROLE%d", configFile.getName(), realmName, i)); + assertExitCodeAndStdErrSize(exe, 0, 1); + } + + exe = execute(String.format("add-roles --config '%s' -r %s --rname ROLE11 --cclientid realm-management --rolename impersonation --rolename view-users --rolename view-realm --rolename manage-users", configFile.getName(), realmName)); + assertExitCodeAndStreamSizes(exe, 0, 0, 0); + + } + + } + + }