Search in sources :

Example 26 with AddResponse

use of org.apache.directory.api.ldap.model.message.AddResponse in project directory-ldap-api by apache.

the class LdapResultTest method testDecodeAddResponseEmptyResultCodeOKReferrals.

/**
 * Test the decoding of a AddResponse with a valid LdapResult with referrals
 */
@Test
public void testDecodeAddResponseEmptyResultCodeOKReferrals() {
    Asn1Decoder ldapDecoder = new Asn1Decoder();
    ByteBuffer stream = ByteBuffer.allocate(0x24);
    stream.put(new byte[] { 0x30, // LDAPMessage ::=SEQUENCE {
    0x22, 0x02, 0x01, // messageID MessageID
    0x01, 0x69, // CHOICE { ..., addResponse AddResponse, ...
    0x1D, 0x0A, 0x01, // resultCode success (Referral)
    0x0A, 0x04, // Empty matched Dn
    0x00, 0x04, // Empty errorMessage
    0x00, (byte) 0xA3, 0x14, 0x04, 0x08, 'l', 'd', 'a', 'p', ':', '/', '/', '/', 0x04, 0x08, 'l', 'd', 'a', 'p', ':', '/', '/', '/' });
    String decodedPdu = Strings.dumpBytes(stream.array());
    stream.flip();
    // Allocate a LdapMessage Container
    LdapMessageContainer<AddResponseDecorator> container = new LdapMessageContainer<AddResponseDecorator>(codec);
    // Decode the AddResponse PDU
    try {
        ldapDecoder.decode(stream, container);
    } catch (DecoderException de) {
        de.printStackTrace();
        fail(de.getMessage());
    }
    // Check the decoded AddResponse
    AddResponse addResponse = container.getMessage();
    assertEquals(1, addResponse.getMessageId());
    assertEquals(ResultCodeEnum.REFERRAL, addResponse.getLdapResult().getResultCode());
    assertEquals("", addResponse.getLdapResult().getMatchedDn().getName());
    assertEquals("", addResponse.getLdapResult().getDiagnosticMessage());
    Referral referral = addResponse.getLdapResult().getReferral();
    assertNotNull(referral);
    assertEquals(2, referral.getLdapUrls().size());
    Collection<String> ldapUrls = referral.getLdapUrls();
    for (String ldapUrl : ldapUrls) {
        assertEquals("ldap:///", ldapUrl);
    }
    try {
        ByteBuffer bb = encoder.encodeMessage(addResponse);
        // Check the length
        assertEquals(0x24, bb.limit());
        String encodedPdu = Strings.dumpBytes(bb.array());
        assertEquals(encodedPdu, decodedPdu);
    } catch (EncoderException ee) {
        ee.printStackTrace();
        fail(ee.getMessage());
    }
}
Also used : LdapMessageContainer(org.apache.directory.api.ldap.codec.api.LdapMessageContainer) DecoderException(org.apache.directory.api.asn1.DecoderException) EncoderException(org.apache.directory.api.asn1.EncoderException) Referral(org.apache.directory.api.ldap.model.message.Referral) Asn1Decoder(org.apache.directory.api.asn1.ber.Asn1Decoder) AddResponse(org.apache.directory.api.ldap.model.message.AddResponse) ByteBuffer(java.nio.ByteBuffer) AddResponseDecorator(org.apache.directory.api.ldap.codec.decorators.AddResponseDecorator) Test(org.junit.Test) AbstractCodecServiceTest(org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest)

Example 27 with AddResponse

use of org.apache.directory.api.ldap.model.message.AddResponse in project directory-ldap-api by apache.

the class LdapResultTest method testDecodeAddResponseEmptyResultCodeOK.

/**
 * Test the decoding of a AddResponse with a valid LdapResult
 */
@Test
public void testDecodeAddResponseEmptyResultCodeOK() {
    Asn1Decoder ldapDecoder = new Asn1Decoder();
    ByteBuffer stream = ByteBuffer.allocate(0x0E);
    stream.put(new byte[] { // LDAPMessage ::=SEQUENCE {
    0x30, // LDAPMessage ::=SEQUENCE {
    0x0C, 0x02, 0x01, // messageID MessageID
    0x01, 0x69, // CHOICE { ..., addResponse AddResponse, ...
    0x07, 0x0A, 0x01, // resultCode success
    0x00, 0x04, // Empty matched Dn
    0x00, 0x04, // Empty errorMessage
    0x00 });
    String decodedPdu = Strings.dumpBytes(stream.array());
    stream.flip();
    // Allocate a LdapMessage Container
    LdapMessageContainer<AddResponseDecorator> container = new LdapMessageContainer<AddResponseDecorator>(codec);
    // Decode the AddResponse PDU
    try {
        ldapDecoder.decode(stream, container);
    } catch (DecoderException de) {
        de.printStackTrace();
        fail(de.getMessage());
    }
    // Check the decoded AddResponse
    AddResponse addResponse = container.getMessage();
    assertEquals(1, addResponse.getMessageId());
    assertEquals(ResultCodeEnum.SUCCESS, addResponse.getLdapResult().getResultCode());
    assertEquals("", addResponse.getLdapResult().getMatchedDn().getName());
    assertEquals("", addResponse.getLdapResult().getDiagnosticMessage());
    try {
        ByteBuffer bb = encoder.encodeMessage(addResponse);
        // Check the length
        assertEquals(0x0E, bb.limit());
        String encodedPdu = Strings.dumpBytes(bb.array());
        assertEquals(encodedPdu, decodedPdu);
    } catch (EncoderException ee) {
        ee.printStackTrace();
        fail(ee.getMessage());
    }
}
Also used : LdapMessageContainer(org.apache.directory.api.ldap.codec.api.LdapMessageContainer) DecoderException(org.apache.directory.api.asn1.DecoderException) EncoderException(org.apache.directory.api.asn1.EncoderException) Asn1Decoder(org.apache.directory.api.asn1.ber.Asn1Decoder) AddResponse(org.apache.directory.api.ldap.model.message.AddResponse) ByteBuffer(java.nio.ByteBuffer) AddResponseDecorator(org.apache.directory.api.ldap.codec.decorators.AddResponseDecorator) Test(org.junit.Test) AbstractCodecServiceTest(org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest)

