001: /*
002: * ====================================================================
003: * JAFFA - Java Application Framework For All
004: *
005: * Copyright (C) 2002 JAFFA Development Group
006: *
007: * This library is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU Lesser General Public
009: * License as published by the Free Software Foundation; either
010: * version 2.1 of the License, or (at your option) any later version.
011: *
012: * This library is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this library; if not, write to the Free Software
019: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
020: *
021: * Redistribution and use of this software and associated documentation ("Software"),
022: * with or without modification, are permitted provided that the following conditions are met:
023: * 1. Redistributions of source code must retain copyright statements and notices.
024: * Redistributions must also contain a copy of this document.
025: * 2. Redistributions in binary form must reproduce the above copyright notice,
026: * this list of conditions and the following disclaimer in the documentation
027: * and/or other materials provided with the distribution.
028: * 3. The name "JAFFA" must not be used to endorse or promote products derived from
029: * this Software without prior written permission. For written permission,
030: * please contact mail to: jaffagroup@yahoo.com.
031: * 4. Products derived from this Software may not be called "JAFFA" nor may "JAFFA"
032: * appear in their names without prior written permission.
033: * 5. Due credit should be given to the JAFFA Project (http://jaffa.sourceforge.net).
034: *
035: * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
036: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
037: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
038: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
039: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
040: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
041: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
042: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
043: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
044: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
045: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
046: * SUCH DAMAGE.
047: * ====================================================================
048: */
049:
050: /*
051: * AddTest.java
052: *
053: * Created on April 1, 2002, 5:47 PM
054: */
055:
056: package org.jaffa.security;
057:
058: import junit.framework.TestCase;
059: import org.jaffa.security.PolicyManager;
060: import java.util.Arrays;
061:
062: /**
063: *
064: * @author PaulE
065: */
066: public class PolicyManagerTest extends TestCase {
067:
068: /** Creates new QueryTest
069: * @param name The name of the test case.
070: */
071: public PolicyManagerTest(String name) {
072: super (name);
073: }
074:
075: /** Sets up the fixture
076: */
077: protected void setUp() {
078: }
079:
080: /** Tears down the fixture
081: */
082: protected void tearDown() {
083: }
084:
085: public void testFunctionAccess() {
086: try {
087:
088: // No-one should have access for this unknown function
089: String[] fx = PolicyManager
090: .getRolesForFunction("FunctionX");
091: assertNull("No-one has access for FunctionX", fx);
092:
093: // Function1 should be accessable by 2 roles (MANAGER,SUPERVISOR)
094: String[] f1 = PolicyManager
095: .getRolesForFunction("Function1");
096: assertNotNull("Two Roles Have Access To Function1", f1);
097: assertEquals("Two Roles Have Access To Function1", 2,
098: f1.length);
099: assertTrue("MANAGER has access?", Arrays.asList(f1)
100: .contains("MANAGER"));
101: assertTrue("SUPERVISOR has access?", Arrays.asList(f1)
102: .contains("SUPERVISOR"));
103: assertTrue("CLERK has no access?", !Arrays.asList(f1)
104: .contains("CLERK"));
105:
106: } catch (Exception e) {
107: e.printStackTrace();
108: fail();
109: }
110: }
111:
112: public void testComponentAccess() {
113: try {
114:
115: // Component1 should be accessable by all roles, and should return null
116: String[] a1 = PolicyManager
117: .getRolesForComponent("Unit.Test.Component1");
118: assertNull("Full Access To Component1", a1);
119:
120: // Component4 should be accessable by 2 roles (MANAGER,SUPERVISOR)
121: String[] a4 = PolicyManager
122: .getRolesForComponent("Unit.Test.Component4");
123: assertNotNull("Two Roles Have Access To Component4", a4);
124: assertEquals("Two Roles Have Access To Component4", 2,
125: a4.length);
126: assertTrue("MANAGER has access?", Arrays.asList(a4)
127: .contains("MANAGER"));
128: assertTrue("SUPERVISOR has access?", Arrays.asList(a4)
129: .contains("SUPERVISOR"));
130: assertTrue("CLERK has no access?", !Arrays.asList(a4)
131: .contains("CLERK"));
132:
133: // Component3 should be accessable by 1 role (MANAGER)
134: String[] a3 = PolicyManager
135: .getRolesForComponent("Unit.Test.Component3");
136: assertNotNull("One Role Has Access To Component3", a3);
137: assertEquals("One Role Has Access To Component3", 1,
138: a3.length);
139: assertTrue("MANAGER has access?", Arrays.asList(a3)
140: .contains("MANAGER"));
141: assertTrue("SUPERVISOR has no access?", !Arrays.asList(a3)
142: .contains("SUPERVISOR"));
143: assertTrue("CLERK has no access?", !Arrays.asList(a3)
144: .contains("CLERK"));
145:
146: // Component5 should be accessable by no roles, and should return an empty array
147: String[] a5 = PolicyManager
148: .getRolesForComponent("Unit.Test.Component5");
149: assertNotNull("No-One Has Access To Component5", a5);
150: assertEquals("No Roles Hhave Access To Component5", 0,
151: a5.length);
152: assertTrue("MANAGER has no access?", !Arrays.asList(a5)
153: .contains("MANAGER"));
154:
155: } catch (Exception e) {
156: e.printStackTrace();
157: fail();
158: }
159: }
160:
161: }
|