1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.ldap.server.authz.support;
20
21 import java.util.ArrayList;
22 import java.util.Collection;
23 import java.util.Collections;
24 import java.util.HashSet;
25 import java.util.List;
26 import java.util.Set;
27
28 import junit.framework.Assert;
29 import junit.framework.TestCase;
30
31 import org.apache.ldap.common.aci.ACITuple;
32 import org.apache.ldap.common.aci.AuthenticationLevel;
33 import org.apache.ldap.common.aci.UserClass;
34
35 /***
36 * Tests {@link MostSpecificUserClassFilter}.
37 *
38 * @author The Apache Directory Project
39 * @version $Rev: 292146 $, $Date: 2005-09-28 04:41:23 -0400 (Wed, 28 Sep 2005) $
40 */
41 public class MostSpecificUserClassFilterTest extends TestCase
42 {
43 private static final Collection EMPTY_COLLECTION =
44 Collections.unmodifiableCollection( new ArrayList() );
45 private static final Set EMPTY_SET =
46 Collections.unmodifiableSet( new HashSet() );
47
48 private static final List TUPLES_A = new ArrayList();
49 private static final List TUPLES_B = new ArrayList();
50 private static final List TUPLES_C = new ArrayList();
51 private static final List TUPLES_D = new ArrayList();
52 private static final List TUPLES_E = new ArrayList();
53
54 static
55 {
56 Collection name = new ArrayList();
57 Collection thisEntry = new ArrayList();
58 Collection userGroup = new ArrayList();
59 Collection subtree = new ArrayList();
60 Collection allUsers = new ArrayList();
61
62 name.add( new UserClass.Name( EMPTY_SET ) );
63 thisEntry.add( UserClass.THIS_ENTRY );
64 userGroup.add( new UserClass.UserGroup( EMPTY_SET ) );
65 subtree.add( new UserClass.Subtree( EMPTY_COLLECTION ) );
66 allUsers.add( UserClass.ALL_USERS );
67
68 ACITuple nameTuple = new ACITuple(
69 name, AuthenticationLevel.NONE, EMPTY_COLLECTION,
70 EMPTY_SET, true, 0 );
71 ACITuple thisEntryTuple = new ACITuple(
72 thisEntry, AuthenticationLevel.NONE, EMPTY_COLLECTION,
73 EMPTY_SET, true, 0 );
74 ACITuple userGroupTuple = new ACITuple(
75 userGroup, AuthenticationLevel.NONE, EMPTY_COLLECTION,
76 EMPTY_SET, true, 0 );
77 ACITuple subtreeTuple = new ACITuple(
78 subtree, AuthenticationLevel.NONE, EMPTY_COLLECTION,
79 EMPTY_SET, true, 0 );
80 ACITuple allUsersTuple = new ACITuple(
81 allUsers, AuthenticationLevel.NONE, EMPTY_COLLECTION,
82 EMPTY_SET, true, 0 );
83
84 TUPLES_A.add( nameTuple );
85 TUPLES_A.add( thisEntryTuple );
86 TUPLES_A.add( userGroupTuple );
87 TUPLES_A.add( subtreeTuple );
88 TUPLES_A.add( allUsersTuple );
89
90 TUPLES_B.add( thisEntryTuple );
91 TUPLES_B.add( userGroupTuple );
92 TUPLES_B.add( subtreeTuple );
93 TUPLES_B.add( allUsersTuple );
94
95 TUPLES_C.add( userGroupTuple );
96 TUPLES_C.add( subtreeTuple );
97 TUPLES_C.add( allUsersTuple );
98
99 TUPLES_D.add( subtreeTuple );
100 TUPLES_D.add( allUsersTuple );
101
102 TUPLES_E.add( allUsersTuple );
103 TUPLES_E.add( allUsersTuple );
104 }
105
106 public void testZeroOrOneTuple() throws Exception
107 {
108 MostSpecificUserClassFilter filter = new MostSpecificUserClassFilter();
109
110 Assert.assertEquals(
111 0, filter.filter(
112 EMPTY_COLLECTION, OperationScope.ATTRIBUTE_TYPE_AND_VALUE,
113 null, null, null, null, null, null, null, null, null, null ).size() );
114
115 Collection tuples = new ArrayList();
116 tuples.add( new ACITuple(
117 EMPTY_COLLECTION, AuthenticationLevel.NONE, EMPTY_COLLECTION,
118 EMPTY_SET, false, 0 ) );
119
120 Assert.assertEquals(
121 1, filter.filter(
122 tuples, OperationScope.ATTRIBUTE_TYPE_AND_VALUE,
123 null, null, null, null, null, null, null, null, null, null ).size() );
124 }
125
126 public void testNameAndThisEntry() throws Exception
127 {
128 MostSpecificUserClassFilter filter = new MostSpecificUserClassFilter();
129
130 List tuples = new ArrayList( TUPLES_A );
131 tuples = ( List ) filter.filter(
132 tuples, OperationScope.ENTRY, null, null, null,
133 null, null, null, null, null, null, null );
134
135 Assert.assertEquals( 2, tuples.size() );
136 Assert.assertSame( TUPLES_A.get( 0 ), tuples.get( 0 ) );
137 Assert.assertSame( TUPLES_A.get( 1 ), tuples.get( 1 ) );
138 }
139
140 public void testThisEntry() throws Exception
141 {
142 MostSpecificUserClassFilter filter = new MostSpecificUserClassFilter();
143
144 List tuples = new ArrayList( TUPLES_B );
145 tuples = ( List ) filter.filter(
146 tuples, OperationScope.ENTRY, null, null, null,
147 null, null, null, null, null, null, null );
148
149 Assert.assertEquals( 1, tuples.size() );
150 Assert.assertSame( TUPLES_B.get( 0 ), tuples.get( 0 ) );
151 }
152
153 public void testUserGroup() throws Exception
154 {
155 MostSpecificUserClassFilter filter = new MostSpecificUserClassFilter();
156
157 List tuples = new ArrayList( TUPLES_C );
158 tuples = ( List ) filter.filter(
159 tuples, OperationScope.ENTRY, null, null, null,
160 null, null, null, null, null, null, null );
161
162 Assert.assertEquals( 1, tuples.size() );
163 Assert.assertSame( TUPLES_C.get( 0 ), tuples.get( 0 ) );
164 }
165
166 public void testSubtree() throws Exception
167 {
168 MostSpecificUserClassFilter filter = new MostSpecificUserClassFilter();
169
170 List tuples = new ArrayList( TUPLES_D );
171 tuples = ( List ) filter.filter(
172 tuples, OperationScope.ENTRY, null, null, null,
173 null, null, null, null, null, null, null );
174
175 Assert.assertEquals( 1, tuples.size() );
176 Assert.assertSame( TUPLES_D.get( 0 ), tuples.get( 0 ) );
177 }
178
179 public void testOthers() throws Exception
180 {
181 MostSpecificUserClassFilter filter = new MostSpecificUserClassFilter();
182
183 List tuples = new ArrayList( TUPLES_E );
184 tuples = ( List ) filter.filter(
185 tuples, OperationScope.ENTRY, null, null, null,
186 null, null, null, null, null, null, null );
187
188 Assert.assertEquals( 2, tuples.size() );
189 Assert.assertSame( TUPLES_E.get( 0 ), tuples.get( 0 ) );
190 Assert.assertSame( TUPLES_E.get( 1 ), tuples.get( 1 ) );
191 }
192 }