Search in sources :

Example 21 with Referral

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

the class ReferralImplTest method testEqualsDifferentImpls.

@Test
public void testEqualsDifferentImpls() {
    Referral refs0 = new Referral() {

        public Collection<String> getLdapUrls() {
            return Collections.emptyList();
        }

        public void addLdapUrl(String url) {
        }

        public void removeLdapUrl(String url) {
        }

        public void addLdapUrlBytes(byte[] urlBytes) {
        }

        public Collection<byte[]> getLdapUrlsBytes() {
            return null;
        }

        public int getReferralLength() {
            return 0;
        }

        public void setReferralLength(int referralLength) {
        }
    };
    ReferralImpl refs1 = new ReferralImpl();
    assertFalse("Object.equals() in effect because we did not redefine " + " equals for the new impl above", refs0.equals(refs1));
    assertTrue("Empty Referrals should be equal even if they are different" + " implementation classes", refs1.equals(refs0));
}
Also used : Referral(org.apache.directory.api.ldap.model.message.Referral) ReferralImpl(org.apache.directory.api.ldap.model.message.ReferralImpl) Test(org.junit.Test)

Example 22 with Referral

use of org.apache.directory.api.ldap.model.message.Referral 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 23 with Referral

use of org.apache.directory.api.ldap.model.message.Referral 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

Referral (org.apache.directory.api.ldap.model.message.Referral)23 Test (org.junit.Test)16 ReferralImpl (org.apache.directory.api.ldap.model.message.ReferralImpl)11 Dn (org.apache.directory.api.ldap.model.name.Dn)10 DecoderException (org.apache.directory.api.asn1.DecoderException)9 LdapResultImpl (org.apache.directory.api.ldap.model.message.LdapResultImpl)9 EncoderException (org.apache.directory.api.asn1.EncoderException)8 ByteBuffer (java.nio.ByteBuffer)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 SearchResultReference (org.apache.directory.api.ldap.model.message.SearchResultReference)5 TLV (org.apache.directory.api.asn1.ber.tlv.TLV)3 AddResponseDecorator (org.apache.directory.api.ldap.codec.decorators.AddResponseDecorator)3 SearchResultReferenceDecorator (org.apache.directory.api.ldap.codec.decorators.SearchResultReferenceDecorator)3 AddResponse (org.apache.directory.api.ldap.model.message.AddResponse)3 LdapResult (org.apache.directory.api.ldap.model.message.LdapResult)3 BufferOverflowException (java.nio.BufferOverflowException)2 HashSet (java.util.HashSet)2 LdapURLEncodingException (org.apache.directory.api.ldap.model.exception.LdapURLEncodingException)2