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