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 2006/01/27 23:52:04 UTC
svn commit: r373018 - in /directory/trunks/common/ldap/src:
main/java/org/apache/ldap/common/codec/bind/BindResponseGrammar.java
test/java/org/apache/ldap/common/codec/bind/BindResponseTest.java
Author: elecharny
Date: Fri Jan 27 14:51:56 2006
New Revision: 373018
URL: http://svn.apache.org/viewcvs?rev=373018&view=rev
Log:
- Added a pop transition
- Added two tests
Modified:
directory/trunks/common/ldap/src/main/java/org/apache/ldap/common/codec/bind/BindResponseGrammar.java
directory/trunks/common/ldap/src/test/java/org/apache/ldap/common/codec/bind/BindResponseTest.java
Modified: directory/trunks/common/ldap/src/main/java/org/apache/ldap/common/codec/bind/BindResponseGrammar.java
URL: http://svn.apache.org/viewcvs/directory/trunks/common/ldap/src/main/java/org/apache/ldap/common/codec/bind/BindResponseGrammar.java?rev=373018&r1=373017&r2=373018&view=diff
==============================================================================
--- directory/trunks/common/ldap/src/main/java/org/apache/ldap/common/codec/bind/BindResponseGrammar.java (original)
+++ directory/trunks/common/ldap/src/main/java/org/apache/ldap/common/codec/bind/BindResponseGrammar.java Fri Jan 27 14:51:56 2006
@@ -173,6 +173,9 @@
// We can have an END transition
ldapMessageContainer.grammarEndAllowed( true );
+ // We can have an Pop transition
+ ldapMessageContainer.grammarPopAllowed( true );
+
if ( log.isDebugEnabled() )
{
log.debug( "The SASL credentials value is : {}", bindResponseMessage.getServerSaslCreds().toString() );
Modified: directory/trunks/common/ldap/src/test/java/org/apache/ldap/common/codec/bind/BindResponseTest.java
URL: http://svn.apache.org/viewcvs/directory/trunks/common/ldap/src/test/java/org/apache/ldap/common/codec/bind/BindResponseTest.java?rev=373018&r1=373017&r2=373018&view=diff
==============================================================================
--- directory/trunks/common/ldap/src/test/java/org/apache/ldap/common/codec/bind/BindResponseTest.java (original)
+++ directory/trunks/common/ldap/src/test/java/org/apache/ldap/common/codec/bind/BindResponseTest.java Fri Jan 27 14:51:56 2006
@@ -48,19 +48,19 @@
stream.put(
new byte[]
{
- 0x30, 0x0C, // LDAPMessage ::=SEQUENCE {
- 0x02, 0x01, 0x01, // messageID MessageID
- 0x61, 0x07, // CHOICE { ..., bindResponse BindResponse, ...
- // BindResponse ::= APPLICATION[1] SEQUENCE {
- // COMPONENTS OF LDAPResult,
- 0x0A, 0x01, 0x00, // LDAPResult ::= SEQUENCE {
- // resultCode ENUMERATED {
- // success (0), ...
- // },
- 0x04, 0x00, // matchedDN LDAPDN,
- 0x04, 0x00 // errorMessage LDAPString,
- // referral [3] Referral OPTIONAL }
- // serverSaslCreds [7] OCTET STRING OPTIONAL }
+ 0x30, 0x0C, // LDAPMessage ::=SEQUENCE {
+ 0x02, 0x01, 0x01, // messageID MessageID
+ 0x61, 0x07, // CHOICE { ..., bindResponse BindResponse, ...
+ // BindResponse ::= APPLICATION[1] SEQUENCE {
+ // COMPONENTS OF LDAPResult,
+ 0x0A, 0x01, 0x00, // LDAPResult ::= SEQUENCE {
+ // resultCode ENUMERATED {
+ // success (0), ...
+ // },
+ 0x04, 0x00, // matchedDN LDAPDN,
+ 0x04, 0x00 // errorMessage LDAPString,
+ // referral [3] Referral OPTIONAL }
+ // serverSaslCreds [7] OCTET STRING OPTIONAL }
} );
String decodedPdu = StringTools.dumpBytes( stream.array() );
@@ -133,7 +133,7 @@
0x04, 0x00, // errorMessage LDAPString,
// referral [3] Referral OPTIONAL }
// serverSaslCreds [7] OCTET STRING OPTIONAL }
- (byte)0xa0, 0x2C, // controls
+ (byte)0xa0, 0x2C, // controls
0x30, 0x2A,
0x04, 0x16,
0x31, 0x2e, 0x32, 0x2e, 0x38, 0x34, 0x30, 0x2e, 0x31, 0x31,
@@ -181,6 +181,168 @@
Control control = message.getControls( 0 );
assertEquals( "1.2.840.113556.1.4.319", control.getControlType() );
assertEquals( "0x30 0x0B 0x0A 0x01 0x08 0x04 0x03 0x61 0x3D 0x62 0x02 0x01 0x10 ", StringTools.dumpBytes( (byte[])control.getControlValue() ) );
+
+ // Check the encoding
+ try
+ {
+ ByteBuffer bb = message.encode( null );
+
+ String encodedPdu = StringTools.dumpBytes( bb.array() );
+
+ assertEquals(encodedPdu, decodedPdu );
+ }
+ catch ( EncoderException ee )
+ {
+ ee.printStackTrace();
+ fail( ee.getMessage() );
+ }
+ }
+
+ /**
+ * Test the decoding of a BindResponse with an empty credentials
+ */
+ public void testDecodeBindResponseServerSASLEmptyCredentials()
+ {
+ Asn1Decoder ldapDecoder = new LdapDecoder();
+
+ ByteBuffer stream = ByteBuffer.allocate( 0x10 );
+
+ stream.put(
+ new byte[]
+ {
+ 0x30, 0x0E, // LDAPMessage ::=SEQUENCE {
+ 0x02, 0x01, 0x01, // messageID MessageID
+ 0x61, 0x09, // CHOICE { ..., bindResponse BindResponse, ...
+ // BindResponse ::= APPLICATION[1] SEQUENCE {
+ // COMPONENTS OF LDAPResult,
+ 0x0A, 0x01, 0x00, // LDAPResult ::= SEQUENCE {
+ // resultCode ENUMERATED {
+ // success (0), ...
+ // },
+ 0x04, 0x00, // matchedDN LDAPDN,
+ 0x04, 0x00, // errorMessage LDAPString,
+ // referral [3] Referral OPTIONAL }
+ (byte)0x87, 0x00 // serverSaslCreds [7] OCTET STRING OPTIONAL }
+ } );
+
+ String decodedPdu = StringTools.dumpBytes( stream.array() );
+ stream.flip();
+
+ // Allocate a LdapMessage Container
+ IAsn1Container ldapMessageContainer = new LdapMessageContainer();
+
+ // Decode the BindResponse PDU
+ try
+ {
+ ldapDecoder.decode( stream, ldapMessageContainer );
+ }
+ catch ( DecoderException de )
+ {
+ de.printStackTrace();
+ fail( de.getMessage() );
+ }
+
+ // Check the decoded BindResponse
+ LdapMessage message = ( ( LdapMessageContainer ) ldapMessageContainer ).getLdapMessage();
+ BindResponse br = message.getBindResponse();
+
+ assertEquals( 1, message.getMessageId() );
+ assertEquals( 0, br.getLdapResult().getResultCode() );
+ assertEquals( "", br.getLdapResult().getMatchedDN() );
+ assertEquals( "", br.getLdapResult().getErrorMessage() );
+ assertEquals( "", StringTools.utf8ToString( br.getServerSaslCreds() ) );
+
+ // Check the length
+ assertEquals(0x10, message.computeLength());
+
+ // Check the encoding
+ try
+ {
+ ByteBuffer bb = message.encode( null );
+
+ String encodedPdu = StringTools.dumpBytes( bb.array() );
+
+ assertEquals(encodedPdu, decodedPdu );
+ }
+ catch ( EncoderException ee )
+ {
+ ee.printStackTrace();
+ fail( ee.getMessage() );
+ }
+ }
+
+ /**
+ * Test the decoding of a BindResponse with an empty credentials
+ * with controls
+ */
+ public void testDecodeBindResponseServerSASLEmptyCredentialsWithControls()
+ {
+ Asn1Decoder ldapDecoder = new LdapDecoder();
+
+ ByteBuffer stream = ByteBuffer.allocate( 0x2D );
+
+ stream.put(
+ new byte[]
+ {
+ 0x30, 0x2B, // LDAPMessage ::=SEQUENCE {
+ 0x02, 0x01, 0x01, // messageID MessageID
+ 0x61, 0x09, // CHOICE { ..., bindResponse BindResponse, ...
+ // BindResponse ::= APPLICATION[1] SEQUENCE {
+ // COMPONENTS OF LDAPResult,
+ 0x0A, 0x01, 0x00, // LDAPResult ::= SEQUENCE {
+ // resultCode ENUMERATED {
+ // success (0), ...
+ // },
+ 0x04, 0x00, // matchedDN LDAPDN,
+ 0x04, 0x00, // errorMessage LDAPString,
+ // referral [3] Referral OPTIONAL }
+ (byte)0x87, 0x00, // serverSaslCreds [7] OCTET STRING OPTIONAL }
+ (byte)0xA0, 0x1B, // A control
+ 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
+ } );
+
+ String decodedPdu = StringTools.dumpBytes( stream.array() );
+ stream.flip();
+
+ // Allocate a LdapMessage Container
+ IAsn1Container ldapMessageContainer = new LdapMessageContainer();
+
+ // Decode the BindResponse PDU
+ try
+ {
+ ldapDecoder.decode( stream, ldapMessageContainer );
+ }
+ catch ( DecoderException de )
+ {
+ de.printStackTrace();
+ fail( de.getMessage() );
+ }
+
+ // Check the decoded BindResponse
+ LdapMessage message = ( ( LdapMessageContainer ) ldapMessageContainer ).getLdapMessage();
+ BindResponse br = message.getBindResponse();
+
+ assertEquals( 1, message.getMessageId() );
+ assertEquals( 0, br.getLdapResult().getResultCode() );
+ assertEquals( "", br.getLdapResult().getMatchedDN() );
+ assertEquals( "", br.getLdapResult().getErrorMessage() );
+ assertEquals( "", StringTools.utf8ToString( br.getServerSaslCreds() ) );
+
+ // Check the Control
+ List controls = message.getControls();
+
+ assertEquals( 1, controls.size() );
+
+ Control control = message.getControls( 0 );
+ assertEquals( "2.16.840.1.113730.3.4.2", control.getControlType() );
+ assertEquals( "", StringTools.dumpBytes( (byte[])control.getControlValue() ) );
+
+ // Check the length
+ assertEquals(0x2D, message.computeLength());
// Check the encoding
try