blob: d7966f76829ae7d344dd94f224a3956491c56055 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
package org.apache.directory.api.dsmlv2.searchRequest;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
import java.util.List;
import java.util.Map;
import org.apache.directory.api.dsmlv2.AbstractTest;
import org.apache.directory.api.dsmlv2.DsmlControl;
import org.apache.directory.api.dsmlv2.Dsmlv2Parser;
import org.apache.directory.api.dsmlv2.request.SearchRequestDsml;
import org.apache.directory.api.ldap.model.exception.LdapException;
import org.apache.directory.api.ldap.model.filter.AndNode;
import org.apache.directory.api.ldap.model.filter.ApproximateNode;
import org.apache.directory.api.ldap.model.filter.EqualityNode;
import org.apache.directory.api.ldap.model.filter.ExprNode;
import org.apache.directory.api.ldap.model.filter.ExtensibleNode;
import org.apache.directory.api.ldap.model.filter.GreaterEqNode;
import org.apache.directory.api.ldap.model.filter.LessEqNode;
import org.apache.directory.api.ldap.model.filter.NotNode;
import org.apache.directory.api.ldap.model.filter.OrNode;
import org.apache.directory.api.ldap.model.filter.PresenceNode;
import org.apache.directory.api.ldap.model.filter.SubstringNode;
import org.apache.directory.api.ldap.model.message.AliasDerefMode;
import org.apache.directory.api.ldap.model.message.Control;
import org.apache.directory.api.ldap.model.message.SearchRequest;
import org.apache.directory.api.ldap.model.message.SearchScope;
import org.apache.directory.api.util.Strings;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.parallel.Execution;
import org.junit.jupiter.api.parallel.ExecutionMode;
/**
* Tests for the Del Request parsing
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
@Execution( ExecutionMode.CONCURRENT)
public class SearchRequestTest extends AbstractTest
{
/**
* Test parsing of a request without the dn attribute
*/
@Test
public void testRequestWithoutDn()
{
testParsingFail( SearchRequestTest.class, "request_without_dn_attribute.xml" );
}
/**
* Test parsing of a request with the dn attribute
*/
@Test
public void testRequestWithDn()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "request_with_dn_attribute.xml" ).openStream(),
"UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
assertEquals( "ou=marketing,dc=microsoft,dc=com", searchRequest.getBase().getName() );
}
/**
* Test parsing of a request with the (optional) requestID attribute
*/
@Test
public void testRequestWithRequestId()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput(
SearchRequestTest.class.getResource( "request_with_requestID_attribute.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
assertEquals( 456, searchRequest.getMessageId() );
}
/**
* Test parsing of a request with the (optional) requestID attribute below 0
*/
@Test
public void testRequestWithRequestIdBelow0()
{
testParsingFail( SearchRequestTest.class, "request_with_requestID_below_0.xml" );
}
/**
* Test parsing of a request with a (optional) Control element
*/
@Test
public void testRequestWith1Control()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "request_with_1_control.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
Map<String, Control> controls = searchRequest.getControls();
assertEquals( 1, searchRequest.getControls().size() );
Control control = controls.get( "1.2.840.113556.1.4.643" );
assertNotNull( control );
assertTrue( control.isCritical() );
assertEquals( "1.2.840.113556.1.4.643", control.getOid() );
assertEquals( "Some text", Strings.utf8ToString( ( ( DsmlControl<?> ) control ).getValue() ) );
}
/**
* Test parsing of a request with a (optional) Control element with Base64 value
*/
@Test
public void testRequestWith1ControlBase64Value()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "request_with_1_control_base64_value.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
Map<String, Control> controls = searchRequest.getControls();
assertEquals( 1, searchRequest.getControls().size() );
Control control = controls.get( "1.2.840.113556.1.4.643" );
assertNotNull( control );
assertTrue( control.isCritical() );
assertEquals( "1.2.840.113556.1.4.643", control.getOid() );
assertEquals( "DSMLv2.0 rocks!!", Strings.utf8ToString( ( ( DsmlControl<?> ) control ).getValue() ) );
}
/**
* Test parsing of a request with a (optional) Control element with empty value
*/
@Test
public void testRequestWith1ControlEmptyValue()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "request_with_1_control_empty_value.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
Map<String, Control> controls = searchRequest.getControls();
assertEquals( 1, searchRequest.getControls().size() );
Control control = controls.get( "1.2.840.113556.1.4.643" );
assertNotNull( control );
assertTrue( control.isCritical() );
assertEquals( "1.2.840.113556.1.4.643", control.getOid() );
assertFalse( ( ( DsmlControl<?> ) control ).hasValue() );
}
/**
* Test parsing of a request with 2 (optional) Control elements
*/
@Test
public void testRequestWith2Controls()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser
.setInput( SearchRequestTest.class.getResource( "request_with_2_controls.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
Map<String, Control> controls = searchRequest.getControls();
assertEquals( 2, searchRequest.getControls().size() );
Control control = controls.get( "1.2.840.113556.1.4.789" );
assertNotNull( control );
assertFalse( control.isCritical() );
assertEquals( "1.2.840.113556.1.4.789", control.getOid() );
assertEquals( "Some other text", Strings.utf8ToString( ( ( DsmlControl<?> ) control ).getValue() ) );
}
/**
* Test parsing of a request with 3 (optional) Control elements without value
*/
@Test
public void testRequestWith3ControlsWithoutValue()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "request_with_3_controls_without_value.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
Map<String, Control> controls = searchRequest.getControls();
assertEquals( 3, searchRequest.getControls().size() );
Control control = controls.get( "1.2.840.113556.1.4.456" );
assertNotNull( control );
assertTrue( control.isCritical() );
assertEquals( "1.2.840.113556.1.4.456", control.getOid() );
assertFalse( ( ( DsmlControl<?> ) control ).hasValue() );
}
/**
* Test parsing of a request without the Filter element
*/
@Test
public void testRequestWithoutFilter()
{
testParsingFail( SearchRequestTest.class, "request_without_filter.xml" );
}
/**
* Test parsing of a request without scope attribute
*/
@Test
public void testRequestWithoutScopeAttribute()
{
testParsingFail( SearchRequestTest.class, "request_without_scope_attribute.xml" );
}
/**
* Test parsing of a request with scope attribute to BaseObject value
* @throws NamingException
*/
@Test
public void testRequestWithScopeBaseObject()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "request_with_scope_baseObject.xml" ).openStream(),
"UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
assertEquals( SearchScope.OBJECT, searchRequest.getScope() );
}
/**
* Test parsing of a request with scope attribute to SingleLevel value
* @throws NamingException
*/
@Test
public void testRequestWithScopeSingleLevel()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "request_with_scope_singleLevel.xml" ).openStream(),
"UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
assertEquals( SearchScope.ONELEVEL, searchRequest.getScope() );
}
/**
* Test parsing of a request with scope attribute to WholeSubtree value
* @throws NamingException
*/
@Test
public void testRequestWithScopeWholeSubtree()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "request_with_scope_wholeSubtree.xml" ).openStream(),
"UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
assertEquals( SearchScope.SUBTREE, searchRequest.getScope() );
}
/**
* Test parsing of a request with scope attribute to Error value
*/
@Test
public void testRequestWithScopeError()
{
testParsingFail( SearchRequestTest.class, "request_with_scope_error.xml" );
}
/**
* Test parsing of a request without derefAliases attribute
*/
@Test
public void testRequestWithoutDerefAliasesAttribute()
{
testParsingFail( SearchRequestTest.class, "request_without_derefAliases_attribute.xml" );
}
/**
* Test parsing of a request with derefAliases attribute to derefAlways value
* @throws NamingException
*/
@Test
public void testRequestWithDerefAliasesDerefAlways()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "request_with_derefAliases_derefAlways.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
assertEquals( AliasDerefMode.DEREF_ALWAYS, searchRequest.getDerefAliases() );
}
/**
* Test parsing of a request with derefAliases attribute to derefFindingBaseObj value
* @throws NamingException
*/
@Test
public void testRequestWithDerefAliasesDerefFindingBaseObj()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "request_with_derefAliases_derefFindingBaseObj.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
assertEquals( AliasDerefMode.DEREF_FINDING_BASE_OBJ, searchRequest.getDerefAliases() );
}
/**
* Test parsing of a request with derefAliases attribute to derefinSearching value
* @throws NamingException
*/
@Test
public void testRequestWithDerefAliasesDerefinSearching()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "request_with_derefAliases_derefInSearching.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
assertEquals( AliasDerefMode.DEREF_IN_SEARCHING, searchRequest.getDerefAliases() );
}
/**
* Test parsing of a request with derefAliases attribute to neverDerefAliases value
* @throws NamingException
*/
@Test
public void testRequestWithDerefAliasesNeverDerefAliases()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "request_with_derefAliases_neverDerefAliases.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
assertEquals( AliasDerefMode.NEVER_DEREF_ALIASES, searchRequest.getDerefAliases() );
}
/**
* Test parsing of a request with derefAliases attribute to Error value
* @throws NamingException
*/
@Test
public void testRequestWithDerefAliasesError()
{
testParsingFail( SearchRequestTest.class, "request_with_derefAliases_error.xml" );
}
/**
* Test parsing of a request with the sizeLimit (optional) attribute
* @throws NamingException
*/
@Test
public void testRequestWithSizeLimitAttribute()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput(
SearchRequestTest.class.getResource( "request_with_sizeLimit_attribute.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
assertEquals( 1000, searchRequest.getSizeLimit() );
}
/**
* Test parsing of a request with sizeLimit attribute to Error value
* @throws NamingException
*/
@Test
public void testRequestWithSizeLimitError()
{
testParsingFail( SearchRequestTest.class, "request_with_sizeLimit_error.xml" );
}
/**
* Test parsing of a request with the timeLimit (optional) attribute
* @throws NamingException
*/
@Test
public void testRequestWithTimeLimitAttribute()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput(
SearchRequestTest.class.getResource( "request_with_timeLimit_attribute.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
assertEquals( 60, searchRequest.getTimeLimit() );
}
/**
* Test parsing of a request with timeLimit attribute to Error value
* @throws NamingException
*/
@Test
public void testRequestWithTimeLimitError()
{
testParsingFail( SearchRequestTest.class, "request_with_timeLimit_error.xml" );
}
/**
* Test parsing of a request with typesOnly to true
*/
@Test
public void testRequestWithTypesOnlyTrue()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "request_with_typesOnly_true.xml" ).openStream(),
"UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
assertTrue( searchRequest.getTypesOnly() );
}
/**
* Test parsing of a request with typesOnly to 1
*/
@Test
public void testRequestWithTypesOnly1()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "request_with_typesOnly_1.xml" ).openStream(),
"UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
assertTrue( searchRequest.getTypesOnly() );
}
/**
* Test parsing of a request with typesOnly to false
*/
@Test
public void testRequestWithTypesOnlyFalse()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "request_with_typesOnly_false.xml" ).openStream(),
"UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
assertFalse( searchRequest.getTypesOnly() );
}
/**
* Test parsing of a request with typesOnly to 0
*/
@Test
public void testRequestWithTypesOnlyRdn0()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "request_with_typesOnly_0.xml" ).openStream(),
"UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
assertFalse( searchRequest.getTypesOnly() );
}
/**
* Test parsing of a request with typesOnly to an error value
*/
@Test
public void testRequestWithTypesOnlyError()
{
testParsingFail( SearchRequestTest.class, "request_with_typesOnly_error.xml" );
}
/**
* Test parsing of a request with 2 Filter elements
*/
@Test
public void testRequestWith2Filters()
{
testParsingFail( SearchRequestTest.class, "request_with_2_filters.xml" );
}
/**
* Test parsing of a request with Attibutes Element but not any Attribute element
*/
@Test
public void testRequestWithAttributesButNoAttribute()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "request_with_attributes_but_no_attribute.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
assertTrue( true );
}
/**
* Test parsing of a request with 2 Attributes elements
*/
@Test
public void testRequestWith2AttributesElements()
{
testParsingFail( SearchRequestTest.class, "request_with_2_attributes_elements.xml" );
}
/**
* Test parsing of a request with an Attributes element with 1 Attribute element
* @throws NamingException
*/
@Test
public void testRequestWithAttributes1Attribute() throws LdapException
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "request_with_attributes_1_attribute.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
List<String> attributes = searchRequest.getAttributes();
assertEquals( 1, attributes.size() );
String attribute = attributes.get( 0 );
assertEquals( "sn", attribute );
}
/**
* Test parsing of a request with an Attributes element with 2 Attribute elements
* @throws NamingException
*/
@Test
public void testRequestWithAttributes2Attribute() throws LdapException
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "request_with_attributes_2_attribute.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
List<String> attributes = searchRequest.getAttributes();
assertEquals( 2, attributes.size() );
String attribute1 = attributes.get( 0 );
assertEquals( "sn", attribute1 );
String attribute2 = attributes.get( 1 );
assertEquals( "givenName", attribute2 );
}
/**
* Test parsing of a request with 1 Attribute without name attribute
*/
@Test
public void testRequestWithAttributeWithoutNameAttribute()
{
testParsingFail( SearchRequestTest.class, "request_with_attribute_without_name_attribute.xml" );
}
/**
* Test parsing of a request with empty Filter element
*/
@Test
public void testRequestWithEmptyFilter()
{
testParsingFail( SearchRequestTest.class, "request_with_empty_filter.xml" );
}
/**
* Test parsing of a request with an And Filter
*/
@Test
public void testRequestWithAndFilter()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_and.xml" ).openStream(),
"UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof AndNode );
}
/**
* Test parsing of a request with an Or Filter
*/
@Test
public void testRequestWithOrFilter()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser
.setInput( SearchRequestTest.class.getResource( "filters/request_with_or.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof OrNode );
}
/**
* Test parsing of a request with an Or Filter
*/
@Test
public void testRequestWithNotFilter()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_not.xml" ).openStream(),
"UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof NotNode );
}
/**
* Test parsing of a request with empty Filter element
*/
@Test
public void testRequestWithNotFilterWith2Children()
{
testParsingFail( SearchRequestTest.class, "filters/request_with_not_with_2_children.xml" );
}
/**
* Test parsing of a request with an approxMatch Filter
*/
@Test
public void testRequestWithApproxMatchFilter()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput(
SearchRequestTest.class.getResource( "filters/request_with_approxMatch.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof ApproximateNode );
ApproximateNode<?> approxMatchFilter = ( ApproximateNode<?> ) filter;
assertEquals( "sn", approxMatchFilter.getAttribute() );
assertEquals( "foobar", approxMatchFilter.getValue().getString() );
}
/**
* Test parsing of a request with an approxMatch Filter with base64 value
*/
@Test
public void testRequestWithApproxMatchFilterBase64Value()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_approxMatch_base64_value.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof ApproximateNode );
ApproximateNode<?> approxMatchFilter = ( ApproximateNode<?> ) filter;
assertEquals( "sn", approxMatchFilter.getAttribute() );
assertEquals( "DSMLv2.0 rocks!!", approxMatchFilter.getValue().getString() );
}
/**
* Test parsing of a request with an approxMatch Filter with empty value
*/
@Test
public void testRequestWithApproxMatchFilterEmptyValue()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource(
"filters/request_with_approxMatch_with_empty_value.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof ApproximateNode );
ApproximateNode<?> approxMatchFilter = ( ApproximateNode<?> ) filter;
assertEquals( "sn", approxMatchFilter.getAttribute() );
assertEquals( "", approxMatchFilter.getValue().getString() );
}
/**
* Test parsing of a request with approxMatch Filter but no name attribute
*/
@Test
public void testRequestWithApproxMatchFilterWithoutName()
{
testParsingFail( SearchRequestTest.class, "filters/request_with_approxMatch_without_name.xml" );
}
/**
* Test parsing of a request with approxMatch Filter but no value element
*/
@Test
public void testRequestWithApproxMatchFilterWithoutValue()
{
testParsingFail( SearchRequestTest.class, "filters/request_with_approxMatch_without_value.xml" );
}
/**
* Test parsing of a request with approxMatch Filter with 2 Value elements
*/
@Test
public void testRequestWithApproxMatchFilterWith2Values()
{
testParsingFail( SearchRequestTest.class, "filters/request_with_approxMatch_with_2_values.xml" );
}
/**
* Test parsing of a request with an greaterOrEqual Filter
*/
@Test
public void testRequestWithGreaterOrEqualFilter()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_greaterOrEqual.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof GreaterEqNode );
GreaterEqNode<?> greaterEqFilter = ( GreaterEqNode<?> ) filter;
assertEquals( "sn", greaterEqFilter.getAttribute() );
assertEquals( "foobar", greaterEqFilter.getValue().getString() );
}
/**
* Test parsing of a request with an greaterOrEqual Filter with base64 value
*/
@Test
public void testRequestWithGreaterOrEqualFilterBase64Value()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource(
"filters/request_with_greaterOrEqual_base64_value.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof GreaterEqNode );
GreaterEqNode<?> greaterEqFilter = ( GreaterEqNode<?> ) filter;
assertEquals( "sn", greaterEqFilter.getAttribute() );
assertEquals( "DSMLv2.0 rocks!!", greaterEqFilter.getValue().getString() );
}
/**
* Test parsing of a request with an greaterOrEqual Filter with an empty value
*/
@Test
public void testRequestWithGreaterOrEqualFilterEmptyValue()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource(
"filters/request_with_greaterOrEqual_with_empty_value.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof GreaterEqNode );
GreaterEqNode<?> greaterEqFilter = ( GreaterEqNode<?> ) filter;
assertEquals( "sn", greaterEqFilter.getAttribute() );
assertEquals( "", greaterEqFilter.getValue().getString() );
}
/**
* Test parsing of a request with greaterOrEqual Filter but no name attribute
*/
@Test
public void testRequestWithGreaterOrEqualFilterWithoutName()
{
testParsingFail( SearchRequestTest.class, "filters/request_with_greaterOrEqual_without_name.xml" );
}
/**
* Test parsing of a request with greaterOrEqual Filter but no value element
*/
@Test
public void testRequestWithGreaterOrEqualFilterWithoutValue()
{
testParsingFail( SearchRequestTest.class, "filters/request_with_greaterOrEqual_without_value.xml" );
}
/**
* Test parsing of a request with greaterOrEqual Filter with 2 Value elements
*/
@Test
public void testRequestWithGreaterOrEqualFilterWith2Values()
{
testParsingFail( SearchRequestTest.class, "filters/request_with_greaterOrEqual_with_2_values.xml" );
}
/**
* Test parsing of a request with an lessOrEqual Filter
*/
@Test
public void testRequestWithLessOrEqualFilter()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput(
SearchRequestTest.class.getResource( "filters/request_with_lessOrEqual.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof LessEqNode );
LessEqNode<?> lessOrEqFilter = ( LessEqNode<?> ) filter;
assertEquals( "sn", lessOrEqFilter.getAttribute() );
assertEquals( "foobar", lessOrEqFilter.getValue().getString() );
}
/**
* Test parsing of a request with an lessOrEqual Filter with Base64 value
*/
@Test
public void testRequestWithLessOrEqualFilterBase64Value()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_lessOrEqual_base64_value.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof LessEqNode );
LessEqNode<?> lessOrEqFilter = ( LessEqNode<?> ) filter;
assertEquals( "sn", lessOrEqFilter.getAttribute() );
assertEquals( "DSMLv2.0 rocks!!", lessOrEqFilter.getValue().getString() );
}
/**
* Test parsing of a request with an lessOrEqual Filter
*/
@Test
public void testRequestWithLessOrEqualFilterEmptyValue()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource(
"filters/request_with_lessOrEqual_with_empty_value.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof LessEqNode );
LessEqNode<?> lessOrEqFilter = ( LessEqNode<?> ) filter;
assertEquals( "sn", lessOrEqFilter.getAttribute() );
assertEquals( "", lessOrEqFilter.getValue().getString() );
}
/**
* Test parsing of a request with lessOrEqual Filter but no name attribute
*/
@Test
public void testRequestWithLessOrEqualFilterWithoutName()
{
testParsingFail( SearchRequestTest.class, "filters/request_with_lessOrEqual_without_name.xml" );
}
/**
* Test parsing of a request with lessOrEqual Filter but no value element
*/
@Test
public void testRequestWithLessOrEqualFilterWithoutValue()
{
testParsingFail( SearchRequestTest.class, "filters/request_with_lessOrEqual_without_value.xml" );
}
/**
* Test parsing of a request with lessOrEqual Filter with 2 Value elements
*/
@Test
public void testRequestWithLessOrEqualFilterWith2Values()
{
testParsingFail( SearchRequestTest.class, "filters/request_with_lessOrEqual_with_2_values.xml" );
}
/**
* Test parsing of a request with an Equality Filter
*/
@Test
public void testRequestWithEqualityMatchFilter()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_equalityMatch.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof EqualityNode );
EqualityNode<?> equalityFilter = ( EqualityNode<?> ) filter;
assertEquals( "sn", equalityFilter.getAttribute() );
assertEquals( "foobar", equalityFilter.getValue().getString() );
}
/**
* Test parsing of a request with an Equality Filter with base64 value
*/
@Test
public void testRequestWithEqualityMatchFilterBase64Value()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class
.getResource( "filters/request_with_equalityMatch_base64_value.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof EqualityNode );
EqualityNode<?> equalityFilter = ( EqualityNode<?> ) filter;
assertEquals( "sn", equalityFilter.getAttribute() );
assertEquals( "DSMLv2.0 rocks!!", equalityFilter.getValue().getString() );
}
/**
* Test parsing of a request with an Equality Filter with an empty value
*/
@Test
public void testRequestWithEqualityMatchFilterWithEmptyValue()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource(
"filters/request_with_equalityMatch_with_empty_value.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof EqualityNode );
EqualityNode<?> equalityFilter = ( EqualityNode<?> ) filter;
assertEquals( "sn", equalityFilter.getAttribute() );
assertEquals( "", equalityFilter.getValue().getString() );
}
/**
* Test parsing of a request with EqualityMatch Filter but no name attribute
*/
@Test
public void testRequestWithEqualityMatchFilterWithoutName()
{
testParsingFail( SearchRequestTest.class, "filters/request_with_equalityMatch_without_name.xml" );
}
/**
* Test parsing of a request with EqualityMatch Filter but no value element
*/
@Test
public void testRequestWithEqualityMatchFilterWithoutValue()
{
testParsingFail( SearchRequestTest.class, "filters/request_with_equalityMatch_without_value.xml" );
}
/**
* Test parsing of a request with EqualityMatch Filter with 2 Value elements
*/
@Test
public void testRequestWithEqualityMatchFilterWith2Values()
{
testParsingFail( SearchRequestTest.class, "filters/request_with_equalityMatch_with_2_values.xml" );
}
/**
* Test parsing of a request with an Present Filter
*/
@Test
public void testRequestWithPresentFilter()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_present.xml" ).openStream(),
"UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof PresenceNode );
PresenceNode presentFilter = ( PresenceNode ) filter;
assertEquals( "givenName", presentFilter.getAttribute() );
}
/**
* Test parsing of a request with Present Filter without name attribute
*/
@Test
public void testRequestWithPresentWithoutName()
{
testParsingFail( SearchRequestTest.class, "filters/request_with_present_without_name.xml" );
}
/**
* Test parsing of a request with an ExtensibleMatch Filter
*/
@Test
public void testRequestWithExtensibleMatchFilter()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_extensibleMatch.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof ExtensibleNode );
ExtensibleNode extensibleMatchFilter = ( ExtensibleNode ) filter;
assertEquals( "A Value", extensibleMatchFilter.getValue().getString() );
assertEquals( false, extensibleMatchFilter.hasDnAttributes() );
}
/**
* Test parsing of a request with an ExtensibleMatch Filter
*/
@Test
public void testRequestWithExtensibleMatchFilterBase64Value()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource(
"filters/request_with_extensibleMatch_base64_value.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof ExtensibleNode );
ExtensibleNode extensibleMatchFilter = ( ExtensibleNode ) filter;
assertEquals( "DSMLv2.0 rocks!!", extensibleMatchFilter.getValue().getString() );
assertEquals( false, extensibleMatchFilter.hasDnAttributes() );
}
/**
* Test parsing of a request with an ExtensibleMatch Filter with empty value
*/
@Test
public void testRequestWithExtensibleMatchWithEmptyValue()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource(
"filters/request_with_extensibleMatch_with_empty_value.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof ExtensibleNode );
ExtensibleNode extensibleMatchFilter = ( ExtensibleNode ) filter;
assertNull( extensibleMatchFilter.getValue() );
assertEquals( false, extensibleMatchFilter.hasDnAttributes() );
}
/**
* Test parsing of a request with ExtensibleMatch Filter without Value element
*/
@Test
public void testRequestWithExtensibleMatchWithoutValue()
{
testParsingFail( SearchRequestTest.class, "filters/request_with_extensibleMatch_without_value.xml" );
}
/**
* Test parsing of a request with ExtensibleMatch Filter with 2 Value elements
*/
@Test
public void testRequestWithExtensibleMatchWith2Values()
{
testParsingFail( SearchRequestTest.class, "filters/request_with_extensibleMatch_with_2_values.xml" );
}
/**
* Test parsing of a request with typesOnly to true
*/
@Test
public void testRequestWithExtensibleMatchWithDnAttributesTrue()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource(
"filters/request_with_extensibleMatch_with_dnAttributes_true.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof ExtensibleNode );
ExtensibleNode extensibleMatchFilter = ( ExtensibleNode ) filter;
assertTrue( extensibleMatchFilter.hasDnAttributes() );
}
/**
* Test parsing of a request with typesOnly to 1
*/
@Test
public void testRequestWithExtensibleMatchWithDnAttributes1()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource(
"filters/request_with_extensibleMatch_with_dnAttributes_1.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof ExtensibleNode );
ExtensibleNode extensibleMatchFilter = ( ExtensibleNode ) filter;
assertTrue( extensibleMatchFilter.hasDnAttributes() );
}
/**
* Test parsing of a request with typesOnly to false
*/
@Test
public void testRequestWithExtensibleMatchWithDnAttributesFalse()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource(
"filters/request_with_extensibleMatch_with_dnAttributes_false.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof ExtensibleNode );
ExtensibleNode extensibleMatchFilter = ( ExtensibleNode ) filter;
assertFalse( extensibleMatchFilter.hasDnAttributes() );
}
/**
* Test parsing of a request with typesOnly to 0
*/
@Test
public void testRequestWithExtensibleMatchWithDnAttributes0()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource(
"filters/request_with_extensibleMatch_with_dnAttributes_0.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof ExtensibleNode );
ExtensibleNode extensibleMatchFilter = ( ExtensibleNode ) filter;
assertFalse( extensibleMatchFilter.hasDnAttributes() );
}
/**
* Test parsing of a request with typesOnly to an error value
*/
@Test
public void testRequestWithExtensibleMatchWithDnAttributesError()
{
testParsingFail( SearchRequestTest.class, "filters/request_with_extensibleMatch_with_dnAttributes_error.xml" );
}
/**
* Test parsing of a request with a matchingRule attribute
*/
@Test
public void testRequestWithExtensibleMatchWithMatchingRule()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource(
"filters/request_with_extensibleMatch_with_matchingRule.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof ExtensibleNode );
ExtensibleNode extensibleMatchFilter = ( ExtensibleNode ) filter;
assertEquals( "AMatchingRuleName", extensibleMatchFilter.getMatchingRuleId() );
}
/**
* Test parsing of a request with a name attribute
*/
@Test
public void testRequestWithExtensibleMatchWithName()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_extensibleMatch_with_name.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof ExtensibleNode );
ExtensibleNode extensibleMatchFilter = ( ExtensibleNode ) filter;
assertEquals( "givenName", extensibleMatchFilter.getAttribute() );
}
/**
* Test parsing of a request with an Substrings Filter
*/
@Test
public void testRequestWithSubstringsFilter()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_substrings.xml" ).openStream(),
"UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof SubstringNode );
SubstringNode substringFilter = ( SubstringNode ) filter;
assertEquals( "sn", substringFilter.getAttribute() );
}
/**
* Test parsing of a request with Substrings Filter without name
*/
@Test
public void testRequestWithSubstringsWithoutName()
{
testParsingFail( SearchRequestTest.class, "filters/request_with_substrings_without_name.xml" );
}
/**
* Test parsing of a request with a Substrings Filter with 1 Initial element
*/
@Test
public void testRequestWithSubstrings1Initial()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_substrings_1_initial.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof SubstringNode );
SubstringNode substringFilter = ( SubstringNode ) filter;
assertEquals( "jack", substringFilter.getInitial().toString() );
}
/**
* Test parsing of a request with a Substrings Filter with 1 Initial element with Base64 value
*/
@Test
public void testRequestWithSubstrings1Base64Initial()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource(
"filters/request_with_substrings_1_base64_initial.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof SubstringNode );
SubstringNode substringFilter = ( SubstringNode ) filter;
assertEquals( "DSMLv2.0 rocks!!", substringFilter.getInitial().toString() );
}
/**
* Test parsing of a request with a Substrings Filter with 1 emptyInitial element
*/
@Test
public void testRequestWithSubstrings1EmptyInitial()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class
.getResource( "filters/request_with_substrings_1_empty_initial.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof SubstringNode );
SubstringNode substringFilter = ( SubstringNode ) filter;
assertNull( substringFilter.getInitial() );
}
/**
* Test parsing of a request with a Substrings Filter with 1 Initial and 1 Any elements
*/
@Test
public void testRequestWithSubstrings1Initial1Any()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class
.getResource( "filters/request_with_substrings_1_initial_1_any.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof SubstringNode );
SubstringNode substringFilter = ( SubstringNode ) filter;
assertEquals( "jack", substringFilter.getInitial() );
List<String> initials = substringFilter.getAny();
assertEquals( 1, initials.size() );
assertEquals( "kate", initials.get( 0 ).toString() );
}
/**
* Test parsing of a request with a Substrings Filter with 1 Initial and 1 Final elements
*/
@Test
public void testRequestWithSubstrings1Initial1Final()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource(
"filters/request_with_substrings_1_initial_1_final.xml" ).openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof SubstringNode );
SubstringNode substringFilter = ( SubstringNode ) filter;
assertEquals( "jack", substringFilter.getInitial() );
assertEquals( "john", substringFilter.getFinal() );
}
/**
* Test parsing of a request with a Substrings Filter with 1 Any element
*/
@Test
public void testRequestWithSubstrings1Any()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_substrings_1_any.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof SubstringNode );
SubstringNode substringFilter = ( SubstringNode ) filter;
List<String> initials = substringFilter.getAny();
assertEquals( 1, initials.size() );
assertEquals( "kate", initials.get( 0 ) );
}
/**
* Test parsing of a request with a Substrings Filter with 1 Any element
*/
@Test
public void testRequestWithSubstrings1Base64Any()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_substrings_1_base64_any.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof SubstringNode );
SubstringNode substringFilter = ( SubstringNode ) filter;
List<String> initials = substringFilter.getAny();
assertEquals( 1, initials.size() );
assertEquals( "DSMLv2.0 rocks!!", initials.get( 0 ) );
}
/**
* Test parsing of a request with a Substrings Filter with 1 empty Any element
*/
@Test
public void testRequestWithSubstrings1EmptyAny()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_substrings_1_empty_any.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof SubstringNode );
SubstringNode substringFilter = ( SubstringNode ) filter;
List<String> initials = substringFilter.getAny();
assertEquals( 0, initials.size() );
}
/**
* Test parsing of a request with a Substrings Filter with 1 Any element
*/
@Test
public void testRequestWithSubstrings2Any()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_substrings_2_any.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof SubstringNode );
SubstringNode substringFilter = ( SubstringNode ) filter;
List<String> initials = substringFilter.getAny();
assertEquals( 2, initials.size() );
assertEquals( "kate", initials.get( 0 ) );
assertEquals( "sawyer", initials.get( 1 ) );
}
/**
* Test parsing of a request with a Substrings Filter with 1 Any and 1 Final elements
*/
@Test
public void testRequestWithSubstrings1Any1Final()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_substrings_1_any_1_final.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof SubstringNode );
SubstringNode substringFilter = ( SubstringNode ) filter;
List<String> initials = substringFilter.getAny();
assertEquals( 1, initials.size() );
assertEquals( "kate", initials.get( 0 ) );
assertEquals( "john", substringFilter.getFinal() );
}
/**
* Test parsing of a request with a Substrings Filter with 1 Final element
*/
@Test
public void testRequestWithSubstrings1Final()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_substrings_1_final.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof SubstringNode );
SubstringNode substringFilter = ( SubstringNode ) filter;
assertEquals( "john", substringFilter.getFinal().toString() );
}
/**
* Test parsing of a request with a Substrings Filter with 1 Final element
*/
@Test
public void testRequestWithSubstrings1Base64Final()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_substrings_1_base64_final.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof SubstringNode );
SubstringNode substringFilter = ( SubstringNode ) filter;
assertEquals( "DSMLv2.0 rocks!!", substringFilter.getFinal().toString() );
}
/**
* Test parsing of a request with a Substrings Filter with 1 empty Final element
*/
@Test
public void testRequestWithSubstrings1EmptyFinal()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_substrings_1_empty_final.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequest searchRequest = ( SearchRequest ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof SubstringNode );
SubstringNode substringFilter = ( SubstringNode ) filter;
assertNull( substringFilter.getFinal() );
}
/**
* Test parsing of a request with a needed requestID attribute
*
* DIRSTUDIO-1
*/
@Test
public void testRequestWithNeededRequestId()
{
testParsingFail( SearchRequestTest.class, "request_with_needed_requestID.xml" );
}
/**
* Test parsing of a request with a nested nodes DIRSHARED-137
*/
@Test
public void testRequestWithNestedNodes()
{
Dsmlv2Parser parser = null;
try
{
parser = newParser();
parser.setInput( SearchRequestTest.class.getResource( "filters/request_with_nested_connector_nodes.xml" )
.openStream(), "UTF-8" );
parser.parse();
}
catch ( Exception e )
{
fail( e.getMessage() );
}
SearchRequestDsml searchRequest = ( SearchRequestDsml ) parser.getBatchRequest().getCurrentRequest();
ExprNode filter = searchRequest.getFilter();
assertTrue( filter instanceof AndNode );
assertEquals( "(&(|(sn=*foo*)(cn=*foo*))(|(ou=*josopuram*)(o=*k*)))", filter.toString() );
//System.out.println( searchRequest.toDsml( new DefaultElement( "root" ) ).asXML() );
}
}