Search in sources :

Example 11 with GracefulDisconnectDecoder

use of org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulDisconnect.GracefulDisconnectDecoder in project directory-ldap-api by apache.

the class GracefulDisconnectResponseTest method testDecodeGracefulDisconnectSuccess.

/**
 * Test the decoding of a GracefulDisconnect
 */
@Test
public void testDecodeGracefulDisconnectSuccess() {
    Asn1Decoder decoder = new GracefulDisconnectDecoder();
    ByteBuffer stream = ByteBuffer.allocate(0x70);
    stream.put(new byte[] { // GracefulDisconnec ::= SEQUENCE {
    0x30, // GracefulDisconnec ::= SEQUENCE {
    0x6E, 0x02, 0x01, // timeOffline INTEGER (0..720) DEFAULT 0,
    0x01, (byte) 0x80, 0x01, // delay INTEGER (0..86400) DEFAULT
    0x01, // replicatedContexts Referral OPTIONAL
    0x30, 0x66, 0x04, 0x1F, 'l', 'd', 'a', 'p', ':', '/', '/', 'd', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '.', 'a', 'p', 'a', 'c', 'h', 'e', '.', 'o', 'r', 'g', ':', '8', '0', '/', 0x04, 0x43, 'l', 'd', 'a', 'p', ':', '/', '/', 'l', 'd', 'a', 'p', '.', 'n', 'e', 't', 's', 'c', 'a', 'p', 'e', '.', 'c', 'o', 'm', '/', 'o', '=', 'B', 'a', 'b', 's', 'c', 'o', ',', 'c', '=', 'U', 'S', '?', '?', '?', '(', 'i', 'n', 't', '=', '%', '5', 'c', '0', '0', '%', '5', 'c', '0', '0', '%', '5', 'c', '0', '0', '%', '5', 'c', '0', '4', ')' // }
    });
    String decodedPdu = Strings.dumpBytes(stream.array());
    stream.flip();
    GracefulDisconnectContainer container = new GracefulDisconnectContainer();
    try {
        decoder.decode(stream, container);
    } catch (DecoderException de) {
        de.printStackTrace();
        fail(de.getMessage());
    }
    GracefulDisconnectResponseDecorator gracefulDisconnect = container.getGracefulDisconnectResponse();
    assertEquals(1, gracefulDisconnect.getTimeOffline());
    assertEquals(1, gracefulDisconnect.getDelay());
    assertEquals(2, gracefulDisconnect.getReplicatedContexts().getLdapUrls().size());
    Iterator<String> ldapUrls = gracefulDisconnect.getReplicatedContexts().getLdapUrls().iterator();
    assertEquals("ldap://directory.apache.org:80/", ldapUrls.next());
    assertEquals("ldap://ldap.netscape.com/o=Babsco,c=US???(int=%5c00%5c00%5c00%5c04)", ldapUrls.next());
    // Check the length
    assertEquals(0x70, gracefulDisconnect.computeLengthInternal());
    // Check the encoding
    try {
        ByteBuffer bb = gracefulDisconnect.encodeInternal();
        String encodedPdu = Strings.dumpBytes(bb.array());
        assertEquals(encodedPdu, decodedPdu);
    } catch (EncoderException ee) {
        ee.printStackTrace();
        fail(ee.getMessage());
    }
}
Also used : GracefulDisconnectContainer(org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulDisconnect.GracefulDisconnectContainer) DecoderException(org.apache.directory.api.asn1.DecoderException) EncoderException(org.apache.directory.api.asn1.EncoderException) Asn1Decoder(org.apache.directory.api.asn1.ber.Asn1Decoder) GracefulDisconnectDecoder(org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulDisconnect.GracefulDisconnectDecoder) GracefulDisconnectResponseDecorator(org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulDisconnect.GracefulDisconnectResponseDecorator) ByteBuffer(java.nio.ByteBuffer) Test(org.junit.Test)

Example 12 with GracefulDisconnectDecoder

use of org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulDisconnect.GracefulDisconnectDecoder in project directory-ldap-api by apache.

the class GracefulDisconnectResponseTest method testDecodeGracefulDisconnectTimeOffline.

/**
 * Test the decoding of a GracefulDisconnect with a timeOffline only
 */
@Test
public void testDecodeGracefulDisconnectTimeOffline() {
    Asn1Decoder decoder = new GracefulDisconnectDecoder();
    ByteBuffer bb = ByteBuffer.allocate(0x05);
    bb.put(new byte[] { // GracefulDisconnect ::= SEQUENCE {
    0x30, // GracefulDisconnect ::= SEQUENCE {
    0x03, 0x02, 0x01, // timeOffline INTEGER (0..720) DEFAULT 0,
    0x01 });
    String decodedPdu = Strings.dumpBytes(bb.array());
    bb.flip();
    GracefulDisconnectContainer container = new GracefulDisconnectContainer();
    try {
        decoder.decode(bb, container);
    } catch (DecoderException de) {
        de.printStackTrace();
        fail(de.getMessage());
    }
    GracefulDisconnectResponseDecorator gracefulDisconnect = container.getGracefulDisconnectResponse();
    assertEquals(1, gracefulDisconnect.getTimeOffline());
    assertEquals(0, gracefulDisconnect.getDelay());
    assertEquals(0, gracefulDisconnect.getReplicatedContexts().getLdapUrls().size());
    // Check the length
    assertEquals(0x05, gracefulDisconnect.computeLengthInternal());
    // Check the encoding
    try {
        ByteBuffer bb1 = gracefulDisconnect.encodeInternal();
        String encodedPdu = Strings.dumpBytes(bb1.array());
        assertEquals(encodedPdu, decodedPdu);
    } catch (EncoderException ee) {
        ee.printStackTrace();
        fail(ee.getMessage());
    }
}
Also used : GracefulDisconnectContainer(org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulDisconnect.GracefulDisconnectContainer) DecoderException(org.apache.directory.api.asn1.DecoderException) EncoderException(org.apache.directory.api.asn1.EncoderException) Asn1Decoder(org.apache.directory.api.asn1.ber.Asn1Decoder) GracefulDisconnectDecoder(org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulDisconnect.GracefulDisconnectDecoder) GracefulDisconnectResponseDecorator(org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulDisconnect.GracefulDisconnectResponseDecorator) ByteBuffer(java.nio.ByteBuffer) Test(org.junit.Test)

Aggregations

ByteBuffer (java.nio.ByteBuffer)12 DecoderException (org.apache.directory.api.asn1.DecoderException)12 Asn1Decoder (org.apache.directory.api.asn1.ber.Asn1Decoder)12 GracefulDisconnectContainer (org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulDisconnect.GracefulDisconnectContainer)12 GracefulDisconnectDecoder (org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulDisconnect.GracefulDisconnectDecoder)12 Test (org.junit.Test)12 EncoderException (org.apache.directory.api.asn1.EncoderException)6 GracefulDisconnectResponseDecorator (org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulDisconnect.GracefulDisconnectResponseDecorator)6