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/11/23 14:23:37 UTC

svn commit: r348434 - /directory/shared/ldap/trunk/apache2-provider/src/test/org/apache/asn1new/ldap/codec/SearchRequestTest.java

Author: elecharny
Date: Wed Nov 23 05:23:33 2005
New Revision: 348434

URL: http://svn.apache.org/viewcvs?rev=348434&view=rev
Log:
Added the Van Nhu test which check that controls are correctly handled

Modified:
    directory/shared/ldap/trunk/apache2-provider/src/test/org/apache/asn1new/ldap/codec/SearchRequestTest.java

Modified: directory/shared/ldap/trunk/apache2-provider/src/test/org/apache/asn1new/ldap/codec/SearchRequestTest.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/apache2-provider/src/test/org/apache/asn1new/ldap/codec/SearchRequestTest.java?rev=348434&r1=348433&r2=348434&view=diff
==============================================================================
--- directory/shared/ldap/trunk/apache2-provider/src/test/org/apache/asn1new/ldap/codec/SearchRequestTest.java (original)
+++ directory/shared/ldap/trunk/apache2-provider/src/test/org/apache/asn1new/ldap/codec/SearchRequestTest.java Wed Nov 23 05:23:33 2005
@@ -27,6 +27,7 @@
 import org.apache.asn1new.ber.containers.IAsn1Container;
 import org.apache.asn1new.ldap.codec.primitives.LdapString;
 import org.apache.asn1new.ldap.pojo.AttributeValueAssertion;
+import org.apache.asn1new.ldap.pojo.Control;
 import org.apache.asn1new.ldap.pojo.LdapMessage;
 import org.apache.asn1new.ldap.pojo.SearchRequest;
 import org.apache.asn1new.ldap.pojo.filters.AndFilter;
@@ -1772,4 +1773,101 @@
             Assert.fail( ee.getMessage() );
         }
     }
+    
+    /**
+    * Test the decoding of a SearchRequest with controls.
+    */
+    public void testDecodeSearchRequestWithControls()
+    {
+       byte[] asn1BER = new byte[]
+       {
+           0x30, 0x7f,
+               0x02, 0x01, 0x04, // messageID
+               0x63, 0x33,
+                   0x04, 0x13,
+                       0x64, 0x63, 0x3d, 0x6d, 0x79, 0x2d, 0x64, 0x6f, 0x6d, 0x61,
+                               0x69, 0x6e, 0x2c, 0x64, 0x63, 0x3d, 0x63, 0x6f, 0x6d, // baseObject: dc=my-domain,dc=com
+                   0x0a, 0x01, 0x02, // scope: subtree
+                   0x0a, 0x01, 0x03, // derefAliases: derefAlways
+                   0x02, 0x01, 0x00, // sizeLimit: 0
+                   0x02, 0x01, 0x00, // timeLimit: 0
+                   0x01, 0x01, 0x00, // typesOnly: false
+                   (byte)0x87, 0x0b,
+                       0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, // filter: (objectClass=*)
+                   0x30, 0x00,
+               (byte)0xa0, 0x45, // controls
+                   0x30, 0x28,
+                       0x04, 0x16,
+                           0x31, 0x2e, 0x32, 0x2e, 0x38, 0x34, 0x30, 0x2e, 0x31, 0x31,
+                                   0x33, 0x35, 0x35, 0x36, 0x2e, 0x31, 0x2e, 0x34, 0x2e, 0x33,
+                                   0x31, 0x39, // control oid: 1.2.840.113556.1.4.319
+                       0x01, 0x01, (byte)0xff, // criticality: false
+                       0x04, 0x0b,
+                           0x30, 0x09, 0x02, 0x01, 0x02, 0x04, 0x04, 0x47, 0x00, 0x00, 0x00, // value: pageSize=2
+                   0x30, 0x19,
+                       0x04, 0x17,
+                           0x32, 0x2e, 0x31, 0x36, 0x2e, 0x38, 0x34, 0x30, 0x2e, 0x31,
+                                   0x2e, 0x31, 0x31, 0x33, 0x37, 0x33, 0x30, 0x2e, 0x33, 0x2e,
+                                   0x34, 0x2e, 0x32 // control oid: 2.16.840.1.113730.3.4.2
+       };
+    
+       Asn1Decoder ldapDecoder = new LdapDecoder();
+    
+       ByteBuffer  stream      = ByteBuffer.allocate( asn1BER.length );
+       stream.put( asn1BER );
+       String decodedPdu       = StringUtils.dumpBytes( stream.array() );
+       stream.flip();
+    
+       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( 4, message.getMessageId() );
+       Assert.assertEquals( 2, message.getControls().size() );
+    
+       // this is a constant in Java 5 API
+       String pagedResultsControlOID = "1.2.840.113556.1.4.319";
+       Control pagedResultsControl = message.getControls( 0 );
+       Assert.assertEquals( pagedResultsControlOID, pagedResultsControl.getControlType() );
+       Assert.assertTrue( pagedResultsControl.getCriticality() );
+    
+       // this is a constant in Java 5 API
+       String manageReferralControlOID = "2.16.840.1.113730.3.4.2";
+       Control manageReferralControl = message.getControls( 1 );
+       Assert.assertEquals( manageReferralControlOID, manageReferralControl.getControlType() );
+    
+       SearchRequest sr    = message.getSearchRequest();
+       Assert.assertEquals( "dc=my-domain,dc=com", sr.getBaseObject() );
+       Assert.assertEquals( LdapConstants.SCOPE_WHOLE_SUBTREE, sr.getScope() );
+       Assert.assertEquals( LdapConstants.DEREF_ALWAYS, sr.getDerefAliases() );
+       Assert.assertEquals( 0, sr.getSizeLimit() );
+       Assert.assertEquals( 0, sr.getTimeLimit() );
+       Assert.assertEquals( false, sr.isTypesOnly() );
+    
+       Assert.assertTrue( sr.getFilter() instanceof PresentFilter );
+       Assert.assertEquals ( "objectClass",
+           ( (PresentFilter) sr.getFilter() ).getAttributeDescription().getString());
+    
+       // 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() );
+       }
+    }    
 }