001/*
002 * The contents of this file are subject to the license and copyright
003 * detailed in the LICENSE and NOTICE files at the root of the source
004 * tree.
005 */
006package org.fcrepo.auth.webac;
007
008import static org.fcrepo.auth.webac.URIConstants.WEBAC_MODE_READ;
009import static org.fcrepo.auth.webac.URIConstants.WEBAC_MODE_WRITE;
010import static org.junit.Assert.assertEquals;
011import static org.junit.Assert.assertTrue;
012
013import java.net.URI;
014import java.util.Arrays;
015import java.util.Collections;
016import java.util.HashSet;
017import java.util.List;
018import java.util.Set;
019
020import org.junit.Test;
021
022/**
023 * @author acoburn
024 * @since 9/2/15
025 */
026public class WebACAuthorizationTest {
027
028    private final String AGENT1 = "me";
029    private final String AGENT2 = "you";
030    private final String AGENT_CLASS1 = "this";
031    private final String AGENT_CLASS2 = "that";
032    private final String ACCESS_TO1 = "/foo";
033    private final String ACCESS_TO2 = "/bar";
034    private final String ACCESS_TO3 = "/baz";
035    private final String ACCESS_TO_CLASS1 = "ex:Image";
036    private final String ACCESS_TO_CLASS2 = "ex:Archive";
037    private final String ACCESS_GROUP1 = "/groupA";
038    private final String ACCESS_GROUP2 = "/groupB";
039    private final String DEFAULT_1 = "/foo";
040
041    @Test
042    public void testLists() {
043        final List<String> agents = Arrays.asList(AGENT1, AGENT2, AGENT1);
044        final List<String> agentClasses = Arrays.asList(AGENT_CLASS1, AGENT_CLASS2, AGENT_CLASS2);
045        final List<URI> modes = Arrays.asList(WEBAC_MODE_READ, WEBAC_MODE_WRITE, WEBAC_MODE_READ);
046        final List<String> accessTo = Arrays.asList(ACCESS_TO1, ACCESS_TO2, ACCESS_TO3);
047        final List<String> accessToClass = Arrays.asList(ACCESS_TO_CLASS1, ACCESS_TO_CLASS2);
048        final List<String> accessGroups = Arrays.asList(ACCESS_GROUP1, ACCESS_GROUP2);
049        final List<String> defaults = Collections.singletonList(DEFAULT_1);
050
051        final WebACAuthorizationImpl auth = new WebACAuthorizationImpl(agents, agentClasses,
052                modes, accessTo, accessToClass, accessGroups, defaults);
053
054        assertEquals(2, auth.getAgents().size());
055        assertTrue(auth.getAgents().contains(AGENT1));
056        assertEquals(2, auth.getAgentClasses().size());
057        assertTrue(auth.getAgentClasses().contains(AGENT_CLASS2));
058        assertEquals(2, auth.getModes().size());
059        assertTrue(auth.getModes().contains(WEBAC_MODE_READ));
060        assertEquals(3, auth.getAccessToURIs().size());
061        assertTrue(auth.getAccessToURIs().contains(ACCESS_TO3));
062        assertEquals(2, auth.getAccessToClassURIs().size());
063        assertTrue(auth.getAccessToClassURIs().contains(ACCESS_TO_CLASS2));
064        assertEquals(2, auth.getAgentGroups().size());
065        assertTrue(auth.getAgentGroups().contains(ACCESS_GROUP1));
066        assertTrue(auth.getAgentGroups().contains(ACCESS_GROUP2));
067        assertEquals(1, auth.getDefaults().size());
068
069    }
070
071    @Test
072    public void testSets() {
073        final Set<String> agents = new HashSet<>(Arrays.asList(AGENT1, AGENT2));
074        final Set<String> agentClasses = new HashSet<>(Arrays.asList(AGENT_CLASS1, AGENT_CLASS2));
075        final Set<URI> modes = new HashSet<>(Arrays.asList(WEBAC_MODE_WRITE, WEBAC_MODE_READ));
076        final Set<String> accessTo = new HashSet<>(Arrays.asList(ACCESS_TO1, ACCESS_TO2, ACCESS_TO3));
077        final Set<String> accessToClass = new HashSet<>(Arrays.asList(ACCESS_TO_CLASS1, ACCESS_TO_CLASS2));
078        final Set<String> accessGroups = new HashSet<>(Arrays.asList(ACCESS_GROUP1, ACCESS_GROUP2));
079        final Set<String> defaults = new HashSet<>(Collections.singletonList(DEFAULT_1));
080
081        final WebACAuthorizationImpl auth = new WebACAuthorizationImpl(agents, agentClasses,
082                modes, accessTo, accessToClass, accessGroups, defaults);
083
084        assertEquals(2, auth.getAgents().size());
085        assertTrue(auth.getAgents().contains(AGENT1));
086        assertEquals(2, auth.getAgentClasses().size());
087        assertTrue(auth.getAgentClasses().contains(AGENT_CLASS2));
088        assertEquals(2, auth.getModes().size());
089        assertTrue(auth.getModes().contains(WEBAC_MODE_READ));
090        assertEquals(3, auth.getAccessToURIs().size());
091        assertTrue(auth.getAccessToURIs().contains(ACCESS_TO3));
092        assertEquals(2, auth.getAccessToClassURIs().size());
093        assertTrue(auth.getAccessToClassURIs().contains(ACCESS_TO_CLASS2));
094        assertEquals(1, auth.getDefaults().size());
095        assertEquals(2, auth.getAgentGroups().size());
096        assertTrue(auth.getAgentGroups().contains(ACCESS_GROUP1));
097        assertTrue(auth.getAgentGroups().contains(ACCESS_GROUP2));
098    }
099
100
101}