| * (&(|(objectclass~=top)(ou<=contacts))(!(objectclass>=ttt)))
*/
@Test
public void testDecodeSearchRequestCompareFiltersNoControls()
{
Asn1Decoder ldapDecoder = new Asn1Decoder();
ByteBuffer stream = ByteBuffer.allocate( 0x90 );
stream.put( new byte[]
{ 0x30, ( byte ) 0x81,
( byte ) 0x8D, // LDAPMessage ::=SEQUENCE {
0x02,
0x01,
0x01, // messageID MessageID
0x63,
( byte ) 0x81,
( byte ) 0x87, // CHOICE { ...,
// searchRequest SearchRequest, ...
// SearchRequest ::= APPLICATION[3] SEQUENCE {
0x04,
0x1F, // baseObject LDAPDN,
'u',
'i',
'd',
'=',
'a',
'k',
'a',
'r',
'a',
's',
'u',
'l',
'u',
',',
'd',
'c',
'=',
'e',
'x',
'a',
'm',
'p',
'l',
'e',
',',
'd',
'c',
'=',
'c',
'o',
'm',
0x0A,
0x01,
0x01, // scope ENUMERATED {
// baseObject (0),
// singleLevel (1),
// wholeSubtree (2) },
0x0A,
0x01,
0x03, // derefAliases ENUMERATED {
// neverDerefAliases (0),
// derefInSearching (1),
// derefFindingBaseObj (2),
// derefAlways (3) },
0x02,
0x02,
0x03,
( byte ) 0xE8, // sizeLimit INTEGER (0 .. maxInt), (1000)
0x02,
0x02,
0x03,
( byte ) 0xE8, // timeLimit INTEGER (0 .. maxInt), (1000)
0x01,
0x01,
( byte ) 0xFF, // typesOnly BOOLEAN, (TRUE)
// filter Filter,
( byte ) 0xA0,
0x3C, // Filter ::= CHOICE {
// and [0] SET OF Filter,
( byte ) 0xA1,
0x24, // or [1] SET of Filter,
( byte ) 0xA8,
0x12, // approxMatch [8]
// Assertion,
// Assertion ::= SEQUENCE {
0x04,
0x0B, // attributeDesc AttributeDescription (LDAPString),
'o',
'b',
'j',
'e',
'c',
't',
'c',
'l',
'a',
's',
's',
0x04,
0x03, // attributeDesc AttributeDescription (LDAPString),
't',
'o',
'p',
( byte ) 0xA6,
0x0E, // lessOrEqual [3] Assertion,
0x04,
0x02, // Assertion ::= SEQUENCE {
'o',
'u', // attributeDesc AttributeDescription (LDAPString),
0x04,
0x08, // assertionValue AssertionValue (OCTET STRING) }
'c',
'o',
'n',
't',
'a',
'c',
't',
's',
( byte ) 0xA2,
0x14, // not [2] Filter,
( byte ) 0xA5,
0x12, // greaterOrEqual [5] Assertion,
// Assertion ::= SEQUENCE {
0x04,
0x0B, // attributeDesc AttributeDescription (LDAPString),
'o',
'b',
'j',
'e',
'c',
't',
'c',
'l',
'a',
's',
's',
0x04,
0x03,
't',
't',
't', // assertionValue AssertionValue (OCTET STRING) }
// attributes AttributeDescriptionList }
0x30,
0x15, // AttributeDescriptionList ::= SEQUENCE OF
// AttributeDescription
0x04,
0x05,
'a',
't',
't',
'r',
'0', // AttributeDescription ::= LDAPString
0x04,
0x05,
'a',
't',
't',
'r',
'1', // AttributeDescription ::= LDAPString
0x04,
0x05,
'a',
't',
't',
'r',
'2' // AttributeDescription ::= LDAPString
} );
String decodedPdu = Strings.dumpBytes( stream.array() );
stream.flip();
// Allocate a BindRequest Container
LdapMessageContainer<SearchRequestDecorator> ldapMessageContainer =
new LdapMessageContainer<SearchRequestDecorator>( codec );
try
{
ldapDecoder.decode( stream, ldapMessageContainer );
}
catch ( DecoderException de )
{
de.printStackTrace();
fail( de.getMessage() );
|