Search in sources :

Example 26 with AddRequest

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

the class AddRequestTest method testDecodeAddRequestEmptyAttributeValue.

/**
 * Test the decoding of a AddRequest with a empty attributeList
 */
@Test
public void testDecodeAddRequestEmptyAttributeValue() throws NamingException {
    Asn1Decoder ldapDecoder = new Asn1Decoder();
    ByteBuffer stream = ByteBuffer.allocate(0x34);
    stream.put(new byte[] { 0x30, // LDAPMessage ::= SEQUENCE {
    0x32, 0x02, 0x01, // messageID MessageID
    0x01, 0x68, // CHOICE { ..., addRequest AddRequest, ...
    0x2D, // entry LDAPDN,
    0x04, 0x20, 'c', 'n', '=', 't', 'e', 's', 't', 'M', 'o', 'd', 'i', 'f', 'y', ',', 'o', 'u', '=', 'u', 's', 'e', 'r', 's', ',', 'o', 'u', '=', 's', 'y', 's', 't', 'e', 'm', // attributes AttributeList }
    0x30, // AttributeList ::= SEQUENCE OF SEQUENCE {
    0x09, 0x30, // attribute 1
    0x07, 0x04, 0x01, // type AttributeDescription,
    'l', 0x31, 0x02, 0x04, 0x00 });
    String decodedPdu = Strings.dumpBytes(stream.array());
    stream.flip();
    // Allocate a LdapMessage Container
    LdapMessageContainer<AddRequestDecorator> container = new LdapMessageContainer<AddRequestDecorator>(codec);
    // Decode a AddRequest message
    try {
        ldapDecoder.decode(stream, container);
    } catch (DecoderException de) {
        de.printStackTrace();
        fail(de.getMessage());
    }
    AddRequest addRequest = container.getMessage();
    // Check the decoded message
    assertEquals(1, addRequest.getMessageId());
    assertEquals("cn=testModify,ou=users,ou=system", addRequest.getEntryDn().toString());
    Entry entry = addRequest.getEntry();
    assertEquals(1, entry.size());
    Attribute attribute = entry.get("l");
    assertEquals("l", Strings.toLowerCaseAscii(attribute.getId()));
    for (Value value : attribute) {
        assertEquals("", value.getValue());
    }
    // Check the encoding
    try {
        ByteBuffer bb = encoder.encodeMessage(addRequest);
        // Check the length
        assertEquals(0x34, bb.limit());
        String encodedPdu = Strings.dumpBytes(bb.array());
        assertEquals(encodedPdu, decodedPdu);
    } catch (EncoderException ee) {
        ee.printStackTrace();
        fail(ee.getMessage());
    }
}
Also used : AddRequest(org.apache.directory.api.ldap.model.message.AddRequest) LdapMessageContainer(org.apache.directory.api.ldap.codec.api.LdapMessageContainer) DecoderException(org.apache.directory.api.asn1.DecoderException) EncoderException(org.apache.directory.api.asn1.EncoderException) Entry(org.apache.directory.api.ldap.model.entry.Entry) Attribute(org.apache.directory.api.ldap.model.entry.Attribute) Asn1Decoder(org.apache.directory.api.asn1.ber.Asn1Decoder) Value(org.apache.directory.api.ldap.model.entry.Value) ByteBuffer(java.nio.ByteBuffer) AddRequestDecorator(org.apache.directory.api.ldap.codec.decorators.AddRequestDecorator) Test(org.junit.Test) AbstractCodecServiceTest(org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest)

Aggregations

AddRequest (org.apache.directory.api.ldap.model.message.AddRequest)26 Test (org.junit.Test)19 AbstractTest (org.apache.directory.api.dsmlv2.AbstractTest)16 Dsmlv2Parser (org.apache.directory.api.dsmlv2.Dsmlv2Parser)16 Entry (org.apache.directory.api.ldap.model.entry.Entry)12 Value (org.apache.directory.api.ldap.model.entry.Value)11 Attribute (org.apache.directory.api.ldap.model.entry.Attribute)10 Control (org.apache.directory.api.ldap.model.message.Control)7 DsmlControl (org.apache.directory.api.dsmlv2.DsmlControl)5 AddRequestDecorator (org.apache.directory.api.ldap.codec.decorators.AddRequestDecorator)5 DecoderException (org.apache.directory.api.asn1.DecoderException)4 AddRequestImpl (org.apache.directory.api.ldap.model.message.AddRequestImpl)4 ByteBuffer (java.nio.ByteBuffer)3 EncoderException (org.apache.directory.api.asn1.EncoderException)3 Asn1Decoder (org.apache.directory.api.asn1.ber.Asn1Decoder)3 BatchRequestDsml (org.apache.directory.api.dsmlv2.request.BatchRequestDsml)3 LdapMessageContainer (org.apache.directory.api.ldap.codec.api.LdapMessageContainer)3 AbstractCodecServiceTest (org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest)3 AbandonRequest (org.apache.directory.api.ldap.model.message.AbandonRequest)3 BindRequest (org.apache.directory.api.ldap.model.message.BindRequest)3