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.ProtectedItem;
34 import org.apache.ldap.common.filter.PresenceNode;
35
36 /***
37 * Tests {@link MostSpecificProtectedItemFilter}.
38 *
39 * @author The Apache Directory Project
40 * @version $Rev: 292150 $, $Date: 2005-09-28 04:55:08 -0400 (Wed, 28 Sep 2005) $
41 */
42 public class MostSpecificProtectedItemFilterTest extends TestCase
43 {
44 private static final Collection EMPTY_COLLECTION =
45 Collections.unmodifiableCollection( new ArrayList() );
46 private static final Set EMPTY_SET =
47 Collections.unmodifiableSet( new HashSet() );
48
49 private static final List TUPLES_A = new ArrayList();
50 private static final List TUPLES_B = new ArrayList();
51 private static final List TUPLES_C = new ArrayList();
52 private static final List TUPLES_D = new ArrayList();
53 private static final List TUPLES_E = new ArrayList();
54
55 static
56 {
57 Collection attributeType = new ArrayList();
58 Collection allAttributeValues = new ArrayList();
59 Collection selfValue = new ArrayList();
60 Collection attributeValue = new ArrayList();
61 Collection rangeOfValues = new ArrayList();
62 Collection allUserAttributeTypes = new ArrayList();
63 Collection allUserAttributeTypesAndValues = new ArrayList();
64
65 attributeType.add( new ProtectedItem.AttributeType( EMPTY_COLLECTION ) );
66 allAttributeValues.add( new ProtectedItem.AllAttributeValues( EMPTY_COLLECTION ) );
67 selfValue.add( new ProtectedItem.SelfValue( EMPTY_COLLECTION ) );
68 attributeValue.add( new ProtectedItem.AttributeValue( EMPTY_COLLECTION ) );
69 rangeOfValues.add( new ProtectedItem.RangeOfValues( new PresenceNode( "objectClass" ) ) );
70 allUserAttributeTypes.add( ProtectedItem.ALL_USER_ATTRIBUTE_TYPES );
71 allUserAttributeTypesAndValues.add( ProtectedItem.ALL_USER_ATTRIBUTE_TYPES_AND_VALUES );
72
73 ACITuple attributeTypeTuple = new ACITuple(
74 EMPTY_COLLECTION, AuthenticationLevel.NONE, attributeType,
75 EMPTY_SET, true, 0 );
76 ACITuple allAttributeValuesTuple = new ACITuple(
77 EMPTY_COLLECTION, AuthenticationLevel.NONE, allAttributeValues,
78 EMPTY_SET, true, 0 );
79 ACITuple selfValueTuple = new ACITuple(
80 EMPTY_COLLECTION, AuthenticationLevel.NONE, selfValue,
81 EMPTY_SET, true, 0 );
82 ACITuple attributeValueTuple = new ACITuple(
83 EMPTY_COLLECTION, AuthenticationLevel.NONE, attributeValue,
84 EMPTY_SET, true, 0 );
85 ACITuple rangeOfValuesTuple = new ACITuple(
86 EMPTY_COLLECTION, AuthenticationLevel.NONE, rangeOfValues,
87 EMPTY_SET, true, 0 );
88 ACITuple allUserAttributeTypesTuple = new ACITuple(
89 EMPTY_COLLECTION, AuthenticationLevel.NONE, allUserAttributeTypes,
90 EMPTY_SET, true, 0 );
91 ACITuple allUserAttributeTypesAndValuesTuple = new ACITuple(
92 EMPTY_COLLECTION, AuthenticationLevel.NONE, allUserAttributeTypesAndValues,
93 EMPTY_SET, true, 0 );
94
95 TUPLES_A.add( attributeTypeTuple );
96 TUPLES_A.add( allAttributeValuesTuple );
97 TUPLES_A.add( selfValueTuple );
98 TUPLES_A.add( attributeValueTuple );
99 TUPLES_A.add( rangeOfValuesTuple );
100 TUPLES_A.add( allUserAttributeTypesTuple );
101 TUPLES_A.add( allUserAttributeTypesAndValuesTuple );
102
103 TUPLES_B.add( allAttributeValuesTuple );
104 TUPLES_B.add( selfValueTuple );
105 TUPLES_B.add( attributeValueTuple );
106 TUPLES_B.add( rangeOfValuesTuple );
107 TUPLES_B.add( allUserAttributeTypesTuple );
108 TUPLES_B.add( allUserAttributeTypesAndValuesTuple );
109
110 TUPLES_C.add( selfValueTuple );
111 TUPLES_C.add( attributeValueTuple );
112 TUPLES_C.add( rangeOfValuesTuple );
113 TUPLES_C.add( allUserAttributeTypesTuple );
114 TUPLES_C.add( allUserAttributeTypesAndValuesTuple );
115
116 TUPLES_D.add( attributeValueTuple );
117 TUPLES_D.add( rangeOfValuesTuple );
118 TUPLES_D.add( allUserAttributeTypesTuple );
119 TUPLES_D.add( allUserAttributeTypesAndValuesTuple );
120
121 TUPLES_E.add( allUserAttributeTypesTuple );
122 TUPLES_E.add( allUserAttributeTypesAndValuesTuple );
123 }
124
125 public void testZeroOrOneTuple() throws Exception
126 {
127 MostSpecificProtectedItemFilter filter = new MostSpecificProtectedItemFilter();
128
129 Assert.assertEquals(
130 0, filter.filter(
131 EMPTY_COLLECTION, OperationScope.ATTRIBUTE_TYPE_AND_VALUE,
132 null, null, null, null, null, null, null, null, null, null ).size() );
133
134 Collection tuples = new ArrayList();
135 tuples.add( new ACITuple(
136 EMPTY_COLLECTION, AuthenticationLevel.NONE, EMPTY_COLLECTION,
137 EMPTY_SET, false, 0 ) );
138
139 Assert.assertEquals(
140 1, filter.filter(
141 tuples, OperationScope.ATTRIBUTE_TYPE_AND_VALUE,
142 null, null, null, null, null, null, null, null, null, null ).size() );
143 }
144
145 public void testTuplesA() throws Exception
146 {
147 MostSpecificProtectedItemFilter filter = new MostSpecificProtectedItemFilter();
148
149 List tuples = new ArrayList( TUPLES_A );
150 tuples = ( List ) filter.filter(
151 tuples, OperationScope.ENTRY, null, null, null,
152 null, null, null, null, null, null, null );
153
154 Assert.assertEquals( 4, tuples.size() );
155 Assert.assertSame( TUPLES_A.get( 0 ), tuples.get( 0 ) );
156 Assert.assertSame( TUPLES_A.get( 1 ), tuples.get( 1 ) );
157 Assert.assertSame( TUPLES_A.get( 2 ), tuples.get( 2 ) );
158 Assert.assertSame( TUPLES_A.get( 3 ), tuples.get( 3 ) );
159 }
160
161 public void testTuplesB() throws Exception
162 {
163 MostSpecificProtectedItemFilter filter = new MostSpecificProtectedItemFilter();
164
165 List tuples = new ArrayList( TUPLES_B );
166 tuples = ( List ) filter.filter(
167 tuples, OperationScope.ENTRY, null, null, null,
168 null, null, null, null, null, null, null );
169
170 Assert.assertEquals( 3, tuples.size() );
171 Assert.assertSame( TUPLES_B.get( 0 ), tuples.get( 0 ) );
172 Assert.assertSame( TUPLES_B.get( 1 ), tuples.get( 1 ) );
173 Assert.assertSame( TUPLES_B.get( 2 ), tuples.get( 2 ) );
174 }
175
176 public void testTuplesC() throws Exception
177 {
178 MostSpecificProtectedItemFilter filter = new MostSpecificProtectedItemFilter();
179
180 List tuples = new ArrayList( TUPLES_C );
181 tuples = ( List ) filter.filter(
182 tuples, OperationScope.ENTRY, null, null, null,
183 null, null, null, null, null, null, null );
184
185 Assert.assertEquals( 2, tuples.size() );
186 Assert.assertSame( TUPLES_C.get( 0 ), tuples.get( 0 ) );
187 Assert.assertSame( TUPLES_C.get( 1 ), tuples.get( 1 ) );
188 }
189
190 public void testTuplesD() throws Exception
191 {
192 MostSpecificProtectedItemFilter filter = new MostSpecificProtectedItemFilter();
193
194 List tuples = new ArrayList( TUPLES_D );
195 tuples = ( List ) filter.filter(
196 tuples, OperationScope.ENTRY, null, null, null,
197 null, null, null, null, null, null, null );
198
199 Assert.assertEquals( 1, tuples.size() );
200 Assert.assertSame( TUPLES_D.get( 0 ), tuples.get( 0 ) );
201 }
202
203 public void testTuplesE() throws Exception
204 {
205 MostSpecificProtectedItemFilter filter = new MostSpecificProtectedItemFilter();
206
207 List tuples = new ArrayList( TUPLES_E );
208 tuples = ( List ) filter.filter(
209 tuples, OperationScope.ENTRY, null, null, null,
210 null, null, null, null, null, null, null );
211
212 Assert.assertEquals( 2, tuples.size() );
213 Assert.assertSame( TUPLES_E.get( 0 ), tuples.get( 0 ) );
214 Assert.assertSame( TUPLES_E.get( 1 ), tuples.get( 1 ) );
215 }
216 }