package org.picketlink.test.idm.performance;
import org.junit.Test;
import org.picketlink.idm.IdentityManager;
import org.picketlink.idm.RelationshipManager;
import org.picketlink.idm.model.basic.Group;
import org.picketlink.idm.model.basic.GroupMembership;
import org.picketlink.idm.model.basic.User;
import org.picketlink.idm.query.IdentityQuery;
import org.picketlink.idm.query.RelationshipQuery;
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.LDAPJPAPerformanceConfigurationTester;
import java.util.List;
import static org.junit.Assert.assertFalse;
/**
* @author Pedro Igor
*/
@Configuration (include = LDAPJPAPerformanceConfigurationTester.class)
public class LDAPJPAPerformanceTestCase extends AbstractPartitionManagerTestCase {
public LDAPJPAPerformanceTestCase(final IdentityConfigurationTester visitor) {
super(visitor);
}
@Test
public void testUserQueries() {
IdentityManager identityManager = getIdentityManager();
IdentityQuery<User> query = identityManager.createIdentityQuery(User.class);
query.setParameter(User.LOGIN_NAME, "newuser1");
assertFalse(query.getResultList().isEmpty());
}
@Test
public void testGroupQueries() {
IdentityManager identityManager = getIdentityManager();
IdentityQuery<Group> query = identityManager.createIdentityQuery(Group.class);
query.setParameter(Group.NAME, "users1");
assertFalse(query.getResultList().isEmpty());
}
@Test
public void testGroupMembershipByGroupQueries() {
IdentityManager identityManager = getIdentityManager();
IdentityQuery<Group> query = identityManager.createIdentityQuery(Group.class);
query.setParameter(Group.NAME, "users1");
List<Group> result = query.getResultList();
RelationshipManager relationshipManager = getPartitionManager().createRelationshipManager();
for (Group group: result) {
RelationshipQuery<GroupMembership> relationshipQuery = relationshipManager.createRelationshipQuery(GroupMembership.class);
relationshipQuery.setParameter(GroupMembership.GROUP, group);
assertFalse(relationshipQuery.getResultList().isEmpty());
}
}
@Test
public void testGroupMembershipByMemberQueries() {
IdentityManager identityManager = getIdentityManager();
IdentityQuery<User> query = identityManager.createIdentityQuery(User.class);
query.setParameter(User.LOGIN_NAME, "newuser1");
List<User> result = query.getResultList();
RelationshipManager relationshipManager = getPartitionManager().createRelationshipManager();
for (User user: result) {
RelationshipQuery<GroupMembership> relationshipQuery = relationshipManager.createRelationshipQuery(GroupMembership.class);
relationshipQuery.setParameter(GroupMembership.MEMBER, user);
assertFalse(relationshipQuery.getResultList().isEmpty());
}
}
}