package org.picketlink.test.idm.usecases; import org.junit.Test; import org.picketlink.idm.RelationshipManager; import org.picketlink.idm.model.basic.Grant; import org.picketlink.idm.model.basic.Group; import org.picketlink.idm.model.basic.GroupMembership; import org.picketlink.idm.model.basic.Role; import org.picketlink.idm.model.basic.User; import org.picketlink.test.idm.AbstractPartitionManagerTestCase; import org.picketlink.test.idm.Configuration; import org.picketlink.test.idm.testers.IdentityConfigurationTester; import org.picketlink.test.idm.testers.LDAPUserGroupJPARoleConfigurationTester; import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; /** * @author Pedro Igor */ @Configuration (include = LDAPUserGroupJPARoleConfigurationTester.class) public class LDAPUserGroupMembershipJPARoleTestCase extends AbstractPartitionManagerTestCase { public LDAPUserGroupMembershipJPARoleTestCase(final IdentityConfigurationTester visitor) { super(visitor); } @Test public void testGrantGroupRole() { Group group = createGroup("someGroup"); Role role = createRole("someRole"); RelationshipManager relationshipManager = getPartitionManager().createRelationshipManager(); relationshipManager.add(new Grant(group, role)); List<Grant> result = relationshipManager .createRelationshipQuery(Grant.class) .setParameter(Grant.ASSIGNEE, group) .getResultList(); assertFalse(result.isEmpty()); assertEquals(1, result.size()); Grant relationship = result.get(0); assertEquals(group.getId(), relationship.getAssignee().getId()); assertEquals(role.getId(), relationship.getRole().getId()); } @Test public void testAddUserToGroup() { User user = createUser("john"); Group group = createGroup("someGroup"); RelationshipManager relationshipManager = getPartitionManager().createRelationshipManager(); relationshipManager.add(new GroupMembership(user, group)); List<GroupMembership> result = relationshipManager .createRelationshipQuery(GroupMembership.class) .setParameter(GroupMembership.GROUP, group) .getResultList(); assertFalse(result.isEmpty()); assertEquals(1, result.size()); GroupMembership relationship = result.get(0); assertEquals(group.getId(), relationship.getGroup().getId()); assertEquals(user.getId(), relationship.getMember().getId()); } @Test public void testGrantRoleToUserGroup() { Role role = createRole("someRole"); Group group = createGroup("someGroup"); RelationshipManager relationshipManager = getPartitionManager().createRelationshipManager(); relationshipManager.add(new Grant(group, role)); List<Grant> grants = relationshipManager .createRelationshipQuery(Grant.class) .setParameter(Grant.ASSIGNEE, group) .getResultList(); assertFalse(grants.isEmpty()); assertEquals(1, grants.size()); Grant grant = grants.get(0); assertEquals(group.getId(), grant.getAssignee().getId()); assertEquals(role.getId(), grant.getRole().getId()); User user = createUser("john"); relationshipManager.add(new GroupMembership(user, group)); List<GroupMembership> memberships = relationshipManager .createRelationshipQuery(GroupMembership.class) .setParameter(GroupMembership.GROUP, group) .getResultList(); assertFalse(memberships.isEmpty()); assertEquals(1, memberships.size()); GroupMembership membership = memberships.get(0); assertEquals(group.getId(), membership.getGroup().getId()); assertEquals(user.getId(), membership.getMember().getId()); memberships = relationshipManager .createRelationshipQuery(GroupMembership.class) .setParameter(GroupMembership.MEMBER, user) .getResultList(); assertFalse(memberships.isEmpty()); assertEquals(1, memberships.size()); membership = memberships.get(0); assertEquals(group.getId(), membership.getGroup().getId()); assertEquals(user.getId(), membership.getMember().getId()); grants = relationshipManager .createRelationshipQuery(Grant.class) .setParameter(Grant.ASSIGNEE, membership.getGroup()) .getResultList(); assertFalse(grants.isEmpty()); assertEquals(1, grants.size()); grant = grants.get(0); assertEquals(group.getId(), grant.getAssignee().getId()); assertEquals(role.getId(), grant.getRole().getId()); } }