You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by tr...@apache.org on 2005/09/30 10:45:48 UTC
svn commit: r292678 -
/directory/apacheds/trunk/core/src/test/org/apache/ldap/server/authz/support/RelatedProtectedItemFilterTest.java
Author: trustin
Date: Fri Sep 30 01:45:45 2005
New Revision: 292678
URL: http://svn.apache.org/viewcvs?rev=292678&view=rev
Log:
Added a test case for RelatedProtectedItemFilter
Added:
directory/apacheds/trunk/core/src/test/org/apache/ldap/server/authz/support/RelatedProtectedItemFilterTest.java (with props)
Added: directory/apacheds/trunk/core/src/test/org/apache/ldap/server/authz/support/RelatedProtectedItemFilterTest.java
URL: http://svn.apache.org/viewcvs/directory/apacheds/trunk/core/src/test/org/apache/ldap/server/authz/support/RelatedProtectedItemFilterTest.java?rev=292678&view=auto
==============================================================================
--- directory/apacheds/trunk/core/src/test/org/apache/ldap/server/authz/support/RelatedProtectedItemFilterTest.java (added)
+++ directory/apacheds/trunk/core/src/test/org/apache/ldap/server/authz/support/RelatedProtectedItemFilterTest.java Fri Sep 30 01:45:45 2005
@@ -0,0 +1,428 @@
+/*
+ * @(#) $Id$
+ *
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.ldap.server.authz.support;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.naming.Name;
+import javax.naming.NamingException;
+import javax.naming.directory.Attributes;
+import javax.naming.directory.BasicAttribute;
+import javax.naming.directory.BasicAttributes;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.ldap.common.aci.ACITuple;
+import org.apache.ldap.common.aci.AuthenticationLevel;
+import org.apache.ldap.common.aci.ProtectedItem;
+import org.apache.ldap.common.aci.ProtectedItem.MaxValueCountItem;
+import org.apache.ldap.common.aci.ProtectedItem.RestrictedByItem;
+import org.apache.ldap.common.filter.PresenceNode;
+import org.apache.ldap.common.name.LdapName;
+import org.apache.ldap.server.event.ExpressionEvaluator;
+import org.apache.ldap.server.schema.AttributeTypeRegistry;
+import org.apache.ldap.server.schema.OidRegistry;
+import org.apache.ldap.server.subtree.RefinementEvaluator;
+import org.apache.ldap.server.subtree.RefinementLeafEvaluator;
+
+/**
+ * Tests {@link RelatedUserClassFilter}.
+ *
+ * @author The Apache Directory Project
+ * @version $Rev$, $Date$
+ */
+public class RelatedProtectedItemFilterTest extends TestCase
+{
+ private static final Collection EMPTY_COLLECTION =
+ Collections.unmodifiableCollection( new ArrayList() );
+ private static final Set EMPTY_SET =
+ Collections.unmodifiableSet( new HashSet() );
+
+ private static final Name GROUP_NAME;
+ private static final Name USER_NAME;
+ private static final Set USER_NAMES = new HashSet();
+ private static final Set GROUP_NAMES = new HashSet();
+
+ private static final AttributeTypeRegistry ATTR_TYPE_REGISTRY_A = new DummyAttributeTypeRegistry( false );
+ private static final AttributeTypeRegistry ATTR_TYPE_REGISTRY_B = new DummyAttributeTypeRegistry( true );
+ private static final OidRegistry OID_REGISTRY = new DummyOidRegistry();
+
+ private static final RelatedProtectedItemFilter filterA;
+ private static final RelatedProtectedItemFilter filterB;
+
+
+ static
+ {
+ try
+ {
+ GROUP_NAME = new LdapName( "ou=test,ou=groups,ou=system" );
+ USER_NAME = new LdapName( "ou=test, ou=users, ou=system" );
+
+ filterA = new RelatedProtectedItemFilter(
+ ATTR_TYPE_REGISTRY_A,
+ new RefinementEvaluator(
+ new RefinementLeafEvaluator( OID_REGISTRY ) ),
+ new ExpressionEvaluator( OID_REGISTRY, ATTR_TYPE_REGISTRY_A ) );
+
+ filterB = new RelatedProtectedItemFilter(
+ ATTR_TYPE_REGISTRY_B,
+ new RefinementEvaluator(
+ new RefinementLeafEvaluator( OID_REGISTRY ) ),
+ new ExpressionEvaluator( OID_REGISTRY, ATTR_TYPE_REGISTRY_B ) );
+ }
+ catch( NamingException e )
+ {
+ throw new Error();
+ }
+
+ USER_NAMES.add( USER_NAME );
+ GROUP_NAMES.add( GROUP_NAME );
+ }
+
+ public void testZeroTuple() throws Exception
+ {
+ Assert.assertEquals(
+ 0, filterA.filter(
+ EMPTY_COLLECTION, OperationScope.ATTRIBUTE_TYPE_AND_VALUE,
+ null, null, null, null, null, null, null, null, null, null ).size() );
+ }
+
+ public void testEntry() throws Exception
+ {
+ Collection tuples = getTuples( ProtectedItem.ENTRY );
+
+ Assert.assertEquals(
+ 1, filterA.filter(
+ tuples, OperationScope.ENTRY, null, null, null,
+ null, AuthenticationLevel.NONE, null, null, null, null, null ).size() );
+ }
+
+ public void testAllUserAttributeTypes() throws Exception
+ {
+ Collection tuples = getTuples( ProtectedItem.ALL_USER_ATTRIBUTE_TYPES );
+
+ // Test wrong scope
+ Assert.assertEquals(
+ 0, filterA.filter(
+ tuples, OperationScope.ENTRY, null, null, USER_NAME,
+ null, null, null,
+ "userAttr", null, null, null ).size() );
+
+ tuples = getTuples( ProtectedItem.ALL_USER_ATTRIBUTE_TYPES );
+
+ Assert.assertEquals(
+ 1, filterA.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE, null, null, USER_NAME,
+ null, null, null,
+ "userAttr", null, null, null ).size() );
+
+ Assert.assertEquals(
+ 0, filterB.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE, null, null, USER_NAME,
+ null, null, null,
+ "opAttr", null, null, null ).size() );
+ }
+
+ public void testAllUserAttributeTypesAndValues() throws Exception
+ {
+ Collection tuples = getTuples( ProtectedItem.ALL_USER_ATTRIBUTE_TYPES_AND_VALUES );
+
+ // Test wrong scope
+ Assert.assertEquals(
+ 0, filterA.filter(
+ tuples, OperationScope.ENTRY, null, null, USER_NAME,
+ null, null, null,
+ "userAttr", null, null, null ).size() );
+
+ tuples = getTuples( ProtectedItem.ALL_USER_ATTRIBUTE_TYPES_AND_VALUES );
+
+ Assert.assertEquals(
+ 1, filterA.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE, null, null, USER_NAME,
+ null, null, null,
+ "userAttr", null, null, null ).size() );
+
+ Assert.assertEquals(
+ 0, filterB.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE, null, null, USER_NAME,
+ null, null, null,
+ "opAttr", null, null, null ).size() );
+ }
+
+ public void testAllAttributeValues() throws Exception
+ {
+ Collection attrTypes = new ArrayList();
+ attrTypes.add( "attrA" );
+ Collection tuples = getTuples( new ProtectedItem.AllAttributeValues( attrTypes ) );
+
+ // Test wrong scope
+ Assert.assertEquals(
+ 0, filterA.filter(
+ tuples, OperationScope.ENTRY, null, null, USER_NAME,
+ null, null, null,
+ "attrA", null, null, null ).size() );
+
+ tuples = getTuples( new ProtectedItem.AllAttributeValues( attrTypes ) );
+
+ Assert.assertEquals(
+ 1, filterA.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE, null, null, USER_NAME,
+ null, null, null,
+ "attrA", null, null, null ).size() );
+
+ Assert.assertEquals(
+ 0, filterB.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE, null, null, USER_NAME,
+ null, null, null,
+ "attrB", null, null, null ).size() );
+ }
+
+ public void testAttributeType() throws Exception
+ {
+ Collection attrTypes = new ArrayList();
+ attrTypes.add( "attrA" );
+ Collection tuples = getTuples( new ProtectedItem.AttributeType( attrTypes ) );
+
+ // Test wrong scope
+ Assert.assertEquals(
+ 0, filterA.filter(
+ tuples, OperationScope.ENTRY, null, null, USER_NAME,
+ null, null, null,
+ "attrA", null, null, null ).size() );
+
+ tuples = getTuples( new ProtectedItem.AttributeType( attrTypes ) );
+
+ Assert.assertEquals(
+ 1, filterA.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE, null, null, USER_NAME,
+ null, null, null,
+ "attrA", null, null, null ).size() );
+
+ Assert.assertEquals(
+ 0, filterA.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE, null, null, USER_NAME,
+ null, null, null,
+ "attrB", null, null, null ).size() );
+ }
+
+ public void testAttributeValue() throws Exception
+ {
+ Collection attributes = new ArrayList();
+ attributes.add( new BasicAttribute( "attrA", "valueA" ) );
+ Collection tuples = getTuples( new ProtectedItem.AttributeValue( attributes ) );
+
+ // Test wrong scope
+ Assert.assertEquals(
+ 0, filterA.filter(
+ tuples, OperationScope.ENTRY, null, null, USER_NAME,
+ null, null, null,
+ "attrA", null, null, null ).size() );
+ tuples = getTuples( new ProtectedItem.AttributeValue( attributes ) );
+ Assert.assertEquals(
+ 0, filterA.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE, null, null, USER_NAME,
+ null, null, null,
+ "attrA", null, null, null ).size() );
+
+
+ tuples = getTuples( new ProtectedItem.AttributeValue( attributes ) );
+
+ Assert.assertEquals(
+ 1, filterA.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE_AND_VALUE, null, null, USER_NAME,
+ null, null, null,
+ "attrA", "valueA", null, null ).size() );
+
+ Assert.assertEquals(
+ 0, filterA.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE_AND_VALUE, null, null, USER_NAME,
+ null, null, null,
+ "attrA", "valueB", null, null ).size() );
+
+ tuples = getTuples( new ProtectedItem.AttributeValue( attributes ) );
+
+ Assert.assertEquals(
+ 0, filterA.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE_AND_VALUE, null, null, USER_NAME,
+ null, null, null,
+ "attrB", "valueA", null, null ).size() );
+ }
+
+ public void testClasses() throws Exception
+ {
+ // TODO I don't know how to test with Refinement yet.
+ }
+
+ public void testMaxImmSub() throws Exception
+ {
+ Collection tuples = getTuples( new ProtectedItem.MaxImmSub( 2 ) );
+
+ // Should always retain ruples.
+ Assert.assertEquals(
+ 1, filterA.filter(
+ tuples, OperationScope.ENTRY, null, null, USER_NAME,
+ null, null, null,
+ "attrA", null, null, null ).size() );
+ }
+
+ public void testMaxValueCount() throws Exception
+ {
+ Collection mvcItems = new ArrayList();
+ mvcItems.add( new MaxValueCountItem( "attrA", 3 ) );
+ Collection tuples = getTuples( new ProtectedItem.MaxValueCount( mvcItems ) );
+
+ // Test wrong scope
+ Assert.assertEquals(
+ 0, filterA.filter(
+ tuples, OperationScope.ENTRY, null, null, USER_NAME,
+ null, null, null,
+ "attrA", null, null, null ).size() );
+ tuples = getTuples( new ProtectedItem.MaxValueCount( mvcItems ) );
+ Assert.assertEquals(
+ 0, filterA.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE, null, null, USER_NAME,
+ null, null, null,
+ "attrA", null, null, null ).size() );
+
+ tuples = getTuples( new ProtectedItem.MaxValueCount( mvcItems ) );
+
+ Assert.assertEquals(
+ 1, filterA.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE_AND_VALUE, null, null, USER_NAME,
+ null, null, null,
+ "attrA", null, null, null ).size() );
+
+ Assert.assertEquals(
+ 0, filterA.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE_AND_VALUE, null, null, USER_NAME,
+ null, null, null,
+ "attrB", null, null, null ).size() );
+ }
+
+ public void testRangeOfValues() throws Exception
+ {
+ Attributes entry = new BasicAttributes();
+ entry.put( "attrA", "valueA" );
+ Collection tuples = getTuples( new ProtectedItem.RangeOfValues( new PresenceNode( "attrA" ) ) );
+
+ Assert.assertEquals(
+ 1, filterA.filter(
+ tuples, OperationScope.ENTRY, null, null, USER_NAME,
+ null, null, new LdapName( "ou=testEntry" ),
+ null, null, entry, null ).size() );
+
+ entry.remove( "attrA" );
+ Assert.assertEquals(
+ 0, filterA.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE_AND_VALUE, null, null, USER_NAME,
+ null, null, new LdapName( "ou=testEntry" ),
+ null, null, entry, null ).size() );
+ }
+
+ public void testRestrictedBy() throws Exception
+ {
+ Collection rbItems = new ArrayList();
+ rbItems.add( new RestrictedByItem( "attrA", "attrB" ) );
+ Collection tuples = getTuples( new ProtectedItem.RestrictedBy( rbItems ) );
+
+ // Test wrong scope
+ Assert.assertEquals(
+ 0, filterA.filter(
+ tuples, OperationScope.ENTRY, null, null, USER_NAME,
+ null, null, null,
+ "attrA", null, null, null ).size() );
+ tuples = getTuples( new ProtectedItem.RestrictedBy( rbItems ) );
+ Assert.assertEquals(
+ 0, filterA.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE, null, null, USER_NAME,
+ null, null, null,
+ "attrA", null, null, null ).size() );
+
+ tuples = getTuples( new ProtectedItem.RestrictedBy( rbItems ) );
+
+ Assert.assertEquals(
+ 1, filterA.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE_AND_VALUE, null, null, USER_NAME,
+ null, null, null,
+ "attrA", null, null, null ).size() );
+
+ Assert.assertEquals(
+ 0, filterA.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE_AND_VALUE, null, null, USER_NAME,
+ null, null, null,
+ "attrB", null, null, null ).size() );
+ }
+
+ public void testSelfValue() throws Exception
+ {
+ Collection attrTypes = new ArrayList();
+ attrTypes.add( "attrA" );
+ Collection tuples = getTuples( new ProtectedItem.SelfValue( attrTypes ) );
+
+ Attributes entry = new BasicAttributes();
+ entry.put( "attrA", USER_NAME );
+
+ // Test wrong scope
+ Assert.assertEquals(
+ 0, filterA.filter(
+ tuples, OperationScope.ENTRY, null, null, USER_NAME,
+ null, null, null,
+ "attrA", null, entry, null ).size() );
+
+ tuples = getTuples( new ProtectedItem.SelfValue( attrTypes ) );
+
+ Assert.assertEquals(
+ 1, filterA.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE_AND_VALUE, null, null, USER_NAME,
+ null, null, null,
+ "attrA", null, entry, null ).size() );
+
+ entry.remove( "attrA" );
+ Assert.assertEquals(
+ 0, filterA.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE_AND_VALUE, null, null, USER_NAME,
+ null, null, null,
+ "attrA", null, entry, null ).size() );
+
+ tuples = getTuples( new ProtectedItem.SelfValue( attrTypes ) );
+ Assert.assertEquals(
+ 0, filterA.filter(
+ tuples, OperationScope.ATTRIBUTE_TYPE_AND_VALUE, null, null, USER_NAME,
+ null, null, null,
+ "attrB", null, entry, null ).size() );
+ }
+
+ private static Collection getTuples( ProtectedItem protectedItem )
+ {
+ Collection protectedItems = new ArrayList();
+ protectedItems.add( protectedItem );
+
+ Collection tuples = new ArrayList();
+ tuples.add( new ACITuple(
+ EMPTY_COLLECTION, AuthenticationLevel.NONE, protectedItems,
+ EMPTY_SET, true, 0 ) );
+
+ return tuples;
+ }
+}
Propchange: directory/apacheds/trunk/core/src/test/org/apache/ldap/server/authz/support/RelatedProtectedItemFilterTest.java
------------------------------------------------------------------------------
svn:keywords = HeadURL Id LastChangedBy LastChangedDate LastChangedRevision