keycloak-uncached
Changes
integration/admin-client/src/main/java/org/keycloak/admin/client/resource/RoleResource.java 18(+9 -9)
integration/admin-client/src/main/java/org/keycloak/admin/client/resource/RolesResource.java 8(+4 -4)
testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/client/ClientRolesTest.java 39(+39 -0)
testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/client/ClientTemplateTest.java 2(+1 -1)
testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/realm/RealmRolesTest.java 139(+139 -0)
Details
diff --git a/integration/admin-client/src/main/java/org/keycloak/admin/client/resource/RoleResource.java b/integration/admin-client/src/main/java/org/keycloak/admin/client/resource/RoleResource.java
index 0c214ec..9ac2cd9 100755
--- a/integration/admin-client/src/main/java/org/keycloak/admin/client/resource/RoleResource.java
+++ b/integration/admin-client/src/main/java/org/keycloak/admin/client/resource/RoleResource.java
@@ -38,38 +38,38 @@ public interface RoleResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
- public RoleRepresentation toRepresentation();
+ RoleRepresentation toRepresentation();
@PUT
@Consumes(MediaType.APPLICATION_JSON)
- public void update(RoleRepresentation roleRepresentation);
+ void update(RoleRepresentation roleRepresentation);
@DELETE
- public void remove();
+ void remove();
@GET
@Path("composites")
@Produces(MediaType.APPLICATION_JSON)
- public Set<RoleRepresentation> getChildren();
+ Set<RoleRepresentation> getRoleComposites();
@GET
@Path("composites/realm")
@Produces(MediaType.APPLICATION_JSON)
- public Set<RoleRepresentation> getRealmLevelChildren();
+ Set<RoleRepresentation> getRealmRoleComposites();
@GET
- @Path("composites/application/{appName}")
+ @Path("composites/clients/{appName}")
@Produces(MediaType.APPLICATION_JSON)
- public Set<RoleRepresentation> getApplicationLevelChildren(@PathParam("appName") String appName);
+ Set<RoleRepresentation> getClientRoleComposites(@PathParam("appName") String appName);
@POST
@Path("composites")
@Consumes(MediaType.APPLICATION_JSON)
- public void addChildren(List<RoleRepresentation> rolesToAdd);
+ void addComposites(List<RoleRepresentation> rolesToAdd);
@DELETE
@Path("composites")
@Consumes(MediaType.APPLICATION_JSON)
- public void removeChildren(List<RoleRepresentation> rolesToRemove);
+ void deleteComposites(List<RoleRepresentation> rolesToRemove);
}
diff --git a/integration/admin-client/src/main/java/org/keycloak/admin/client/resource/RolesResource.java b/integration/admin-client/src/main/java/org/keycloak/admin/client/resource/RolesResource.java
index 7bb6abc..835798a 100755
--- a/integration/admin-client/src/main/java/org/keycloak/admin/client/resource/RolesResource.java
+++ b/integration/admin-client/src/main/java/org/keycloak/admin/client/resource/RolesResource.java
@@ -36,17 +36,17 @@ public interface RolesResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
- public List<RoleRepresentation> list();
+ List<RoleRepresentation> list();
@POST
@Consumes(MediaType.APPLICATION_JSON)
- public void create(RoleRepresentation roleRepresentation);
+ void create(RoleRepresentation roleRepresentation);
@Path("{roleName}")
- public RoleResource get(@PathParam("roleName") String roleName);
+ RoleResource get(@PathParam("roleName") String roleName);
@Path("{role-name}")
@DELETE
- public void deleteRole(final @PathParam("role-name") String roleName);
+ void deleteRole(final @PathParam("role-name") String roleName);
}
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/client/ClientRolesTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/client/ClientRolesTest.java
index 5fb7c7d..60aec16 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/client/ClientRolesTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/client/ClientRolesTest.java
@@ -23,7 +23,14 @@ import org.junit.Test;
import org.keycloak.admin.client.resource.ClientResource;
import org.keycloak.admin.client.resource.RolesResource;
import org.keycloak.representations.idm.RoleRepresentation;
+import org.keycloak.testsuite.Assert;
+import org.keycloak.testsuite.util.RoleBuilder;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -75,4 +82,36 @@ public class ClientRolesTest extends AbstractClientTest {
assertFalse(hasRole(rolesRsc, "role2"));
}
+ @Test
+ public void testComposites() {
+ rolesRsc.create(makeRole("role-a"));
+
+ assertFalse(rolesRsc.get("role-a").toRepresentation().isComposite());
+ assertEquals(0, rolesRsc.get("role-a").getRoleComposites().size());
+
+ rolesRsc.create(makeRole("role-b"));
+ testRealmResource().roles().create(makeRole("role-c"));
+
+ List<RoleRepresentation> l = new LinkedList<>();
+ l.add(rolesRsc.get("role-b").toRepresentation());
+ l.add(testRealmResource().roles().get("role-c").toRepresentation());
+ rolesRsc.get("role-a").addComposites(l);
+
+ Set<RoleRepresentation> composites = rolesRsc.get("role-a").getRoleComposites();
+
+ assertTrue(rolesRsc.get("role-a").toRepresentation().isComposite());
+ Assert.assertNames(composites, "role-b", "role-c");
+
+ Set<RoleRepresentation> realmComposites = rolesRsc.get("role-a").getRealmRoleComposites();
+ Assert.assertNames(realmComposites, "role-c");
+
+ Set<RoleRepresentation> clientComposites = rolesRsc.get("role-a").getClientRoleComposites(clientRsc.toRepresentation().getId());
+ Assert.assertNames(clientComposites, "role-b");
+
+ rolesRsc.get("role-a").deleteComposites(l);
+
+ assertFalse(rolesRsc.get("role-a").toRepresentation().isComposite());
+ assertEquals(0, rolesRsc.get("role-a").getRoleComposites().size());
+ }
+
}
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/client/ClientTemplateTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/client/ClientTemplateTest.java
index 2c282ff..ffb6e88 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/client/ClientTemplateTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/client/ClientTemplateTest.java
@@ -162,7 +162,7 @@ public class ClientTemplateTest extends AbstractClientTest {
roleRep2 = testRealmResource().roles().get("role2").toRepresentation();
// Add role2 as composite to role1
- testRealmResource().roles().get("role1").addChildren(Collections.singletonList(roleRep2));
+ testRealmResource().roles().get("role1").addComposites(Collections.singletonList(roleRep2));
// create client template
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/realm/RealmRolesTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/realm/RealmRolesTest.java
new file mode 100644
index 0000000..17d9ad9
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/realm/RealmRolesTest.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright 2016 Red Hat, Inc. and/or its affiliates
+ * and other contributors as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.keycloak.testsuite.admin.realm;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.keycloak.admin.client.resource.RoleByIdResource;
+import org.keycloak.admin.client.resource.RolesResource;
+import org.keycloak.representations.idm.RoleRepresentation;
+import org.keycloak.testsuite.Assert;
+import org.keycloak.testsuite.admin.AbstractAdminTest;
+import org.keycloak.testsuite.admin.ApiUtil;
+import org.keycloak.testsuite.util.ClientBuilder;
+import org.keycloak.testsuite.util.RoleBuilder;
+
+import javax.ws.rs.NotFoundException;
+import javax.ws.rs.core.Response;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
+ */
+public class RealmRolesTest extends AbstractAdminTest {
+
+ private RolesResource resource;
+
+ private Map<String, String> ids = new HashMap<>();
+ private String clientUuid;
+
+ @Before
+ public void before() {
+ adminClient.realm(REALM_NAME).roles().create(RoleBuilder.create().name("role-a").description("Role A").build());
+ adminClient.realm(REALM_NAME).roles().create(RoleBuilder.create().name("role-b").description("Role B").build());
+
+ Response response = adminClient.realm(REALM_NAME).clients().create(ClientBuilder.create().clientId("client-a").build());
+ clientUuid = ApiUtil.getCreatedId(response);
+ adminClient.realm(REALM_NAME).clients().get(clientUuid).roles().create(RoleBuilder.create().name("role-c").description("Role C").build());
+
+ for (RoleRepresentation r : adminClient.realm(REALM_NAME).roles().list()) {
+ ids.put(r.getName(), r.getId());
+ }
+
+ for (RoleRepresentation r : adminClient.realm(REALM_NAME).clients().get(clientUuid).roles().list()) {
+ ids.put(r.getName(), r.getId());
+ }
+
+ resource = adminClient.realm(REALM_NAME).roles();
+ }
+
+ @Test
+ public void getRole() {
+ RoleRepresentation role = resource.get("role-a").toRepresentation();
+ assertNotNull(role);
+ assertEquals("role-a", role.getName());
+ assertEquals("Role A", role.getDescription());
+ assertFalse(role.isComposite());
+ }
+
+ @Test
+ public void updateRole() {
+ RoleRepresentation role = resource.get("role-a").toRepresentation();
+
+ role.setName("role-a-new");
+ role.setDescription("Role A New");
+
+ resource.get("role-a").update(role);
+
+ role = resource.get("role-a-new").toRepresentation();
+
+ assertNotNull(role);
+ assertEquals("role-a-new", role.getName());
+ assertEquals("Role A New", role.getDescription());
+ assertFalse(role.isComposite());
+ }
+
+ @Test
+ public void deleteRole() {
+ assertNotNull(resource.get("role-a"));
+ resource.deleteRole("role-a");
+ try {
+ resource.get("role-a").toRepresentation();
+ fail("Expected 404");
+ } catch (NotFoundException e) {
+ }
+ }
+
+ @Test
+ public void composites() {
+ assertFalse(resource.get("role-a").toRepresentation().isComposite());
+ assertEquals(0, resource.get("role-a").getRoleComposites().size());
+
+ List<RoleRepresentation> l = new LinkedList<>();
+ l.add(RoleBuilder.create().id(ids.get("role-b")).build());
+ l.add(RoleBuilder.create().id(ids.get("role-c")).build());
+ resource.get("role-a").addComposites(l);
+
+ Set<RoleRepresentation> composites = resource.get("role-a").getRoleComposites();
+
+ assertTrue(resource.get("role-a").toRepresentation().isComposite());
+ Assert.assertNames(composites, "role-b", "role-c");
+
+ Set<RoleRepresentation> realmComposites = resource.get("role-a").getRealmRoleComposites();
+ Assert.assertNames(realmComposites, "role-b");
+
+ Set<RoleRepresentation> clientComposites = resource.get("role-a").getClientRoleComposites(clientUuid);
+ Assert.assertNames(clientComposites, "role-c");
+
+ resource.get("role-a").deleteComposites(l);
+
+ assertFalse(resource.get("role-a").toRepresentation().isComposite());
+ assertEquals(0, resource.get("role-a").getRoleComposites().size());
+ }
+
+}
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/exportimport/LegacyImportTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/exportimport/LegacyImportTest.java
index b0b4c12..c648f5f 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/exportimport/LegacyImportTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/exportimport/LegacyImportTest.java
@@ -86,7 +86,7 @@ public class LegacyImportTest extends AbstractExportImportTest {
assertRolesAvailable(roles);
// Assert all admin roles are also available as composites of "realm-admin"
- Set<RoleRepresentation> realmAdminComposites = foo11RealmManagementClient.roles().get(AdminRoles.REALM_ADMIN).getChildren();
+ Set<RoleRepresentation> realmAdminComposites = foo11RealmManagementClient.roles().get(AdminRoles.REALM_ADMIN).getRoleComposites();
assertRolesAvailable(realmAdminComposites);
// Assert "foo11-master" client correctly set and contains all admin roles.
@@ -95,7 +95,7 @@ public class LegacyImportTest extends AbstractExportImportTest {
assertRolesAvailable(roles);
// Assert all admin roles are also available as composites of "admin" role
- Set<RoleRepresentation> masterAdminComposites = adminClient.realm(Config.getAdminRealm()).roles().get(AdminRoles.ADMIN).getChildren();
+ Set<RoleRepresentation> masterAdminComposites = adminClient.realm(Config.getAdminRealm()).roles().get(AdminRoles.ADMIN).getRoleComposites();
assertRolesAvailable(masterAdminComposites);
}