package org.apereo.portal.portlets.lookup;
import static org.mockito.Mockito.*;
import static org.junit.Assert.*;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import org.apereo.portal.security.IAuthorizationPrincipal;
import org.apereo.portal.security.IPermission;
import org.jasig.services.persondir.IPersonAttributeDao;
import org.junit.Before;
import org.junit.Test;
/**
* Unit tests for {@link PersonLookupHelperImpl}.
*
* @since 5.0
*/
public class PersonLookupHelperImplTest extends PersonLookupHelperImpl {
private static final String GENERALLY_PERMITTED_ATTRIBUTE = "generally.permitted.attribute";
private static final String PERMITTED_OWN_ATTRIBUTE = "permitted.own.attribute";
private static final String NEVER_PERMITTED_ATTRIBUTE = "never.permitted.attribute";
private static final Set<String> ALL_ATTRIBUTES = Collections.unmodifiableSet(
new HashSet<>(
Arrays.asList(
new String[] {
GENERALLY_PERMITTED_ATTRIBUTE,
PERMITTED_OWN_ATTRIBUTE,
NEVER_PERMITTED_ATTRIBUTE
}
)
));
private IAuthorizationPrincipal principal;
@Before
public void init() {
// Must make the superclass use our collection of attribute names
IPersonAttributeDao personAttributeDao = mock(IPersonAttributeDao.class);
when(personAttributeDao.getPossibleUserAttributeNames()).thenReturn(ALL_ATTRIBUTES);
setPersonAttributeDao(personAttributeDao);
principal = mock(IAuthorizationPrincipal.class);
// Generally permitted
when(principal.hasPermission(
IPermission.PORTAL_USERS,
IPermission.VIEW_USER_ATTRIBUTE_ACTIVITY,
GENERALLY_PERMITTED_ATTRIBUTE)
).thenReturn(true);
when(principal.hasPermission(
IPermission.PORTAL_USERS,
IPermission.VIEW_USER_ATTRIBUTE_ACTIVITY,
PERMITTED_OWN_ATTRIBUTE)
).thenReturn(false);
when(principal.hasPermission(
IPermission.PORTAL_USERS,
IPermission.VIEW_USER_ATTRIBUTE_ACTIVITY,
NEVER_PERMITTED_ATTRIBUTE)
).thenReturn(false);
// Own attributes
when(principal.hasPermission(
IPermission.PORTAL_USERS,
IPermission.VIEW_OWN_USER_ATTRIBUTE_ACTIVITY,
GENERALLY_PERMITTED_ATTRIBUTE)
).thenReturn(true);
when(principal.hasPermission(
IPermission.PORTAL_USERS,
IPermission.VIEW_OWN_USER_ATTRIBUTE_ACTIVITY,
PERMITTED_OWN_ATTRIBUTE)
).thenReturn(true);
when(principal.hasPermission(IPermission.PORTAL_USERS,
IPermission.VIEW_OWN_USER_ATTRIBUTE_ACTIVITY,
NEVER_PERMITTED_ATTRIBUTE)
).thenReturn(false);
}
@Test
public void testGetPermittedAttributes() {
final Set<String> permittedAttributes = getPermittedAttributes(principal, ALL_ATTRIBUTES);
assertTrue(permittedAttributes.contains(GENERALLY_PERMITTED_ATTRIBUTE));
assertFalse(permittedAttributes.contains(PERMITTED_OWN_ATTRIBUTE));
assertFalse(permittedAttributes.contains(NEVER_PERMITTED_ATTRIBUTE));
}
@Test
public void testGetPermittedOwnAttributes() {
final Set<String> permittedAttributes = getPermittedAttributes(principal, ALL_ATTRIBUTES);
final Set<String> permittedOwnAttributes = getPermittedOwnAttributes(principal, permittedAttributes);
assertTrue(permittedOwnAttributes.contains(GENERALLY_PERMITTED_ATTRIBUTE));
assertTrue(permittedOwnAttributes.contains(PERMITTED_OWN_ATTRIBUTE));
assertFalse(permittedOwnAttributes.contains(NEVER_PERMITTED_ATTRIBUTE));
}
}