Example 28 with AddResponse

use of org.apache.directory.api.ldap.model.message.AddResponse in project directory-ldap-api by apache.

the class LdapResultTest method testDecodeAddResponseEmptyResultCodeEmptyReferral.

/**
 * Test the decoding of a AddResponse with a valid LdapResult with referrals
 * and an empty referral
 */
@Test
public void testDecodeAddResponseEmptyResultCodeEmptyReferral() {
    Asn1Decoder ldapDecoder = new Asn1Decoder();
    ByteBuffer stream = ByteBuffer.allocate(0x1C);
    stream.put(new byte[] { // LDAPMessage ::=SEQUENCE {
    0x30, // LDAPMessage ::=SEQUENCE {
    0x1A, 0x02, 0x01, // messageID MessageID
    0x01, 0x69, // CHOICE { ..., addResponse AddResponse, ...
    0x15, 0x0A, 0x01, // resultCode success (Referral)
    0x0A, 0x04, // Empty matched Dn
    0x00, 0x04, // Empty errorMessage
    0x00, (byte) 0xA3, 0x0C, 0x04, 0x08, 'l', 'd', 'a', 'p', ':', '/', '/', '/', 0x04, 0x00 });
    String decodedPdu = Strings.dumpBytes(stream.array());
    stream.flip();
    // Allocate a LdapMessage Container
    LdapMessageContainer<AddResponseDecorator> container = new LdapMessageContainer<AddResponseDecorator>(codec);
    // Decode the AddResponse PDU
    try {
        ldapDecoder.decode(stream, container);
    } catch (DecoderException de) {
        de.printStackTrace();
        fail(de.getMessage());
    }
    // Check the decoded AddResponse
    AddResponse addResponse = container.getMessage();
    assertEquals(1, addResponse.getMessageId());
    assertEquals(ResultCodeEnum.REFERRAL, addResponse.getLdapResult().getResultCode());
    assertEquals("", addResponse.getLdapResult().getMatchedDn().getName());
    assertEquals("", addResponse.getLdapResult().getDiagnosticMessage());
    Referral referral = addResponse.getLdapResult().getReferral();
    assertNotNull(referral);
    assertEquals(2, referral.getLdapUrls().size());
    Collection<String> ldapUrls = referral.getLdapUrls();
    String[] expected = new String[] { "ldap:///", "" };
    int i = 0;
    for (String ldapUrl : ldapUrls) {
        assertEquals(expected[i], ldapUrl);
        i++;
    }
    try {
        ByteBuffer bb = encoder.encodeMessage(addResponse);
        // Check the length
        assertEquals(0x1C, bb.limit());
        String encodedPdu = Strings.dumpBytes(bb.array());
        assertEquals(encodedPdu, decodedPdu);
    } catch (EncoderException ee) {
        ee.printStackTrace();
        fail(ee.getMessage());
    }
}
Also used : LdapMessageContainer(org.apache.directory.api.ldap.codec.api.LdapMessageContainer) AddResponse(org.apache.directory.api.ldap.model.message.AddResponse) ByteBuffer(java.nio.ByteBuffer) AddResponseDecorator(org.apache.directory.api.ldap.codec.decorators.AddResponseDecorator) DecoderException(org.apache.directory.api.asn1.DecoderException) EncoderException(org.apache.directory.api.asn1.EncoderException) Referral(org.apache.directory.api.ldap.model.message.Referral) Asn1Decoder(org.apache.directory.api.asn1.ber.Asn1Decoder) Test(org.junit.Test) AbstractCodecServiceTest(org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest)

Aggregations

AddResponse (org.apache.directory.api.ldap.model.message.AddResponse)28 Test (org.junit.Test)21 AbstractResponseTest (org.apache.directory.api.dsmlv2.AbstractResponseTest)15 Dsmlv2ResponseParser (org.apache.directory.api.dsmlv2.Dsmlv2ResponseParser)15 LdapURLEncodingException (org.apache.directory.api.ldap.model.exception.LdapURLEncodingException)13 LdapResult (org.apache.directory.api.ldap.model.message.LdapResult)8 DecoderException (org.apache.directory.api.asn1.DecoderException)7 AddResponseDecorator (org.apache.directory.api.ldap.codec.decorators.AddResponseDecorator)7 ByteBuffer (java.nio.ByteBuffer)6 EncoderException (org.apache.directory.api.asn1.EncoderException)6 Asn1Decoder (org.apache.directory.api.asn1.ber.Asn1Decoder)6 LdapMessageContainer (org.apache.directory.api.ldap.codec.api.LdapMessageContainer)6 AbstractCodecServiceTest (org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest)6 Control (org.apache.directory.api.ldap.model.message.Control)6 DsmlControl (org.apache.directory.api.dsmlv2.DsmlControl)4 AddRequest (org.apache.directory.api.ldap.model.message.AddRequest)3 BindResponse (org.apache.directory.api.ldap.model.message.BindResponse)3 BatchResponseDsml (org.apache.directory.api.dsmlv2.response.BatchResponseDsml)2 DefaultEntry (org.apache.directory.api.ldap.model.entry.DefaultEntry)2 LdapException (org.apache.directory.api.ldap.model.exception.LdapException)2