diff --git a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/authorization/policy/AggregatePolicyForm.java b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/authorization/policy/AggregatePolicyForm.java
index 956e1ae..34553d3 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/authorization/policy/AggregatePolicyForm.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/authorization/policy/AggregatePolicyForm.java
@@ -23,8 +23,14 @@ import java.util.Set;
import org.jboss.arquillian.graphene.page.Page;
import org.keycloak.representations.idm.authorization.AbstractPolicyRepresentation;
import org.keycloak.representations.idm.authorization.AggregatePolicyRepresentation;
+import org.keycloak.representations.idm.authorization.ClientPolicyRepresentation;
+import org.keycloak.representations.idm.authorization.GroupPolicyRepresentation;
+import org.keycloak.representations.idm.authorization.JSPolicyRepresentation;
import org.keycloak.representations.idm.authorization.Logic;
import org.keycloak.representations.idm.authorization.RolePolicyRepresentation;
+import org.keycloak.representations.idm.authorization.RulePolicyRepresentation;
+import org.keycloak.representations.idm.authorization.TimePolicyRepresentation;
+import org.keycloak.representations.idm.authorization.UserPolicyRepresentation;
import org.keycloak.testsuite.console.page.fragment.ModalDialog;
import org.keycloak.testsuite.console.page.fragment.MultipleStringSelect2;
import org.keycloak.testsuite.page.Form;
@@ -64,6 +70,24 @@ public class AggregatePolicyForm extends Form {
@Page
private RolePolicy rolePolicy;
+ @Page
+ private UserPolicy userPolicy;
+
+ @Page
+ private ClientPolicy clientPolicy;
+
+ @Page
+ private JSPolicy jsPolicy;
+
+ @Page
+ private TimePolicy timePolicy;
+
+ @Page
+ private RulePolicy rulePolicy;
+
+ @Page
+ private GroupPolicy groupPolicy;
+
public void populate(AggregatePolicyRepresentation expected, boolean save) {
setInputValue(name, expected.getName());
setInputValue(description, expected.getDescription());
@@ -122,6 +146,18 @@ public class AggregatePolicyForm extends Form {
if ("role".equals(expected.getType())) {
rolePolicy.form().populate((RolePolicyRepresentation) expected, true);
+ } else if ("user".equalsIgnoreCase(expected.getType())) {
+ userPolicy.form().populate((UserPolicyRepresentation) expected, true);
+ } else if ("client".equalsIgnoreCase(expected.getType())) {
+ clientPolicy.form().populate((ClientPolicyRepresentation) expected, true);
+ } else if ("js".equalsIgnoreCase(expected.getType())) {
+ jsPolicy.form().populate((JSPolicyRepresentation) expected, true);
+ } else if ("time".equalsIgnoreCase(expected.getType())) {
+ timePolicy.form().populate((TimePolicyRepresentation) expected, true);
+ } else if ("rules".equalsIgnoreCase(expected.getType())) {
+ rulePolicy.form().populate((RulePolicyRepresentation) expected, true);
+ } else if ("group".equalsIgnoreCase(expected.getType())) {
+ groupPolicy.form().populate((GroupPolicyRepresentation) expected, true);
}
}
}
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/authorization/AggregatePolicyManagementTest.java b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/authorization/AggregatePolicyManagementTest.java
index 52ae14c..19ccbdc 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/authorization/AggregatePolicyManagementTest.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/authorization/AggregatePolicyManagementTest.java
@@ -20,21 +20,35 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
+import java.util.UUID;
import java.util.stream.Collectors;
import org.junit.Before;
import org.junit.Test;
import org.keycloak.admin.client.resource.AuthorizationResource;
+import org.keycloak.admin.client.resource.ClientsResource;
import org.keycloak.admin.client.resource.PoliciesResource;
+import org.keycloak.admin.client.resource.RealmResource;
import org.keycloak.admin.client.resource.RolePoliciesResource;
import org.keycloak.admin.client.resource.RolesResource;
+import org.keycloak.admin.client.resource.UsersResource;
+import org.keycloak.common.Version;
import org.keycloak.representations.idm.RoleRepresentation;
import org.keycloak.representations.idm.authorization.AggregatePolicyRepresentation;
+import org.keycloak.representations.idm.authorization.ClientPolicyRepresentation;
+import org.keycloak.representations.idm.authorization.GroupPolicyRepresentation;
+import org.keycloak.representations.idm.authorization.JSPolicyRepresentation;
import org.keycloak.representations.idm.authorization.Logic;
import org.keycloak.representations.idm.authorization.RolePolicyRepresentation;
+import org.keycloak.representations.idm.authorization.RulePolicyRepresentation;
+import org.keycloak.representations.idm.authorization.TimePolicyRepresentation;
import org.keycloak.representations.idm.authorization.UserPolicyRepresentation;
+import org.keycloak.testsuite.admin.ApiUtil;
import org.keycloak.testsuite.console.page.clients.authorization.policy.AggregatePolicy;
import org.keycloak.testsuite.console.page.clients.authorization.policy.UserPolicy;
+import org.keycloak.testsuite.util.ClientBuilder;
+import org.keycloak.testsuite.util.GroupBuilder;
+import org.keycloak.testsuite.util.UserBuilder;
/**
* @author <a href="mailto:psilva@redhat.com">Pedro Igor</a>
@@ -44,16 +58,22 @@ public class AggregatePolicyManagementTest extends AbstractAuthorizationSettings
@Before
public void configureTest() {
super.configureTest();
- RolesResource realmRoles = testRealmResource().roles();
+ RealmResource realmResource = testRealmResource();
+ RolesResource realmRoles = realmResource.roles();
realmRoles.create(new RoleRepresentation("Role A", "", false));
realmRoles.create(new RoleRepresentation("Role B", "", false));
+ UsersResource users = realmResource.users();
+ users.create(UserBuilder.create().username("user a").build());
+ ClientsResource clients = realmResource.clients();
+ clients.create(ClientBuilder.create().clientId("client a").build());
+ realmResource.groups().add(GroupBuilder.create().name("Group A").build());
RolePolicyRepresentation policyA = new RolePolicyRepresentation();
policyA.setName("Policy A");
policyA.addRole("Role A");
- AuthorizationResource authorization = testRealmResource().clients().get(newClient.getId()).authorization();
+ AuthorizationResource authorization = realmResource.clients().get(newClient.getId()).authorization();
PoliciesResource policies = authorization.policies();
RolePoliciesResource roles = policies.role();
@@ -149,7 +169,7 @@ public class AggregatePolicyManagementTest extends AbstractAuthorizationSettings
RolePolicyRepresentation childPolicy = new RolePolicyRepresentation();
- childPolicy.setName("Child Role Policy");
+ childPolicy.setName(UUID.randomUUID().toString());
childPolicy.addRole("Role A");
policy.createPolicy(childPolicy);
@@ -168,24 +188,75 @@ public class AggregatePolicyManagementTest extends AbstractAuthorizationSettings
public void testCreateWithChildAndSelectedPolicy() {
AggregatePolicyRepresentation expected = new AggregatePolicyRepresentation();
- expected.setName("Test Child Create Aggregate Policy");
+ expected.setName("Test Child Create And Select Aggregate Policy");
expected.setDescription("description");
expected.addPolicy("Policy C");
AggregatePolicy policy = authorizationPage.authorizationTabs().policies().create(expected, false);
- RolePolicyRepresentation childPolicy = new RolePolicyRepresentation();
-
- childPolicy.setName("Child Role Policy");
- childPolicy.addRole("Role A");
+ RolePolicyRepresentation childRolePolicy = new RolePolicyRepresentation();
+ childRolePolicy.setName(UUID.randomUUID().toString());
+ childRolePolicy.addRole("Role A");
+ policy.createPolicy(childRolePolicy);
+ expected.addPolicy(childRolePolicy.getName());
+
+ UserPolicyRepresentation childUserPolicy = new UserPolicyRepresentation();
+ childUserPolicy.setName(UUID.randomUUID().toString());
+ childUserPolicy.setDescription("description");
+ childUserPolicy.addUser("user a");
+ policy.createPolicy(childUserPolicy);
+ expected.addPolicy(childUserPolicy.getName());
+
+ ClientPolicyRepresentation childClientPolicy = new ClientPolicyRepresentation();
+ childClientPolicy.setName(UUID.randomUUID().toString());
+ childClientPolicy.setDescription("description");
+ childClientPolicy.addClient("client a");
+ policy.createPolicy(childClientPolicy);
+ expected.addPolicy(childClientPolicy.getName());
+
+ JSPolicyRepresentation childJSPolicy = new JSPolicyRepresentation();
+
+ childJSPolicy.setName(UUID.randomUUID().toString());
+ childJSPolicy.setDescription("description");
+ childJSPolicy.setCode("$evaluation.grant();");
+ policy.createPolicy(childJSPolicy);
+ expected.addPolicy(childJSPolicy.getName());
+
+ TimePolicyRepresentation childTimePolicy = new TimePolicyRepresentation();
+
+ childTimePolicy.setName(UUID.randomUUID().toString());
+ childTimePolicy.setDescription("description");
+ childTimePolicy.setNotBefore("2017-01-01 00:00:00");
+ childTimePolicy.setNotBefore("2018-01-01 00:00:00");
+ policy.createPolicy(childTimePolicy);
+ expected.addPolicy(childTimePolicy.getName());
+
+ RulePolicyRepresentation rulePolicy = new RulePolicyRepresentation();
+
+ rulePolicy.setName(UUID.randomUUID().toString());
+ rulePolicy.setDescription("description");
+ rulePolicy.setArtifactGroupId("org.keycloak");
+ rulePolicy.setArtifactId("photoz-authz-policy");
+ rulePolicy.setArtifactVersion(Version.VERSION);
+ rulePolicy.setModuleName("PhotozAuthzOwnerPolicy");
+ rulePolicy.setSessionName("MainOwnerSession");
+ rulePolicy.setScannerPeriod("1");
+ rulePolicy.setScannerPeriodUnit("Minutes");
+ policy.createPolicy(rulePolicy);
+ expected.addPolicy(rulePolicy.getName());
+
+ GroupPolicyRepresentation childGroupPolicy = new GroupPolicyRepresentation();
+
+ childGroupPolicy.setName(UUID.randomUUID().toString());
+ childGroupPolicy.setDescription("description");
+ childGroupPolicy.setGroupsClaim("groups");
+ childGroupPolicy.addGroupPath("/Group A", true);
+ policy.createPolicy(childGroupPolicy);
+ expected.addPolicy(childGroupPolicy.getName());
- policy.createPolicy(childPolicy);
policy.form().save();
-
assertAlertSuccess();
- expected.addPolicy(childPolicy.getName());
-
authorizationPage.navigateTo();
AggregatePolicy actual = authorizationPage.authorizationTabs().policies().name(expected.getName());
assertPolicy(expected, actual);
@@ -205,7 +276,7 @@ public class AggregatePolicyManagementTest extends AbstractAuthorizationSettings
RolePolicyRepresentation childPolicy = new RolePolicyRepresentation();
- childPolicy.setName("Child Role Policy");
+ childPolicy.setName(UUID.randomUUID().toString());
childPolicy.addRole("Role A");
policy.createPolicy(childPolicy);