/**
* @throws Exception
*/
@Test
public void assignAndUnassignAccessRights() throws Exception {
Realm realm = getDefaultRealm();
Policy policy = createPolicy(realm);
AccessRights accessRights = createAllAccessRights(getResourceType().getPermissionClass());
assertFalse("The resource should not be attached", getPolicyService().isResourceAttachedToPolicy(accessRights, policy, realm));
PropertyList selectedPolicies = PropertyList.createFromArray(new int[] {policy.getResourceId()});
PolicyDatabaseFactory.getInstance().attachResourceToPolicyList(accessRights, selectedPolicies, getSessionInfo());
assertTrue("The resource should be attached", getPolicyService().isResourceAttachedToPolicy(accessRights, policy, realm));
PolicyDatabaseFactory.getInstance().detachResourceFromPolicyList(accessRights, getSessionInfo());
assertFalse("The resource should not be attached", getPolicyService().isResourceAttachedToPolicy(accessRights, policy, realm));
// other resources should still be attached.
List<AuthenticationScheme> authenticationSchemeSequences = SystemDatabaseFactory.getInstance().getAuthenticationSchemeSequences();
Policy everyone = getPolicyService().getPolicyByName("Everyone", realm.getResourceId());
for (AuthenticationScheme scheme : authenticationSchemeSequences) {
assertTrue("Auth scheme " + scheme.getResourceName() + " not assigned to everyone.", getPolicyService().isResourceAttachedToPolicy(scheme, everyone, realm));
}
AccessRights personal = getPolicyService().getAccessRightsByName("Global Permissions", realm.getRealmID());
assertTrue("Profile " + personal.getResourceName() + " not assigned to everyone.", getPolicyService().isResourceAttachedToPolicy(personal, everyone, realm));
getPolicyService().deleteAccessRights(accessRights.getResourceId());
getPolicyService().deletePolicy(policy.getResourceId());
}