/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* 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.picketlink.test.idm.basic;
import org.junit.Test;
import org.picketlink.idm.IdentityManager;
import org.picketlink.idm.RelationshipManager;
import org.picketlink.idm.model.basic.BasicModel;
import org.picketlink.idm.model.basic.Grant;
import org.picketlink.idm.model.basic.Group;
import org.picketlink.idm.model.basic.Realm;
import org.picketlink.idm.model.basic.Role;
import org.picketlink.idm.model.basic.User;
import org.picketlink.idm.query.RelationshipQuery;
import org.picketlink.test.idm.Configuration;
import org.picketlink.test.idm.testers.FileStoreConfigurationTester;
import org.picketlink.test.idm.testers.IdentityConfigurationTester;
import org.picketlink.test.idm.testers.JPAStoreConfigurationTester;
import org.picketlink.test.idm.testers.LDAPStoreConfigurationTester;
import org.picketlink.test.idm.testers.SingleConfigLDAPJPAStoreConfigurationTester;
import java.util.Date;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
/**
* <p>
* Test case for the {@link Role} basic management operations using only the default realm.
* </p>
*
* @author <a href="mailto:psilva@redhat.com">Pedro Silva</a>
*
*/
@Configuration(include = {JPAStoreConfigurationTester.class, FileStoreConfigurationTester.class,
LDAPStoreConfigurationTester.class, SingleConfigLDAPJPAStoreConfigurationTester.class})
public class RoleManagementTestCase extends AbstractIdentityTypeTestCase<Role> {
public RoleManagementTestCase(IdentityConfigurationTester builder) {
super(builder);
}
@Test
public void testCreate() throws Exception {
Role newRole = createRole("someRole");
Role storedRole = getRole(newRole.getName());
assertNotNull(storedRole);
assertEquals(newRole.getId(), storedRole.getId());
assertEquals(newRole.getName(), storedRole.getName());
assertNotNull(storedRole.getPartition());
assertEquals(Realm.DEFAULT_REALM, storedRole.getPartition().getName());
assertTrue(storedRole.isEnabled());
assertNull(storedRole.getExpirationDate());
assertNotNull(storedRole.getCreatedDate());
assertTrue(new Date().compareTo(storedRole.getCreatedDate()) >= 0);
}
@Test
public void testRemove() throws Exception {
Role storedRole = createIdentityType();
IdentityManager identityManager = getIdentityManager();
identityManager.remove(storedRole);
Role removedRole = getRole(storedRole.getName());
assertNull(removedRole);
User anotherUser = createUser("user");
Role role = createRole("role");
Group group = createGroup("group", null);
RelationshipManager relationshipManager = getPartitionManager().createRelationshipManager();
BasicModel.grantRole(relationshipManager, anotherUser, role);
BasicModel.addToGroup(relationshipManager, anotherUser, group);
RelationshipQuery<?> relationshipQuery = relationshipManager.createRelationshipQuery(Grant.class);
relationshipQuery.setParameter(Grant.ROLE, role);
assertFalse(relationshipQuery.getResultList().isEmpty());
identityManager.remove(role);
relationshipQuery = relationshipManager.createRelationshipQuery(Grant.class);
relationshipQuery.setParameter(Grant.ROLE, role);
assertTrue(relationshipQuery.getResultList().isEmpty());
}
@Test
public void testEqualsMethod() {
Role instanceA = createRole("roleA");
Role instanceB = createRole("roleB");
assertFalse(instanceA.equals(instanceB));
assertTrue(instanceA.getName().equals(getRole(instanceA.getName()).getName()));
}
@Override
protected Role createIdentityType() {
return createRole("Administrator");
}
@Override
protected Role getIdentityType() {
return getRole("Administrator");
}
}