001/**
002 * Copyright 2015 DuraSpace, Inc.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *     http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.fcrepo.auth.webac;
017
018import static org.fcrepo.auth.webac.URIConstants.WEBAC_MODE_READ;
019import static org.fcrepo.auth.webac.URIConstants.WEBAC_MODE_WRITE;
020import static org.junit.Assert.assertEquals;
021import static org.junit.Assert.assertTrue;
022
023import java.net.URI;
024import java.util.Arrays;
025import java.util.HashSet;
026import java.util.List;
027import java.util.Set;
028
029import org.junit.Test;
030
031/**
032 * @author acoburn
033 * @since 9/2/15
034 */
035public class WebACAuthorizationTest {
036
037    private final String AGENT1 = "me";
038    private final String AGENT2 = "you";
039    private final String AGENT_CLASS1 = "this";
040    private final String AGENT_CLASS2 = "that";
041    private final String ACCESS_TO1 = "/foo";
042    private final String ACCESS_TO2 = "/bar";
043    private final String ACCESS_TO3 = "/baz";
044    private final String ACCESS_TO_CLASS1 = "ex:Image";
045    private final String ACCESS_TO_CLASS2 = "ex:Archive";
046
047    @Test
048    public void testLists() {
049        final List<String> agents = Arrays.asList(AGENT1, AGENT2, AGENT1);
050        final List<String> agentClasses = Arrays.asList(AGENT_CLASS1, AGENT_CLASS2, AGENT_CLASS2);
051        final List<URI> modes = Arrays.asList(WEBAC_MODE_READ, WEBAC_MODE_WRITE, WEBAC_MODE_READ);
052        final List<String> accessTo = Arrays.asList(ACCESS_TO1, ACCESS_TO2, ACCESS_TO3);
053        final List<String> accessToClass = Arrays.asList(ACCESS_TO_CLASS1, ACCESS_TO_CLASS2);
054
055        final WebACAuthorization auth = new WebACAuthorization(agents, agentClasses,
056                modes, accessTo, accessToClass);
057
058        assertEquals(2, auth.getAgents().size());
059        assertTrue(auth.getAgents().contains(AGENT1));
060        assertEquals(2, auth.getAgentClasses().size());
061        assertTrue(auth.getAgentClasses().contains(AGENT_CLASS2));
062        assertEquals(2, auth.getModes().size());
063        assertTrue(auth.getModes().contains(WEBAC_MODE_READ));
064        assertEquals(3, auth.getAccessToURIs().size());
065        assertTrue(auth.getAccessToURIs().contains(ACCESS_TO3));
066        assertEquals(2, auth.getAccessToClassURIs().size());
067        assertTrue(auth.getAccessToClassURIs().contains(ACCESS_TO_CLASS2));
068    }
069
070    @Test
071    public void testSets() {
072        final Set<String> agents = new HashSet<>(Arrays.asList(AGENT1, AGENT2));
073        final Set<String> agentClasses = new HashSet<>(Arrays.asList(AGENT_CLASS1, AGENT_CLASS2));
074        final Set<URI> modes = new HashSet<>(Arrays.asList(WEBAC_MODE_WRITE, WEBAC_MODE_READ));
075        final Set<String> accessTo = new HashSet<>(Arrays.asList(ACCESS_TO1, ACCESS_TO2, ACCESS_TO3));
076        final Set<String> accessToClass = new HashSet<>(Arrays.asList(ACCESS_TO_CLASS1, ACCESS_TO_CLASS2));
077
078        final WebACAuthorization auth = new WebACAuthorization(agents, agentClasses,
079                modes, accessTo, accessToClass);
080
081        assertEquals(2, auth.getAgents().size());
082        assertTrue(auth.getAgents().contains(AGENT1));
083        assertEquals(2, auth.getAgentClasses().size());
084        assertTrue(auth.getAgentClasses().contains(AGENT_CLASS2));
085        assertEquals(2, auth.getModes().size());
086        assertTrue(auth.getModes().contains(WEBAC_MODE_READ));
087        assertEquals(3, auth.getAccessToURIs().size());
088        assertTrue(auth.getAccessToURIs().contains(ACCESS_TO3));
089        assertEquals(2, auth.getAccessToClassURIs().size());
090        assertTrue(auth.getAccessToClassURIs().contains(ACCESS_TO_CLASS2));
091    }
092
093
094}