You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2005/09/09 23:43:24 UTC
svn commit: r279887 [15/15] - in
/directory/shared/ldap/branches/elecharny-cleanup/apache2-provider: ./
conf/ perfs/ perfs/org/ perfs/org/apache/ perfs/org/apache/asn1new/
perfs/org/apache/asn1new/ber/ src/ src/java/ src/java/main/
src/java/main/org/ s...
Added: directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/SearchResultEntryTest.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/SearchResultEntryTest.java?rev=279887&view=auto
==============================================================================
--- directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/SearchResultEntryTest.java (added)
+++ directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/SearchResultEntryTest.java Fri Sep 9 14:41:22 2005
@@ -0,0 +1,370 @@
+/*
+ * Copyright 2005 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.asn1new.ldap.codec;
+
+import java.nio.ByteBuffer;
+import java.util.HashSet;
+
+import javax.naming.NamingEnumeration;
+import javax.naming.NamingException;
+import javax.naming.directory.Attributes;
+import javax.naming.directory.BasicAttribute;
+
+import org.apache.asn1.codec.DecoderException;
+import org.apache.asn1.codec.EncoderException;
+import org.apache.asn1new.ber.Asn1Decoder;
+import org.apache.asn1new.ber.containers.IAsn1Container;
+import org.apache.asn1new.ldap.pojo.LdapMessage;
+import org.apache.asn1new.ldap.pojo.SearchResultEntry;
+import org.apache.asn1new.primitives.OctetString;
+import org.apache.asn1new.util.StringUtils;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+/**
+ * Test the SearchResultEntry codec
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class SearchResultEntryTest extends TestCase {
+ /**
+ * Test the decoding of a SearchResultEntry
+ */
+ public void testDecodeSearchResultEntrySuccess() throws NamingException
+ {
+ Asn1Decoder ldapDecoder = new LdapDecoder();
+
+ ByteBuffer stream = ByteBuffer.allocate( 0x50 );
+
+ stream.put(
+ new byte[]
+ {
+
+
+ 0x30, 0x4e, // LDAPMessage ::=SEQUENCE {
+ 0x02, 0x01, 0x01, // messageID MessageID
+ 0x64, 0x49, // CHOICE { ..., searchResEntry SearchResultEntry, ...
+ // SearchResultEntry ::= [APPLICATION 4] SEQUENCE {
+ // objectName LDAPDN,
+ 0x04, 0x1b, 'o', 'u', '=', 'c', 'o', 'n', 't', 'a', 'c', 't', 's', ',', 'd', 'c', '=', 'i', 'k', 't', 'e', 'k', ',', 'd', 'c', '=', 'c', 'o', 'm',
+ // attributes PartialAttributeList }
+ // PartialAttributeList ::= SEQUENCE OF SEQUENCE {
+ 0x30, 0x2a,
+ 0x30, 0x28,
+ // type AttributeDescription,
+ 0x04, 0x0b, 'o', 'b', 'j', 'e', 'c', 't', 'c', 'l', 'a', 's', 's',
+ // vals SET OF AttributeValue }
+ 0x31, 0x19,
+ // AttributeValue ::= OCTET STRING
+ 0x04, 0x03, 't', 'o', 'p',
+ // AttributeValue ::= OCTET STRING
+ 0x04, 0x12, 'o', 'r', 'g', 'a', 'n', 'i', 'z', 'a', 't', 'i', 'o', 'n', 'a', 'l', 'U', 'n', 'i', 't'
+ } );
+
+ String decodedPdu = StringUtils.dumpBytes( stream.array() );
+ stream.flip();
+
+ // Allocate a BindRequest Container
+ IAsn1Container ldapMessageContainer = new LdapMessageContainer();
+
+ try
+ {
+ ldapDecoder.decode( stream, ldapMessageContainer );
+ }
+ catch ( DecoderException de )
+ {
+ de.printStackTrace();
+ Assert.fail( de.getMessage() );
+ }
+
+ LdapMessage message = ( ( LdapMessageContainer ) ldapMessageContainer ).getLdapMessage();
+ SearchResultEntry searchResultEntry = message.getSearchResultEntry();
+
+ Assert.assertEquals( 1, message.getMessageId() );
+ Assert.assertEquals( "ou=contacts,dc=iktek,dc=com", searchResultEntry.getObjectName() );
+
+ Attributes partialAttributesList = searchResultEntry.getPartialAttributeList();
+
+ Assert.assertEquals( 1, partialAttributesList.size() );
+
+ for ( int i = 0; i < partialAttributesList.size(); i++ )
+ {
+ BasicAttribute attributeValue = (BasicAttribute)partialAttributesList.get( "objectclass" );
+
+ Assert.assertEquals( "objectClass".toLowerCase(), attributeValue.getID().toLowerCase() );
+
+ NamingEnumeration values = attributeValue.getAll();
+
+ HashSet expectedValues = new HashSet();
+
+ expectedValues.add( "top" );
+ expectedValues.add( "organizationalUnit" );
+
+ while ( values.hasMore() )
+ {
+ OctetString value = (OctetString)values.next();
+
+ Assert.assertTrue( expectedValues.contains( value.toString() ) );
+
+ expectedValues.remove( value.toString() );
+ }
+ }
+
+ // Check the length
+ Assert.assertEquals(0x50, message.computeLength());
+
+ // Check the encoding
+ try
+ {
+ ByteBuffer bb = message.encode( null );
+
+ String encodedPdu = StringUtils.dumpBytes( bb.array() );
+
+ Assert.assertEquals(encodedPdu, decodedPdu );
+ }
+ catch ( EncoderException ee )
+ {
+ ee.printStackTrace();
+ Assert.fail( ee.getMessage() );
+ }
+ }
+
+ /**
+ * Test the decoding of a SearchResultEntry
+ */
+ public void testDecodeSearchResultEntry2AttrsSuccess() throws NamingException
+ {
+ Asn1Decoder ldapDecoder = new LdapDecoder();
+
+ ByteBuffer stream = ByteBuffer.allocate( 0x7b );
+
+ stream.put(
+ new byte[]
+ {
+ 0x30, 0x79, // LDAPMessage ::=SEQUENCE {
+ 0x02, 0x01, 0x01, // messageID MessageID
+ 0x64, 0x74, // CHOICE { ..., searchResEntry SearchResultEntry, ...
+ // SearchResultEntry ::= [APPLICATION 4] SEQUENCE {
+ // objectName LDAPDN,
+ 0x04, 0x1b, 'o', 'u', '=', 'c', 'o', 'n', 't', 'a', 'c', 't', 's', ',', 'd', 'c', '=', 'i', 'k', 't', 'e', 'k', ',', 'd', 'c', '=', 'c', 'o', 'm',
+ // attributes PartialAttributeList }
+ // PartialAttributeList ::= SEQUENCE OF SEQUENCE {
+ 0x30, 0x55,
+ 0x30, 0x28,
+ // type AttributeDescription,
+ 0x04, 0x0b, 'o', 'b', 'j', 'e', 'c', 't', 'c', 'l', 'a', 's', 's',
+ // vals SET OF AttributeValue }
+ 0x31, 0x19,
+ // AttributeValue ::= OCTET STRING
+ 0x04, 0x03, 't', 'o', 'p',
+ // AttributeValue ::= OCTET STRING
+ 0x04, 0x12, 'o', 'r', 'g', 'a', 'n', 'i', 'z', 'a', 't', 'i', 'o', 'n', 'a', 'l', 'U', 'n', 'i', 't',
+ 0x30, 0x29,
+ // type AttributeDescription,
+ 0x04, 0x0c, 'o', 'b', 'j', 'e', 'c', 't', 'c', 'l', 'a', 's', 's', '2',
+ // vals SET OF AttributeValue }
+ 0x31, 0x19,
+ // AttributeValue ::= OCTET STRING
+ 0x04, 0x03, 't', 'o', 'p',
+ // AttributeValue ::= OCTET STRING
+ 0x04, 0x12, 'o', 'r', 'g', 'a', 'n', 'i', 'z', 'a', 't', 'i', 'o', 'n', 'a', 'l', 'U', 'n', 'i', 't'
+ } );
+
+ stream.flip();
+
+ // Allocate a BindRequest Container
+ IAsn1Container ldapMessageContainer = new LdapMessageContainer();
+
+ try
+ {
+ ldapDecoder.decode( stream, ldapMessageContainer );
+ }
+ catch ( DecoderException de )
+ {
+ de.printStackTrace();
+ Assert.fail( de.getMessage() );
+ }
+
+ LdapMessage message = ( ( LdapMessageContainer ) ldapMessageContainer ).getLdapMessage();
+ SearchResultEntry searchResultEntry = message.getSearchResultEntry();
+
+ Assert.assertEquals( 1, message.getMessageId() );
+ Assert.assertEquals( "ou=contacts,dc=iktek,dc=com", searchResultEntry.getObjectName() );
+
+ Attributes partialAttributesList = searchResultEntry.getPartialAttributeList();
+
+ Assert.assertEquals( 2, partialAttributesList.size() );
+
+ String[] expectedAttributes = new String[]{"objectClass", "objectClass2"};
+
+ for ( int i = 0; i < expectedAttributes.length; i++ )
+ {
+ BasicAttribute attributeValue = (BasicAttribute)partialAttributesList.get( expectedAttributes[i] );
+
+ Assert.assertEquals( expectedAttributes[i].toLowerCase(), attributeValue.getID().toLowerCase() );
+
+ NamingEnumeration values = attributeValue.getAll();
+
+ HashSet expectedValues = new HashSet();
+
+ expectedValues.add( "top" );
+ expectedValues.add( "organizationalUnit" );
+
+ while ( values.hasMore() )
+ {
+ OctetString value = (OctetString)values.next();
+
+ Assert.assertTrue( expectedValues.contains( value.toString() ) );
+
+ expectedValues.remove( value.toString() );
+ }
+ }
+
+ // Check the length
+ Assert.assertEquals(0x7b, message.computeLength());
+
+ // Check the encoding
+ try
+ {
+ message.encode( null );
+
+ // We cant compare the encodings, the order of the attributes has changed
+ }
+ catch ( EncoderException ee )
+ {
+ ee.printStackTrace();
+ Assert.fail( ee.getMessage() );
+ }
+ }
+
+ /**
+ * Test the decoding of a SearchResultEntry with more bytes
+ * to be decoded at the end
+ */
+ public void testDecodeSearchResultEntrySuccessWithFollowingMessage() throws NamingException
+ {
+ Asn1Decoder ldapDecoder = new LdapDecoder();
+
+ ByteBuffer stream = ByteBuffer.allocate( 0x66 );
+
+ stream.put(
+ new byte[]
+ {
+ 0x30, 0x5F, // LDAPMessage ::=SEQUENCE {
+ 0x02, 0x01, 0x02, // messageID MessageID
+ 0x64, 0x5A, // CHOICE { ..., searchResEntry SearchResultEntry, ...
+ // SearchResultEntry ::= [APPLICATION 4] SEQUENCE {
+ // objectName LDAPDN,
+ 0x04, 0x13, 'u', 'i', 'd', '=', 'a', 'd', 'm', 'i', 'n', ',', 'o', 'u', '=', 's', 'y', 's', 't', 'e', 'm',
+ // attributes PartialAttributeList }
+ 0x30, 0x43, // PartialAttributeList ::= SEQUENCE OF SEQUENCE {
+ 0x30, 0x41,
+ // type AttributeDescription,
+ 0x04, 0x0B, 'o', 'b', 'j', 'e', 'c', 't', 'c', 'l', 'a', 's', 's',
+ 0x31, 0x32, // vals SET OF AttributeValue }
+ // AttributeValue ::= OCTET STRING
+ 0x04, 0x0D, 'i', 'n', 'e', 't', 'O', 'r', 'g', 'P', 'e', 'r', 's', 'o', 'n',
+ // AttributeValue ::= OCTET STRING
+ 0x04, 0x14, 'o', 'r', 'g', 'a', 'n', 'i', 'z', 'a', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 's', 'o', 'n',
+ // AttributeValue ::= OCTET STRING
+ 0x04, 0x06, 'p', 'e', 'r', 's', 'o', 'n',
+ // AttributeValue ::= OCTET STRING
+ 0x04, 0x03, 't', 'o', 'p',
+ 0x30, 0x45, // Start of the next message
+ 0x02, 0x01, 0x02 // messageID MessageID ...
+ } );
+
+ String decodedPdu = StringUtils.dumpBytes( stream.array() );
+ stream.flip();
+
+ // Allocate a BindRequest Container
+ IAsn1Container ldapMessageContainer = new LdapMessageContainer();
+
+ try
+ {
+ ldapDecoder.decode( stream, ldapMessageContainer );
+ }
+ catch ( DecoderException de )
+ {
+ de.printStackTrace();
+ Assert.fail( de.getMessage() );
+ }
+
+ LdapMessage message = ( ( LdapMessageContainer ) ldapMessageContainer ).getLdapMessage();
+ SearchResultEntry searchResultEntry = message.getSearchResultEntry();
+
+ Assert.assertEquals( 2, message.getMessageId() );
+ Assert.assertEquals( "uid=admin,ou=system", searchResultEntry.getObjectName() );
+
+ Attributes partialAttributesList = searchResultEntry.getPartialAttributeList();
+
+ Assert.assertEquals( 1, partialAttributesList.size() );
+
+ for ( int i = 0; i < partialAttributesList.size(); i++ )
+ {
+ BasicAttribute attributeValue = (BasicAttribute)partialAttributesList.get( "objectclass" );
+
+ Assert.assertEquals( "objectClass".toLowerCase(), attributeValue.getID().toLowerCase() );
+
+ NamingEnumeration values = attributeValue.getAll();
+
+ HashSet expectedValues = new HashSet();
+
+ expectedValues.add( "top" );
+ expectedValues.add( "person" );
+ expectedValues.add( "organizationalPerson" );
+ expectedValues.add( "inetOrgPerson" );
+
+ while ( values.hasMore() )
+ {
+ OctetString value = (OctetString)values.next();
+
+ Assert.assertTrue( expectedValues.contains( value.toString() ) );
+
+ expectedValues.remove( value.toString() );
+ }
+ }
+
+ // Check the length
+ Assert.assertEquals(0x61, message.computeLength());
+
+ // Check that the next bytes is the first of the next PDU
+ Assert.assertEquals(0x30, stream.get(stream.position()));
+ Assert.assertEquals(0x45, stream.get(stream.position() + 1));
+ Assert.assertEquals(0x02, stream.get(stream.position() + 2));
+ Assert.assertEquals(0x01, stream.get(stream.position() + 3));
+ Assert.assertEquals(0x02, stream.get(stream.position() + 4));
+
+ // Check the encoding
+ try
+ {
+ ByteBuffer bb = message.encode( null );
+
+ String encodedPdu = StringUtils.dumpBytes( bb.array() );
+
+ // We have to supress the last 5 chars from the decodedPDU, as they
+ // belongs to the next message.
+ Assert.assertEquals(encodedPdu, decodedPdu.substring(0, 0x61 * 5) );
+ }
+ catch ( EncoderException ee )
+ {
+ ee.printStackTrace();
+ Assert.fail( ee.getMessage() );
+ }
+ }
+}
Propchange: directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/SearchResultEntryTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/SearchResultReferenceTest.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/SearchResultReferenceTest.java?rev=279887&view=auto
==============================================================================
--- directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/SearchResultReferenceTest.java (added)
+++ directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/SearchResultReferenceTest.java Fri Sep 9 14:41:22 2005
@@ -0,0 +1,171 @@
+/*
+ * Copyright 2005 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.asn1new.ldap.codec;
+
+import java.nio.ByteBuffer;
+import java.util.HashSet;
+import java.util.Iterator;
+
+import javax.naming.NamingException;
+
+import org.apache.asn1.codec.DecoderException;
+import org.apache.asn1.codec.EncoderException;
+import org.apache.asn1new.ber.Asn1Decoder;
+import org.apache.asn1new.ber.containers.IAsn1Container;
+import org.apache.asn1new.ldap.codec.primitives.LdapURL;
+import org.apache.asn1new.ldap.pojo.LdapMessage;
+import org.apache.asn1new.ldap.pojo.SearchResultReference;
+import org.apache.asn1new.util.StringUtils;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+/**
+ * Test the SearchResultReference codec
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class SearchResultReferenceTest extends TestCase {
+ /**
+ * Test the decoding of a SearchResultReference
+ */
+ public void testDecodeSearchResultReferenceSuccess() throws NamingException
+ {
+ Asn1Decoder ldapDecoder = new LdapDecoder();
+
+ ByteBuffer stream = ByteBuffer.allocate( 0x3d8 );
+
+ String[] ldapUrls = new String[]
+ {
+ "ldap:///",
+ "ldap://directory.apache.org:80/",
+ "ldap://d-a.org:80/",
+ "ldap://1.2.3.4/",
+ "ldap://1.2.3.4:80/",
+ "ldap://1.1.1.100000.a/",
+ "ldap://directory.apache.org:389/dc=example,dc=org/",
+ "ldap://directory.apache.org:389/dc=example",
+ "ldap://directory.apache.org:389/dc=example%202,dc=org",
+ "ldap://directory.apache.org:389/dc=example,dc=org?ou",
+ "ldap://directory.apache.org:389/dc=example,dc=org?ou,objectclass,dc",
+ "ldap://directory.apache.org:389/dc=example,dc=org?ou,dc,ou",
+ "ldap:///o=University%20of%20Michigan,c=US",
+ "ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US",
+ "ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US?postalAddress",
+ "ldap://host.com:6666/o=University%20of%20Michigan,c=US??sub?(cn=Babs%20Jensen)",
+ "ldap://ldap.itd.umich.edu/c=GB?objectClass?one",
+ "ldap://ldap.question.com/o=Question%3f,c=US?mail",
+ "ldap://ldap.netscape.com/o=Babsco,c=US???(int=%5c00%5c00%5c00%5c04)",
+ "ldap:///??sub??bindname=cn=Manager%2co=Foo",
+ "ldap:///??sub??!bindname=cn=Manager%2co=Foo"
+ };
+
+ stream.put(
+ new byte[]
+ {
+
+
+ 0x30, (byte)0x82, 0x03, (byte)0xd4, // LDAPMessage ::=SEQUENCE {
+ 0x02, 0x01, 0x01, // messageID MessageID
+ 0x73, (byte)0x82, 0x03, (byte)0xcd, // CHOICE { ..., searchResEntry SearchResultEntry, ...
+ // SearchResultReference ::= [APPLICATION 19] SEQUENCE OF LDAPURL
+ } );
+
+
+ for (int i = 0; i < ldapUrls.length; i++)
+ {
+ stream.put((byte)0x04);
+ stream.put((byte)ldapUrls[i].getBytes().length);
+
+ byte[] bytes = ldapUrls[i].getBytes();
+
+ for (int j=0; j < bytes.length; j++)
+ {
+ stream.put(bytes[j]);
+ }
+ }
+
+ String decodedPdu = StringUtils.dumpBytes( stream.array() );
+ stream.flip();
+
+ // Allocate a BindRequest Container
+ IAsn1Container ldapMessageContainer = new LdapMessageContainer();
+
+ try
+ {
+ ldapDecoder.decode( stream, ldapMessageContainer );
+ }
+ catch ( DecoderException de )
+ {
+ de.printStackTrace();
+ Assert.fail( de.getMessage() );
+ }
+
+ LdapMessage message = ( ( LdapMessageContainer ) ldapMessageContainer ).getLdapMessage();
+ SearchResultReference searchResultReference = message.getSearchResultReference();
+
+ Assert.assertEquals( 1, message.getMessageId() );
+
+ HashSet ldapUrlsSet = new HashSet();
+
+ try {
+ for (int i = 0; i < ldapUrls.length; i++)
+ {
+ ldapUrlsSet.add( new LdapURL( ldapUrls[i].getBytes() ).toString() );
+ }
+ } catch (DecoderException de)
+ {
+ Assert.fail();
+ }
+
+ Iterator iter = searchResultReference.getSearchResultReferences().iterator();
+
+ while (iter.hasNext())
+ {
+ LdapURL ldapUrl = (LdapURL)iter.next();
+
+ if (ldapUrlsSet.contains( ldapUrl.toString()) )
+ {
+ ldapUrlsSet.remove( ldapUrl.toString() );
+ }
+ else
+ {
+ Assert.fail(ldapUrl.toString() + " is not present");
+ }
+ }
+
+ Assert.assertTrue( ldapUrlsSet.size() == 0 );
+
+ // Check the length
+ Assert.assertEquals(0x3D8, message.computeLength());
+
+ // Check the encoding
+ try
+ {
+ ByteBuffer bb = message.encode( null );
+
+ String encodedPdu = StringUtils.dumpBytes( bb.array() );
+
+ Assert.assertEquals(encodedPdu, decodedPdu );
+ }
+ catch ( EncoderException ee )
+ {
+ ee.printStackTrace();
+ Assert.fail( ee.getMessage() );
+ }
+ }
+}
Propchange: directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/SearchResultReferenceTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/UnBindRequestTest.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/UnBindRequestTest.java?rev=279887&view=auto
==============================================================================
--- directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/UnBindRequestTest.java (added)
+++ directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/UnBindRequestTest.java Fri Sep 9 14:41:22 2005
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2005 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.asn1new.ldap.codec;
+
+import java.nio.ByteBuffer;
+
+import org.apache.asn1.codec.DecoderException;
+import org.apache.asn1.codec.EncoderException;
+import org.apache.asn1new.ber.Asn1Decoder;
+import org.apache.asn1new.ber.containers.IAsn1Container;
+import org.apache.asn1new.ldap.pojo.LdapMessage;
+import org.apache.asn1new.util.StringUtils;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+/**
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class UnBindRequestTest extends TestCase {
+ /**
+ * Test the decoding of a UnBindRequest with no controls
+ */
+ public void testDecodeUnBindRequestNoControls()
+ {
+ Asn1Decoder ldapDecoder = new LdapDecoder();
+
+ ByteBuffer stream = ByteBuffer.allocate( 0x07 );
+ stream.put(
+ new byte[]
+ {
+ 0x30, 0x05, // LDAPMessage ::=SEQUENCE {
+ 0x02, 0x01, 0x01, // messageID MessageID
+ 0x42, 0x00, // CHOICE { ..., unbindRequest UnbindRequest,...
+ // UnbindRequest ::= [APPLICATION 2] NULL
+ } );
+
+ String decodedPdu = StringUtils.dumpBytes( stream.array() );
+ stream.flip();
+
+ // Allocate a BindRequest Container
+ IAsn1Container ldapMessageContainer = new LdapMessageContainer();
+
+ try
+ {
+ ldapDecoder.decode( stream, ldapMessageContainer );
+ }
+ catch ( DecoderException de )
+ {
+ de.printStackTrace();
+ Assert.fail( de.getMessage() );
+ }
+
+ LdapMessage message = ( ( LdapMessageContainer ) ldapMessageContainer ).getLdapMessage();
+
+ Assert.assertEquals( 1, message.getMessageId() );
+
+ // Check the length
+ Assert.assertEquals(7, message.computeLength());
+
+ try
+ {
+ ByteBuffer bb = message.encode( null );
+
+ String encodedPdu = StringUtils.dumpBytes( bb.array() );
+
+ Assert.assertEquals(encodedPdu, decodedPdu );
+ }
+ catch ( EncoderException ee )
+ {
+ ee.printStackTrace();
+ Assert.fail( ee.getMessage() );
+ }
+ }
+}
Propchange: directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/UnBindRequestTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/utils/DNUtilsTest.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/utils/DNUtilsTest.java?rev=279887&view=auto
==============================================================================
--- directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/utils/DNUtilsTest.java (added)
+++ directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/utils/DNUtilsTest.java Fri Sep 9 14:41:22 2005
@@ -0,0 +1,136 @@
+/*
+ * Copyright 2005 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.asn1new.ldap.codec.utils;
+
+import org.apache.asn1new.util.StringUtils;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+/**
+ * Test the class DNUtils
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class DNUtilsTest extends TestCase
+{
+ //~ Methods ------------------------------------------------------------------------------------
+
+ /**
+ * Test the DNUtils AreEquals method
+ */
+ public void testAreEqualsFull()
+ {
+ // Full compare
+ Assert.assertEquals( 6, StringUtils.areEquals( "azerty".getBytes(), 0, "azerty" ) );
+ }
+
+ /**
+ * Test the DNUtils AreEquals method
+ */
+ public void testAreEqualsDiff()
+ {
+ // First character is !=
+ Assert.assertEquals( -1, StringUtils.areEquals( "azerty".getBytes(), 0, "Azerty" ) );
+ }
+
+ /**
+ * Test the DNUtils AreEquals method
+ */
+ public void testAreEqualsEmpty()
+ {
+ // Compare to an empty string
+ Assert.assertEquals( -1, StringUtils.areEquals( "azerty".getBytes(), 0, "" ) );
+ }
+
+ /**
+ * Test the DNUtils AreEquals method
+ */
+ public void testAreEqualsFirstCharDiff()
+ {
+ // First character is !=
+ Assert.assertEquals( -1, StringUtils.areEquals( "azerty".getBytes(), 0, "Azerty" ) );
+ }
+
+ /**
+ * Test the DNUtils AreEquals method
+ */
+ public void testAreEqualsMiddleCharDiff()
+ {
+ // First character is !=
+ Assert.assertEquals( -1, StringUtils.areEquals( "azerty".getBytes(), 0, "azeRty" ) );
+ }
+
+ /**
+ * Test the DNUtils AreEquals method
+ */
+ public void testAreEqualsLastCharDiff()
+ {
+ // First character is !=
+ Assert.assertEquals( -1, StringUtils.areEquals( "azerty".getBytes(), 0, "azertY" ) );
+ }
+
+ /**
+ * Test the DNUtils AreEquals method
+ */
+ public void testAreEqualsCharByChar()
+ {
+ // Index must be incremented after each comparison
+ Assert.assertEquals( 1, StringUtils.areEquals( "azerty".getBytes(), 0, "a" ) );
+ Assert.assertEquals( 2, StringUtils.areEquals( "azerty".getBytes(), 1, "z" ) );
+ Assert.assertEquals( 3, StringUtils.areEquals( "azerty".getBytes(), 2, "e" ) );
+ Assert.assertEquals( 4, StringUtils.areEquals( "azerty".getBytes(), 3, "r" ) );
+ Assert.assertEquals( 5, StringUtils.areEquals( "azerty".getBytes(), 4, "t" ) );
+ Assert.assertEquals( 6, StringUtils.areEquals( "azerty".getBytes(), 5, "y" ) );
+ }
+
+ /**
+ * Test the DNUtils AreEquals method
+ */
+ public void testAreEqualsTooShort()
+ {
+ // length too short
+ Assert.assertEquals( -1, StringUtils.areEquals( "azerty".getBytes(), 0, "azertyiop" ) );
+ }
+
+ /**
+ * Test the DNUtils AreEquals method
+ */
+ public void testAreEqualsTooShortMiddle()
+ {
+ // length too short
+ Assert.assertEquals( -1, StringUtils.areEquals( "azerty".getBytes(), 0, "ertyiop" ) );
+ }
+
+ /**
+ * Test the DNUtils AreEquals method
+ */
+ public void testAreEqualsLastChar()
+ {
+ // last character
+ Assert.assertEquals( 6, StringUtils.areEquals( "azerty".getBytes(), 5, "y" ) );
+ }
+
+ /**
+ * Test the DNUtils AreEquals method
+ */
+ public void testAreEqualsMiddle()
+ {
+ // In the middle
+ Assert.assertEquals( 4, StringUtils.areEquals( "azerty".getBytes(), 2, "er" ) );
+ }
+}
Propchange: directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/utils/DNUtilsTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/utils/LdapDNTest.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/utils/LdapDNTest.java?rev=279887&view=auto
==============================================================================
--- directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/utils/LdapDNTest.java (added)
+++ directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/utils/LdapDNTest.java Fri Sep 9 14:41:22 2005
@@ -0,0 +1,171 @@
+/*
+ * Copyright 2005 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.asn1new.ldap.codec.utils;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.asn1.codec.DecoderException;
+import org.apache.asn1new.ldap.codec.primitives.LdapDN;
+
+/**
+ * Test the class LdapDN
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class LdapDNTest extends TestCase
+{
+ //~ Methods ------------------------------------------------------------------------------------
+
+ /**
+ * Setup the test
+ */
+ protected void setUp()
+ {
+ }
+
+ /**
+ * Test a null DN
+ */
+ public void testLdapDNNull() throws DecoderException
+ {
+ Assert.assertEquals( "", new LdapDN( null ).toString() );
+ }
+
+ /**
+ * test an empty DN
+ */
+ public void testLdapDNEmpty() throws DecoderException
+ {
+ Assert.assertEquals( "", new LdapDN( "".getBytes() ).toString() );
+ }
+
+ /**
+ * test a simple DN : a = b
+ */
+ public void testLdapDNSimple() throws DecoderException
+ {
+ Assert.assertEquals( "a = b", new LdapDN( "a = b".getBytes() ).toString() );
+ }
+
+ /**
+ * test a composite DN : a = b, d = e
+ */
+ public void testLdapDNComposite() throws DecoderException
+ {
+ Assert.assertEquals( "a = b, c = d", new LdapDN( "a = b, c = d".getBytes() ).toString() );
+ }
+
+ /**
+ * test a composite DN with or without spaces: a=b, a =b, a= b, a = b, a = b
+ */
+ public void testLdapDNCompositeWithSpace() throws DecoderException
+ {
+ Assert.assertEquals( "a=b, a =b, a= b, a = b, a = b",
+ new LdapDN( "a=b, a =b, a= b, a = b, a = b".getBytes() ).toString() );
+ }
+
+ /**
+ * test a composite DN with differents separators : a=b;c=d,e=f
+ * It should return a=b,c=d,e=f (the ';' is replaced by a ',')
+ */
+ public void testLdapDNCompositeSepators() throws DecoderException
+ {
+ Assert.assertEquals( "a=b,c=d,e=f", new LdapDN( "a=b;c=d,e=f".getBytes() ).toString() );
+ }
+
+ /**
+ * test a simple DN with differents separators : a = b + c = d
+ */
+ public void testLdapDNSimpleMultivaluedAttribute() throws DecoderException
+ {
+ Assert.assertEquals( "a = b + c = d",
+ new LdapDN( "a = b + c = d".getBytes() ).toString() );
+ }
+
+ /**
+ * test a composite DN with differents separators : a=b+c=d, e=f + g=h + i=j
+ */
+ public void testLdapDNCompositeMultivaluedAttribute() throws DecoderException
+ {
+ Assert.assertEquals( "a=b+c=d, e=f + g=h + i=j",
+ new LdapDN( "a=b+c=d, e=f + g=h + i=j".getBytes() ).toString() );
+ }
+
+ /**
+ * test a simple DN with an oid prefix (uppercase) : OID.12.34.56 = azerty
+ */
+ public void testLdapDNOidUpper() throws DecoderException
+ {
+ Assert.assertEquals( "OID.12.34.56 = azerty",
+ new LdapDN( "OID.12.34.56 = azerty".getBytes() ).toString() );
+ }
+
+ /**
+ * test a simple DN with an oid prefix (lowercase) : oid.12.34.56 = azerty
+ */
+ public void testLdapDNOidLower() throws DecoderException
+ {
+ Assert.assertEquals( "oid.12.34.56 = azerty",
+ new LdapDN( "oid.12.34.56 = azerty".getBytes() ).toString() );
+ }
+
+ /**
+ * test a simple DN with an oid attribut wiithout oid prefix : 12.34.56 = azerty
+ */
+ public void testLdapDNOidWithoutPrefix() throws DecoderException
+ {
+ Assert.assertEquals( "12.34.56 = azerty",
+ new LdapDN( "12.34.56 = azerty".getBytes() ).toString() );
+ }
+
+ /**
+ * test a composite DN with an oid attribut wiithout oid prefix : 12.34.56 = azerty; 7.8 = test
+ */
+ public void testLdapDNCompositeOidWithoutPrefix() throws DecoderException
+ {
+ Assert.assertEquals( "12.34.56 = azerty, 7.8 = test",
+ new LdapDN( "12.34.56 = azerty; 7.8 = test".getBytes() ).toString() );
+ }
+
+ /**
+ * test a simple DN with pair char attribute value : a = \,\=\+\<\>\#\;\\\"\A0\00"
+ */
+ public void testLdapDNPairCharAttributeValue() throws DecoderException
+ {
+ Assert.assertEquals( "a = \\,\\=\\+\\<\\>\\#\\;\\\\\\\"\\A0\\00",
+ new LdapDN( "a = \\,\\=\\+\\<\\>\\#\\;\\\\\\\"\\A0\\00".getBytes() ).toString() );
+ }
+
+ /**
+ * test a simple DN with hexString attribute value : a = #0010A0AAFF
+ */
+ public void testLdapDNHexStringAttributeValue() throws DecoderException
+ {
+ Assert.assertEquals( "a = #0010A0AAFF",
+ new LdapDN( "a = #0010A0AAFF".getBytes() ).toString() );
+ }
+
+ /**
+ * test a simple DN with quoted attribute value : a = "quoted \"value"
+ */
+ public void testLdapDNQuotedAttributeValue() throws DecoderException
+ {
+ Assert.assertEquals( "a = quoted \\\"value",
+ new LdapDN( "a = quoted \\\"value".getBytes() ).toString() );
+ }
+}
Propchange: directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/utils/LdapDNTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/utils/LdapUrlTest.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/utils/LdapUrlTest.java?rev=279887&view=auto
==============================================================================
--- directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/utils/LdapUrlTest.java (added)
+++ directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/utils/LdapUrlTest.java Fri Sep 9 14:41:22 2005
@@ -0,0 +1,540 @@
+/*
+ * Copyright 2005 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.asn1new.ldap.codec.utils;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.asn1.codec.DecoderException;
+import org.apache.asn1new.ldap.codec.primitives.LdapURL;
+
+/**
+ * Test the class LdapURL
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class LdapUrlTest extends TestCase
+{
+ //~ Methods ------------------------------------------------------------------------------------
+
+ /**
+ * Setup the test
+ */
+ protected void setUp()
+ {
+ }
+
+ /**
+ * Test a null LdapURL
+ */
+ public void testLdapUrlNull() throws DecoderException
+ {
+ Assert.assertEquals( "ldap:///", new LdapURL().toString() );
+ }
+
+ /**
+ * test an empty LdapURL
+ */
+ public void testLdapDNEmpty() throws DecoderException
+ {
+ Assert.assertEquals( "ldap:///", new LdapURL( "".getBytes() ).toString() );
+ }
+
+ /**
+ * test a simple LdapURL
+ */
+ public void testLdapDNSimple() throws DecoderException
+ {
+ Assert.assertEquals( "ldap://directory.apache.org:80/", new LdapURL( "ldap://directory.apache.org:80/".getBytes() ).toString() );
+ }
+
+ /**
+ * test a LdapURL host 1
+ */
+ public void testLdapDNWithMinus() throws DecoderException
+ {
+ Assert.assertEquals( "ldap://d-a.org:80/", new LdapURL( "ldap://d-a.org:80/".getBytes() ).toString() );
+ }
+
+ /**
+ * test a LdapURL with a bad port
+ */
+ public void testLdapDNBadPort() throws DecoderException
+ {
+ try
+ {
+ new LdapURL( "ldap://directory.apache.org:/".getBytes() );
+ }
+ catch (DecoderException de)
+ {
+ Assert.assertTrue(true);
+ return;
+ }
+
+ Assert.fail();
+ }
+
+ /**
+ * test a LdapURL with a bad port 2
+ */
+ public void testLdapDNBadPort2() throws DecoderException
+ {
+ try
+ {
+ new LdapURL( "ldap://directory.apache.org:-1/".getBytes() );
+ }
+ catch (DecoderException de)
+ {
+ Assert.assertTrue(true);
+ return;
+ }
+
+ Assert.fail();
+ }
+
+ /**
+ * test a LdapURL with a bad port 3
+ */
+ public void testLdapDNBadPort3() throws DecoderException
+ {
+ try
+ {
+ new LdapURL( "ldap://directory.apache.org:abc/".getBytes() );
+ }
+ catch (DecoderException de)
+ {
+ Assert.assertTrue(true);
+ return;
+ }
+
+ Assert.fail();
+ }
+
+ /**
+ * test a LdapURL with a bad port 4
+ */
+ public void testLdapDNBadPort4() throws DecoderException
+ {
+ try
+ {
+ new LdapURL( "ldap://directory.apache.org:65536/".getBytes() );
+ }
+ catch (DecoderException de)
+ {
+ Assert.assertTrue(true);
+ return;
+ }
+
+ Assert.fail();
+ }
+
+ /**
+ * test a LdapURL with no host
+ */
+ public void testLdapDNBadHost1() throws DecoderException
+ {
+ Assert.assertEquals("ldap:///", new LdapURL( "ldap:///".getBytes() ).toString() );
+ }
+
+ /**
+ * test a LdapURL with a bad host 2
+ */
+ public void testLdapDNBadHost2() throws DecoderException
+ {
+ try
+ {
+ new LdapURL( "ldap://./".getBytes() );
+ }
+ catch (DecoderException de)
+ {
+ Assert.assertTrue(true);
+ return;
+ }
+
+ Assert.fail();
+ }
+
+ /**
+ * test a LdapURL with a bad host 3
+ */
+ public void testLdapDNBadHost3() throws DecoderException
+ {
+ try
+ {
+ new LdapURL( "ldap://a..b/".getBytes() );
+ }
+ catch (DecoderException de)
+ {
+ Assert.assertTrue(true);
+ return;
+ }
+
+ Assert.fail();
+ }
+
+ /**
+ * test a LdapURL with a bad host 4
+ */
+ public void testLdapDNBadHost4() throws DecoderException
+ {
+ try
+ {
+ new LdapURL( "ldap://-/".getBytes() );
+ }
+ catch (DecoderException de)
+ {
+ Assert.assertTrue(true);
+ return;
+ }
+
+ Assert.fail();
+ }
+
+ /**
+ * test a LdapURL with a bad host 5
+ */
+ public void testLdapDNBadHost5() throws DecoderException
+ {
+ try
+ {
+ new LdapURL( "ldap://a.b.c-/".getBytes() );
+ }
+ catch (DecoderException de)
+ {
+ Assert.assertTrue(true);
+ return;
+ }
+
+ Assert.fail();
+ }
+
+ /**
+ * test a LdapURL with a bad host 6
+ */
+ public void testLdapDNBadHost6() throws DecoderException
+ {
+ try
+ {
+ new LdapURL( "ldap://a.b.-c/".getBytes() );
+ }
+ catch (DecoderException de)
+ {
+ Assert.assertTrue(true);
+ return;
+ }
+
+ Assert.fail();
+ }
+
+ /**
+ * test a LdapURL with a bad host 7
+ */
+ public void testLdapDNBadHost7() throws DecoderException
+ {
+ try
+ {
+ new LdapURL( "ldap://a.-.c/".getBytes() );
+ }
+ catch (DecoderException de)
+ {
+ Assert.assertTrue(true);
+ return;
+ }
+
+ Assert.fail();
+ }
+
+ /**
+ * test a LdapURL IP host
+ */
+ public void testLdapDNIPHost() throws DecoderException
+ {
+ Assert.assertEquals( "ldap://1.2.3.4/", new LdapURL( "ldap://1.2.3.4/".getBytes() ).toString() );
+ }
+
+ /**
+ * test a LdapURL IP host and port
+ */
+ public void testLdapDNIPHostPort() throws DecoderException
+ {
+ Assert.assertEquals( "ldap://1.2.3.4:80/", new LdapURL( "ldap://1.2.3.4:80/".getBytes() ).toString() );
+ }
+
+ /**
+ * test a LdapURL with a bad IP host 1
+ */
+ public void testLdapDNBadHostIP1() throws DecoderException
+ {
+ try
+ {
+ new LdapURL( "ldap://1.1.1/".getBytes() );
+ }
+ catch (DecoderException de)
+ {
+ Assert.assertTrue(true);
+ return;
+ }
+
+ Assert.fail();
+ }
+
+ /**
+ * test a LdapURL with a bad IP host 2
+ */
+ public void testLdapDNBadHostIP2() throws DecoderException
+ {
+ try
+ {
+ new LdapURL( "ldap://1.1.1./".getBytes() );
+ }
+ catch (DecoderException de)
+ {
+ Assert.assertTrue(true);
+ return;
+ }
+
+ Assert.fail();
+ }
+
+ /**
+ * test a LdapURL with a bad IP host 3
+ */
+ public void testLdapDNBadHostIP3() throws DecoderException
+ {
+ try
+ {
+ new LdapURL( "ldap://1.1.1.100000/".getBytes() );
+ }
+ catch (DecoderException de)
+ {
+ Assert.assertTrue(true);
+ return;
+ }
+
+ Assert.fail();
+ }
+
+ /**
+ * test a LdapURL with a bad IP host 4
+ */
+ public void testLdapDNBadHostIP4() throws DecoderException
+ {
+ try
+ {
+ new LdapURL( "ldap://1.1.1.1.1/".getBytes() );
+ }
+ catch (DecoderException de)
+ {
+ Assert.assertTrue(true);
+ return;
+ }
+
+ Assert.fail();
+ }
+
+ /**
+ * test a LdapURL with a valid host hich is not an IP
+ */
+ public void testLdapDNNotAnIP() throws DecoderException
+ {
+ Assert.assertEquals("ldap://1.1.1.100000.a/", new LdapURL( "ldap://1.1.1.100000.a/".getBytes() ).toString() );
+ }
+
+ /**
+ * test a LdapURL with valid simpleDN
+ */
+ public void testLdapDNSimpleDN() throws DecoderException
+ {
+ Assert.assertEquals("ldap://directory.apache.org:389/dc=example,dc=org/", new LdapURL( "ldap://directory.apache.org:389/dc=example,dc=org/".getBytes() ).toString() );
+ }
+
+ /**
+ * test a LdapURL with valid simpleDN 2
+ */
+ public void testLdapDNSimpleDN2() throws DecoderException
+ {
+ Assert.assertEquals("ldap://directory.apache.org:389/dc=example", new LdapURL( "ldap://directory.apache.org:389/dc=example".getBytes() ).toString() );
+ }
+
+ /**
+ * test a LdapURL with a valid encoded DN
+ */
+ public void testLdapDNSimpleDNEncoded() throws DecoderException
+ {
+ Assert.assertEquals("ldap://directory.apache.org:389/dc=example%202,dc=org", new LdapURL( "ldap://directory.apache.org:389/dc=example%202,dc=org".getBytes() ).toString() );
+ }
+
+ /**
+ * test a LdapURL with an invalid DN
+ */
+ public void testLdapDNInvalidDN() throws DecoderException
+ {
+ try
+ {
+ new LdapURL( "ldap://directory.apache.org:389/dc=example%202,dc : org".getBytes() );
+ }
+ catch (DecoderException de)
+ {
+ Assert.assertTrue(true);
+ return;
+ }
+ }
+
+ /**
+ * test a LdapURL with an invalid DN 2
+ */
+ public void testLdapDNInvalidDN2() throws DecoderException
+ {
+ try
+ {
+ new LdapURL( "ldap://directory.apache.org:389/dc=example%202,dc = org,".getBytes() );
+ }
+ catch (DecoderException de)
+ {
+ Assert.assertTrue(true);
+ return;
+ }
+ }
+
+ /**
+ * test a LdapURL with valid unique attributes
+ */
+ public void testLdapDNUniqueAttribute() throws DecoderException
+ {
+ Assert.assertEquals("ldap://directory.apache.org:389/dc=example,dc=org?ou", new LdapURL( "ldap://directory.apache.org:389/dc=example,dc=org?ou".getBytes() ).toString() );
+ }
+
+ /**
+ * test a LdapURL with valid attributes
+ */
+ public void testLdapDNAttributes() throws DecoderException
+ {
+ Assert.assertEquals("ldap://directory.apache.org:389/dc=example,dc=org?ou,objectclass,dc", new LdapURL( "ldap://directory.apache.org:389/dc=example,dc=org?ou,objectclass,dc".getBytes() ).toString() );
+ }
+
+ /**
+ * test a LdapURL with valid duplicated attributes
+ */
+ public void testLdapDNDuplicatedAttributes() throws DecoderException
+ {
+ Assert.assertEquals("ldap://directory.apache.org:389/dc=example,dc=org?ou,dc", new LdapURL( "ldap://directory.apache.org:389/dc=example,dc=org?ou,dc,ou".getBytes() ).toString() );
+ }
+
+ /**
+ * test a LdapURL with invalid attributes
+ */
+ public void testLdapInvalideAttributes() throws DecoderException
+ {
+ try
+ {
+ new LdapURL( "ldap://directory.apache.org:389/dc=example,dc=org?ou=,dc".getBytes() );
+ }
+ catch (DecoderException de)
+ {
+ Assert.assertTrue(true);
+ return;
+ }
+ }
+ /**
+ * test a LdapURL with attributes but no DN
+ */
+ public void testLdapNoDNAttributes() throws DecoderException
+ {
+ try
+ {
+ new LdapURL( "ldap://directory.apache.org:389/?ou,dc".getBytes() );
+ }
+ catch (DecoderException de)
+ {
+ Assert.assertTrue(true);
+ return;
+ }
+ }
+
+ /**
+ * test 1 from RFC 2255 LdapURL
+ */
+ public void testLdapRFC2255_1() throws DecoderException
+ {
+ Assert.assertEquals("ldap:///o=University%20of%20Michigan,c=US", new LdapURL( "ldap:///o=University%20of%20Michigan,c=US".getBytes() ).toString() );
+ }
+
+ /**
+ * test 2 from RFC 2255 LdapURL
+ */
+ public void testLdapRFC2255_2() throws DecoderException
+ {
+ Assert.assertEquals("ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US", new LdapURL( "ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US".getBytes() ).toString() );
+ }
+
+ /**
+ * test 3 from RFC 2255 LdapURL
+ */
+ public void testLdapRFC2255_3() throws DecoderException
+ {
+ Assert.assertEquals("ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US?postalAddress", new LdapURL( "ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US?postalAddress".getBytes() ).toString() );
+ }
+
+ /**
+ * test 4 from RFC 2255 LdapURL
+ */
+ public void testLdapRFC2255_4() throws DecoderException
+ {
+ Assert.assertEquals("ldap://host.com:6666/o=University%20of%20Michigan,c=US??sub?(cn=Babs%20Jensen)", new LdapURL( "ldap://host.com:6666/o=University%20of%20Michigan,c=US??sub?(cn=Babs%20Jensen)".getBytes() ).toString() );
+ }
+
+ /**
+ * test 5 from RFC 2255 LdapURL
+ */
+ public void testLdapRFC2255_5() throws DecoderException
+ {
+ Assert.assertEquals("ldap://ldap.itd.umich.edu/c=GB?objectClass?one", new LdapURL( "ldap://ldap.itd.umich.edu/c=GB?objectClass?one".getBytes() ).toString() );
+ }
+
+ /**
+ * test 6 from RFC 2255 LdapURL
+ */
+ public void testLdapRFC2255_6() throws DecoderException
+ {
+ Assert.assertEquals("ldap://ldap.question.com/o=Question%3f,c=US?mail", new LdapURL( "ldap://ldap.question.com/o=Question%3f,c=US?mail".getBytes() ).toString() );
+ }
+
+ /**
+ * test 7 from RFC 2255 LdapURL
+ */
+ public void testLdapRFC2255_7() throws DecoderException
+ {
+ Assert.assertEquals("ldap://ldap.netscape.com/o=Babsco,c=US???(int=%5c00%5c00%5c00%5c04)", new LdapURL( "ldap://ldap.netscape.com/o=Babsco,c=US???(int=%5c00%5c00%5c00%5c04)".getBytes() ).toString() );
+ }
+
+ /**
+ * test 8 from RFC 2255 LdapURL
+ */
+ public void testLdapRFC2255_8() throws DecoderException
+ {
+ Assert.assertEquals("ldap:///??sub??bindname=cn=Manager%2co=Foo", new LdapURL( "ldap:///??sub??bindname=cn=Manager%2co=Foo".getBytes() ).toString() );
+ }
+
+ /**
+ * test 9 from RFC 2255 LdapURL
+ */
+ public void testLdapRFC2255_9() throws DecoderException
+ {
+ Assert.assertEquals("ldap:///??sub??!bindname=cn=Manager%2co=Foo", new LdapURL( "ldap:///??sub??!bindname=cn=Manager%2co=Foo".getBytes() ).toString() );
+ }
+}
+
Propchange: directory/shared/ldap/branches/elecharny-cleanup/apache2-provider/src/test/org/apache/asn1new/ldap/codec/utils/LdapUrlTest.java
------------------------------------------------------------------------------
svn:eol-style = native