use of org.apache.directory.api.ldap.model.filter.AndNode in project directory-ldap-api by apache.
the class SearchRequestTest method testDecodeSearchRequestPresentNoControls.
/**
* Test the decoding of a SearchRequest with no controls. Test the present
* filter : =* The search filter is :
* (&(|(objectclass=*)(ou=*))(!(objectclass>=ttt)))
*/
@Test
public void testDecodeSearchRequestPresentNoControls() {
Asn1Decoder ldapDecoder = new Asn1Decoder();
ByteBuffer stream = ByteBuffer.allocate(0x7B);
stream.put(new byte[] { 0x30, // LDAPMessage ::=SEQUENCE {
0x79, 0x02, 0x01, // messageID MessageID
0x01, 0x63, // CHOICE { ..., searchRequest SearchRequest, ...
0x74, // SearchRequest ::= APPLICATION[3] SEQUENCE {
0x04, // baseObject LDAPDN,
0x1F, '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, // scope
0x01, // wholeSubtree (2) },
0x0A, 0x01, // derefAliases ENUMERATED {
0x03, // sizeLimit INTEGER (0 .. maxInt), (1000)
0x02, 0x02, 0x03, (byte) 0xE8, // timeLimit INTEGER (0 .. maxInt), (1000)
0x02, 0x02, 0x03, (byte) 0xE8, 0x01, 0x01, // typesOnly
(byte) 0xFF, // filter Filter,
(byte) 0xA0, // Filter ::= CHOICE {
0x29, // and [0] SET OF Filter,
(byte) 0xA1, // or [1] SET of Filter,
0x11, (byte) 0x87, // present [7] AttributeDescription,
0x0B, // AttributeDescription ::= LDAPString
'o', 'b', 'j', 'e', 'c', 't', 'c', 'l', 'a', 's', 's', // assertionValue AssertionValue (OCTET STRING) }
(byte) 0x87, 0x02, 'o', // present [7]
'u', // AttributeDescription ::= LDAPString
(byte) 0xA2, // not [2] Filter,
0x14, (byte) 0xA5, // greaterOrEqual [5]
0x12, // attributeDesc AttributeDescription (LDAPString),
0x04, 0x0B, 'o', 'b', 'j', 'e', 'c', 't', 'c', 'l', 'a', 's', 's', // assertionValue AssertionValue (OCTET STRING) }
0x04, 0x03, 't', 't', 't', // attributes AttributeDescriptionList }
0x30, // AttributeDescriptionList ::= SEQUENCE OF
0x15, // AttributeDescription
0x04, 0x05, 'a', 't', 't', 'r', // AttributeDescription
'0', // ::= LDAPString
0x04, 0x05, 'a', 't', 't', 'r', // AttributeDescription
'1', // ::= LDAPString
0x04, 0x05, 'a', 't', 't', 'r', // AttributeDescription ::=
'2' // 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());
}
assertEquals(TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState());
SearchRequest searchRequest = ldapMessageContainer.getMessage();
assertEquals(1, searchRequest.getMessageId());
assertEquals("uid=akarasulu,dc=example,dc=com", searchRequest.getBase().toString());
assertEquals(SearchScope.ONELEVEL, searchRequest.getScope());
assertEquals(AliasDerefMode.DEREF_ALWAYS, searchRequest.getDerefAliases());
assertEquals(1000, searchRequest.getSizeLimit());
assertEquals(1000, searchRequest.getTimeLimit());
assertEquals(true, searchRequest.getTypesOnly());
// (& (...
ExprNode filter = searchRequest.getFilter();
AndNode andNode = (AndNode) filter;
assertNotNull(andNode);
List<ExprNode> andNodes = andNode.getChildren();
// (& (| (...
assertEquals(2, andNodes.size());
OrNode orFilter = (OrNode) andNodes.get(0);
assertNotNull(orFilter);
// (& (| (objectclass=*) (...
List<ExprNode> orNodes = orFilter.getChildren();
assertEquals(2, orNodes.size());
PresenceNode presenceNode = (PresenceNode) orNodes.get(0);
assertNotNull(presenceNode);
assertEquals("objectclass", presenceNode.getAttribute());
// (& (| (objectclass=*) (ou=*) ) (...
presenceNode = (PresenceNode) orNodes.get(1);
assertNotNull(presenceNode);
assertEquals("ou", presenceNode.getAttribute());
// (& (| (objectclass=*) (ou=*) ) (! ...
NotNode notNode = (NotNode) andNodes.get(1);
assertNotNull(notNode);
// (& (| (objectclass=*) (ou=*) ) (! (objectclass>=ttt) ) )
GreaterEqNode<?> greaterOrEqual = (GreaterEqNode<?>) notNode.getFirstChild();
assertNotNull(greaterOrEqual);
assertEquals("objectclass", greaterOrEqual.getAttribute());
assertEquals("ttt", greaterOrEqual.getValue().getValue());
// The attributes
List<String> attributes = searchRequest.getAttributes();
for (String attribute : attributes) {
assertNotNull(attribute);
}
// attributes may have been reordered
try {
ByteBuffer bb = encoder.encodeMessage(searchRequest);
// Check the length
assertEquals(0x7B, bb.limit());
String encodedPdu = Strings.dumpBytes(bb.array());
assertEquals(encodedPdu.substring(0, 0x6C), decodedPdu.substring(0, 0x6C));
} catch (EncoderException ee) {
ee.printStackTrace();
fail(ee.getMessage());
}
}
use of org.apache.directory.api.ldap.model.filter.AndNode in project directory-ldap-api by apache.
the class SearchRequestTest method testDecodeSearchRequestAndEqEq.
/**
* Test the decoding of a SearchRequest
* (&(a=b)(c=d))
*/
@Test
public void testDecodeSearchRequestAndEqEq() {
Asn1Decoder ldapDecoder = new Asn1Decoder();
ByteBuffer stream = ByteBuffer.allocate(0x2F);
stream.put(new byte[] { // LDAPMessage ::=SEQUENCE {
0x30, // LDAPMessage ::=SEQUENCE {
0x2D, 0x02, 0x01, // messageID MessageID
0x01, 0x63, // CHOICE { ...,
0x28, // SearchRequest ::= APPLICATION[3] SEQUENCE {
0x04, // baseObject LDAPDN,
0x03, 'a', '=', 'b', 0x0A, 0x01, // scope ENUMERATED {
0x01, // wholeSubtree (2) },
0x0A, 0x01, // derefAliases ENUMERATED {
0x03, // derefAlways (3) },
0x02, 0x01, // sizeLimit INTEGER (0 .. maxInt), (0)
0x00, 0x02, 0x01, // timeLimit INTEGER (0 .. maxInt), (1000)
0x00, 0x01, 0x01, // typesOnly BOOLEAN, (TRUE)
(byte) 0xFF, // filter Filter,
(byte) 0xA0, // Filter ::= CHOICE {
0x10, (byte) 0xA3, 0x06, // Assertion ::= SEQUENCE {
0x04, 0x01, // attributeDesc AttributeDescription (LDAPString),
'a', 0x04, 0x01, // assertionValue AssertionValue (OCTET STRING) }
'b', (byte) 0xA3, 0x06, // Assertion ::= SEQUENCE {
0x04, 0x01, // attributeDesc AttributeDescription (LDAPString),
'c', 0x04, 0x01, // assertionValue AssertionValue (OCTET STRING) }
'd', // attributes AttributeDescriptionList }
0x30, // AttributeDescriptionList ::= SEQUENCE OF AttributeDescription
0x00 });
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());
}
assertEquals(TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState());
SearchRequest searchRequest = ldapMessageContainer.getMessage();
assertEquals(1, searchRequest.getMessageId());
assertEquals("a=b", searchRequest.getBase().toString());
assertEquals(SearchScope.ONELEVEL, searchRequest.getScope());
assertEquals(AliasDerefMode.DEREF_ALWAYS, searchRequest.getDerefAliases());
assertEquals(0, searchRequest.getSizeLimit());
assertEquals(0, searchRequest.getTimeLimit());
assertEquals(true, searchRequest.getTypesOnly());
// (&(...
ExprNode filter = searchRequest.getFilter();
AndNode andNode = (AndNode) filter;
assertNotNull(andNode);
List<ExprNode> andNodes = andNode.getChildren();
assertEquals(2, andNodes.size());
// (&(a=b)...
EqualityNode<?> equalityNode = (EqualityNode<?>) andNodes.get(0);
assertNotNull(equalityNode);
assertEquals("a", equalityNode.getAttribute());
assertEquals("b", equalityNode.getValue().getValue());
// (&(a=b)(c=d))
equalityNode = (EqualityNode<?>) andNodes.get(1);
assertNotNull(equalityNode);
assertEquals("c", equalityNode.getAttribute());
assertEquals("d", equalityNode.getValue().getValue());
List<String> attributes = searchRequest.getAttributes();
assertEquals(0, attributes.size());
// attributes may have been reordered
try {
ByteBuffer bb = encoder.encodeMessage(searchRequest);
// Check the length
assertEquals(0x2F, bb.limit());
String encodedPdu = Strings.dumpBytes(bb.array());
assertEquals(encodedPdu.substring(0, 0x2F), decodedPdu.substring(0, 0x2F));
} catch (EncoderException ee) {
ee.printStackTrace();
fail(ee.getMessage());
}
}
use of org.apache.directory.api.ldap.model.filter.AndNode in project directory-ldap-api by apache.
the class SearchRequestTest method testDecodeSearchRequestComplexFilterWithControl.
/**
* Test the decoding of a SearchRequest with a complex filter :
* (&(objectClass=person)(|(cn=Tori*)(sn=Jagger)))
*/
@Test
public void testDecodeSearchRequestComplexFilterWithControl() {
Asn1Decoder ldapDecoder = new Asn1Decoder();
ByteBuffer stream = ByteBuffer.allocate(0x77);
stream.put(new byte[] { // LdapMessage
0x30, // LdapMessage
0x75, 0x02, 0x01, // message Id = 6
0x06, 0x63, // SearchRequest
0x53, 0x04, // BaseDN 'ou=system'
0x09, 0x6F, 0x75, 0x3D, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x0A, 0x01, // scope = SUBTREE
0x02, 0x0A, 0x01, // derefAlias = 3
0x03, 0x02, 0x01, // sizeLimit = none
0x00, 0x02, 0x01, // timeLimit = none
0x00, 0x01, 0x01, // types only = false
0x00, (byte) 0xA0, // AND
0x35, (byte) 0xA3, // equals
0x15, 0x04, // 'objectclass'
0x0B, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x04, // 'person'
0x06, 0x70, 0x65, 0x72, 0x73, 0x6F, 0x6E, (byte) 0xA1, // OR
0x1C, (byte) 0xA4, // substrings : 'cn=Tori*'
0x0C, 0x04, // 'cn'
0x02, 0x63, 0x6E, 0x30, // initial = 'Tori'
0x06, (byte) 0x80, 0x04, 0x54, 0x6F, 0x72, 0x69, (byte) 0xA3, // equals
0x0C, 0x04, // 'sn'
0x02, 0x73, 0x6E, 0x04, // 'Jagger'
0x06, 0x4A, 0x61, 0x67, 0x67, 0x65, 0x72, 0x30, // Control
0x00, (byte) 0xA0, 0x1B, 0x30, 0x19, 0x04, 0x17, '2', '.', '1', '6', '.', '8', '4', '0', '.', '1', '.', '1', '1', '3', '7', '3', '0', '.', '3', '.', '4', '.', '2' });
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());
}
assertEquals(TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState());
SearchRequest searchRequest = ldapMessageContainer.getMessage();
assertEquals(6, searchRequest.getMessageId());
assertEquals("ou=system", searchRequest.getBase().toString());
assertEquals(SearchScope.SUBTREE, searchRequest.getScope());
assertEquals(AliasDerefMode.DEREF_ALWAYS, searchRequest.getDerefAliases());
assertEquals(0, searchRequest.getSizeLimit());
assertEquals(0, searchRequest.getTimeLimit());
assertEquals(false, searchRequest.getTypesOnly());
// (&(...
ExprNode filter = searchRequest.getFilter();
AndNode andNode = (AndNode) filter;
assertNotNull(andNode);
List<ExprNode> andNodes = andNode.getChildren();
assertEquals(2, andNodes.size());
// (&(objectClass=person)..
EqualityNode<?> equalityNode = (EqualityNode<?>) andNodes.get(0);
assertNotNull(equalityNode);
assertEquals("objectClass", equalityNode.getAttribute());
assertEquals("person", equalityNode.getValue().getValue());
// (&(a=b)(|
OrNode orNode = (OrNode) andNodes.get(1);
assertNotNull(orNode);
List<ExprNode> orNodes = orNode.getChildren();
assertEquals(2, orNodes.size());
// (&(a=b)(|(cn=Tori*
SubstringNode substringNode = (SubstringNode) orNodes.get(0);
assertNotNull(substringNode);
assertEquals("cn", substringNode.getAttribute());
assertEquals("Tori", substringNode.getInitial());
assertEquals(0, substringNode.getAny().size());
assertEquals(null, substringNode.getFinal());
// (&(a=b)(|(cn=Tori*)(sn=Jagger)))
equalityNode = (EqualityNode<?>) orNodes.get(1);
assertNotNull(equalityNode);
assertEquals("sn", equalityNode.getAttribute());
assertEquals("Jagger", equalityNode.getValue().getValue());
}
use of org.apache.directory.api.ldap.model.filter.AndNode in project directory-ldap-api by apache.
the class SearchRequestTest method testDecodeSearchRequestDIRSERVER_810.
/**
* Test the decoding of a SearchRequest with special length (long form)
* for rootDSE
*/
@Test
public void testDecodeSearchRequestDIRSERVER_810() {
Asn1Decoder ldapDecoder = new Asn1Decoder();
ByteBuffer stream = ByteBuffer.allocate(0x6B);
stream.put(new byte[] { 0x30, (byte) 0x84, 0x00, 0x00, 0x00, 0x65, 0x02, 0x01, 0x03, 0x63, (byte) 0x84, 0x00, 0x00, 0x00, 0x5c, 0x04, 0x12, 0x6f, 0x75, 0x3d, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2c, 0x6f, 0x75, 0x3d, 0x73, 0x79, 0x73, 0x74, 0x65, // 'ou=users,ou=system'
0x6d, 0x0a, 0x01, 0x01, 0x0a, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x1e, 0x01, 0x01, (byte) 0xff, (byte) 0xa0, (byte) 0x84, 0x00, 0x00, 0x00, 0x2d, (byte) 0xa3, (byte) 0x84, 0x00, 0x00, 0x00, 0x0e, 0x04, 0x03, 0x75, 0x69, 0x64, 0x04, 0x07, 0x62, 0x75, 0x73, 0x74, 0x65, 0x72, // 'buster ' (with a space at the end)
0x20, (byte) 0xa3, (byte) 0x84, 0x00, 0x00, 0x00, 0x13, 0x04, 0x0b, 0x73, 0x62, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // sbAttribute
0x65, 0x04, 0x04, 0x42, 0x75, 0x79, // 'Buy ' (with a space at the end)
0x20, 0x30, (byte) 0x84, 0x00, 0x00, 0x00, 0x00 });
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());
}
assertEquals(TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState());
SearchRequest searchRequest = ldapMessageContainer.getMessage();
assertEquals(3, searchRequest.getMessageId());
assertEquals("ou=users,ou=system", searchRequest.getBase().toString());
assertEquals(SearchScope.ONELEVEL, searchRequest.getScope());
assertEquals(AliasDerefMode.NEVER_DEREF_ALIASES, searchRequest.getDerefAliases());
assertEquals(0, searchRequest.getSizeLimit());
assertEquals(30, searchRequest.getTimeLimit());
assertEquals(true, searchRequest.getTypesOnly());
ExprNode filter = searchRequest.getFilter();
AndNode andNode = (AndNode) filter;
assertNotNull(andNode);
List<ExprNode> andNodes = andNode.getChildren();
assertEquals(2, andNodes.size());
// (&(uid=buster)...
EqualityNode<?> equalityNode = (EqualityNode<?>) andNodes.get(0);
assertNotNull(equalityNode);
assertEquals("uid", equalityNode.getAttribute());
assertEquals("buster ", equalityNode.getValue().getValue());
// (&(uid=buster)(sbAttribute=Buy))
equalityNode = (EqualityNode<?>) andNodes.get(1);
assertNotNull(equalityNode);
assertEquals("sbAttribute", equalityNode.getAttribute());
assertEquals("Buy ", equalityNode.getValue().getValue());
List<String> attributes = searchRequest.getAttributes();
assertEquals(0, attributes.size());
}
use of org.apache.directory.api.ldap.model.filter.AndNode in project directory-ldap-api by apache.
the class SearchRequestTest method testDecodeSearchRequestCompareFiltersNoControls.
/**
* Test the decoding of a SearchRequest with no controls. Test the various
* types of filter : >=, <=, ~= The search filter is :
* (&(|(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, // LDAPMessage ::=SEQUENCE {
(byte) 0x8D, 0x02, 0x01, // messageID MessageID
0x01, 0x63, (byte) 0x81, // CHOICE { ...,
(byte) 0x87, // SearchRequest ::= APPLICATION[3] SEQUENCE {
0x04, // baseObject LDAPDN,
0x1F, '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, // scope ENUMERATED {
0x01, // wholeSubtree (2) },
0x0A, 0x01, // derefAliases ENUMERATED {
0x03, // derefAlways (3) },
0x02, 0x02, 0x03, // sizeLimit INTEGER (0 .. maxInt), (1000)
(byte) 0xE8, 0x02, 0x02, 0x03, // timeLimit INTEGER (0 .. maxInt), (1000)
(byte) 0xE8, 0x01, 0x01, // typesOnly BOOLEAN, (TRUE)
(byte) 0xFF, // filter Filter,
(byte) 0xA0, // Filter ::= CHOICE {
0x3C, // and [0] SET OF Filter,
(byte) 0xA1, // or [1] SET of Filter,
0x24, (byte) 0xA8, // approxMatch [8]
0x12, // Assertion ::= SEQUENCE {
0x04, // attributeDesc AttributeDescription (LDAPString),
0x0B, 'o', 'b', 'j', 'e', 'c', 't', 'c', 'l', 'a', 's', 's', 0x04, // attributeDesc AttributeDescription (LDAPString),
0x03, 't', 'o', 'p', (byte) 0xA6, // lessOrEqual [3] Assertion,
0x0E, 0x04, // Assertion ::= SEQUENCE {
0x02, 'o', // attributeDesc AttributeDescription (LDAPString),
'u', 0x04, // assertionValue AssertionValue (OCTET STRING) }
0x08, 'c', 'o', 'n', 't', 'a', 'c', 't', 's', (byte) 0xA2, // not [2] Filter,
0x14, (byte) 0xA5, // greaterOrEqual [5] Assertion,
0x12, // Assertion ::= SEQUENCE {
0x04, // attributeDesc AttributeDescription (LDAPString),
0x0B, 'o', 'b', 'j', 'e', 'c', 't', 'c', 'l', 'a', 's', 's', 0x04, 0x03, 't', 't', // assertionValue AssertionValue (OCTET STRING) }
't', // attributes AttributeDescriptionList }
0x30, // AttributeDescriptionList ::= SEQUENCE OF
0x15, // AttributeDescription
0x04, 0x05, 'a', 't', 't', 'r', // AttributeDescription ::= LDAPString
'0', 0x04, 0x05, 'a', 't', 't', 'r', // AttributeDescription ::= LDAPString
'1', 0x04, 0x05, 'a', 't', 't', 'r', // AttributeDescription ::= LDAPString
'2' });
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());
}
assertEquals(TLVStateEnum.PDU_DECODED, ldapMessageContainer.getState());
SearchRequest searchRequest = ldapMessageContainer.getMessage();
assertEquals(1, searchRequest.getMessageId());
assertEquals("uid=akarasulu,dc=example,dc=com", searchRequest.getBase().toString());
assertEquals(SearchScope.ONELEVEL, searchRequest.getScope());
assertEquals(AliasDerefMode.DEREF_ALWAYS, searchRequest.getDerefAliases());
assertEquals(1000, searchRequest.getSizeLimit());
assertEquals(1000, searchRequest.getTimeLimit());
assertEquals(true, searchRequest.getTypesOnly());
// (& (...
ExprNode filter = searchRequest.getFilter();
AndNode andNode = (AndNode) filter;
assertNotNull(andNode);
List<ExprNode> andNodes = andNode.getChildren();
// (& (| (...
assertEquals(2, andNodes.size());
OrNode orFilter = (OrNode) andNodes.get(0);
assertNotNull(orFilter);
// (& (| (objectclass~=top) (...
List<ExprNode> orNodes = orFilter.getChildren();
assertEquals(2, orNodes.size());
ApproximateNode<?> approxNode = (ApproximateNode<?>) orNodes.get(0);
assertNotNull(approxNode);
assertEquals("objectclass", approxNode.getAttribute());
assertEquals("top", approxNode.getValue().getValue());
// (& (| (objectclass~=top) (ou<=contacts) ) (...
LessEqNode<?> lessOrEqualNode = (LessEqNode<?>) orNodes.get(1);
assertNotNull(lessOrEqualNode);
assertEquals("ou", lessOrEqualNode.getAttribute());
assertEquals("contacts", lessOrEqualNode.getValue().getValue());
// (& (| (objectclass~=top) (ou<=contacts) ) (! ...
NotNode notNode = (NotNode) andNodes.get(1);
assertNotNull(notNode);
// (& (| (objectclass~=top) (ou<=contacts) ) (! (objectclass>=ttt) ) )
GreaterEqNode<?> greaterOrEqual = (GreaterEqNode<?>) notNode.getFirstChild();
assertNotNull(greaterOrEqual);
assertEquals("objectclass", greaterOrEqual.getAttribute());
assertEquals("ttt", greaterOrEqual.getValue().getValue());
// The attributes
List<String> attributes = searchRequest.getAttributes();
for (String attribute : attributes) {
assertNotNull(attribute);
}
// attributes may have been reordered
try {
ByteBuffer bb = encoder.encodeMessage(searchRequest);
// Check the length
assertEquals(0x0090, bb.limit());
String encodedPdu = Strings.dumpBytes(bb.array());
assertEquals(encodedPdu.substring(0, 0x81), decodedPdu.substring(0, 0x81));
} catch (EncoderException ee) {
ee.printStackTrace();
fail(ee.getMessage());
}
}
Aggregations