/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at
* trunk/opends/resource/legal-notices/OpenDS.LICENSE
* or https://OpenDS.dev.java.net/OpenDS.LICENSE.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at
* trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
* add the following below this CDDL HEADER, with the fields enclosed
* by brackets "[]" replaced with your own identifying information:
* Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
* Portions copyright 2011 ForgeRock AS
*/
package org.opends.server.types;
import static org.testng.AssertJUnit.assertEquals;
import org.opends.server.core.SubtreeSpecificationTestCase;
import org.opends.server.types.DN;
import org.opends.server.types.SubtreeSpecification;
import org.testng.annotations.Test;
/**
* This class defines a set of tests for the
* {@link org.opends.server.types.SubtreeSpecification} class.
*/
public final class TestSubtreeSpecification extends
SubtreeSpecificationTestCase {
// Cached root DN.
private DN rootDN = DN.nullDN();
/**
* Tests the {@link SubtreeSpecification#valueOf(DN, String)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testValueOf1() throws Exception {
String input = "{}";
String output = "{ }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
input);
assertEquals(output, ss.toString());
}
/**
* Tests the {@link SubtreeSpecification#valueOf(DN, String)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testValueOf2() throws Exception {
String input = " { } ";
String output = "{ }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
input);
assertEquals(output, ss.toString());
}
/**
* Tests the {@link SubtreeSpecification#valueOf(DN, String)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testValueOf3() throws Exception {
String input = "{ base \"dc=sun, dc=com\" }";
String output = "{ base \"dc=sun,dc=com\" }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
input);
assertEquals(output, ss.toString());
}
/**
* Tests the {@link SubtreeSpecification#valueOf(DN, String)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testValueOf4() throws Exception {
String input = "{base \"dc=sun, dc=com\"}";
String output = "{ base \"dc=sun,dc=com\" }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
input);
assertEquals(output, ss.toString());
}
/**
* Tests the {@link SubtreeSpecification#valueOf(DN, String)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testValueOf5() throws Exception {
String input = "{ base \"dc=sun, dc=com\", "
+ "specificationFilter item:ds-config-rootDN }";
String output = "{ base \"dc=sun,dc=com\", "
+ "specificationFilter item:ds-config-rootDN }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
input);
assertEquals(output, ss.toString());
}
/**
* Tests the {@link SubtreeSpecification#valueOf(DN, String)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testValueOf6() throws Exception {
String input = "{ base \"dc=sun, dc=com\", minimum 0 , maximum 10, "
+ "specificExclusions {chopBefore:\"o=abc\", "
+ "chopAfter:\"o=xyz\"} , specificationFilter not:not:item:foo }";
String output = "{ base \"dc=sun,dc=com\", "
+ "specificExclusions { chopBefore:\"o=abc\", "
+ "chopAfter:\"o=xyz\" }, maximum 10, specificationFilter "
+ "not:not:item:foo }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
input);
assertEquals(output, ss.toString());
}
/**
* Tests the {@link SubtreeSpecification#valueOf(DN, String)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testValueOf7() throws Exception {
String input = "{ base \"\", minimum 0,maximum 10,"
+ "specificExclusions {chopBefore:\"o=abc\","
+ "chopAfter:\"o=xyz\"},specificationFilter not:not:item:foo}";
String output = "{ specificExclusions { chopBefore:\"o=abc\", "
+ "chopAfter:\"o=xyz\" }, "
+ "maximum 10, specificationFilter not:not:item:foo }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
input);
assertEquals(output, ss.toString());
}
/**
* Tests the {@link SubtreeSpecification#valueOf(DN, String)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testValueOf8() throws Exception {
String input = "{ specificationFilter and:{item:top, item:person} }";
String output = "{ specificationFilter and:{item:top, item:person} }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
input);
assertEquals(output, ss.toString());
}
/**
* Tests the {@link SubtreeSpecification#valueOf(DN, String)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testValueOf9() throws Exception {
String input = "{ specificationFilter or:{item:top, item:person} }";
String output = "{ specificationFilter or:{item:top, item:person} }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
input);
assertEquals(output, ss.toString());
}
/**
* Tests the {@link SubtreeSpecification#valueOf(DN, String)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testValueOf10() throws Exception {
String input = "{ specificationFilter "
+ "or:{item:top, item:foo, and:{item:one, item:two}} }";
String output = "{ specificationFilter "
+ "or:{item:top, item:foo, and:{item:one, item:two}} }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
input);
assertEquals(output, ss.toString());
}
/**
* Tests the {@link SubtreeSpecification#valueOf(DN, String)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testValueOf11() throws Exception {
String input = "{ base \"dc=sun, dc=com\", "
+ "specificationFilter \"(objectClass=*)\" }";
String output = "{ base \"dc=sun,dc=com\", "
+ "specificationFilter \"(objectClass=*)\" }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
input);
assertEquals(output, ss.toString());
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches1() throws Exception {
DN dn = DN.decode("dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\" }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(true, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches2() throws Exception {
DN dn = DN.decode("dc=com");
String value = "{ base \"dc=sun, dc=com\" }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(false, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches3() throws Exception {
DN dn = DN.decode("dc=foo, dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\" }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(true, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches4() throws Exception {
DN dn = DN.decode("dc=foo, dc=bar, dc=com");
String value = "{ base \"dc=sun, dc=com\" }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(false, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches5() throws Exception {
DN dn = DN.decode("dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", minimum 1 }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(false, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches6() throws Exception {
DN dn = DN.decode("dc=abc, dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", minimum 1 }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(true, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches7() throws Exception {
DN dn = DN.decode("dc=xyz, dc=abc, dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", minimum 1 }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(true, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches8() throws Exception {
DN dn = DN.decode("dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", maximum 0 }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(true, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches9() throws Exception {
DN dn = DN.decode("dc=foo, dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", maximum 0 }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(false, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches10() throws Exception {
DN dn = DN.decode("dc=bar, dc=foo, dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", maximum 1 }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(false, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches11() throws Exception {
DN dn = DN.decode("dc=bar, dc=foo, dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", maximum 2 }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(true, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches12() throws Exception {
DN dn = DN.decode("dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", "
+ "specificExclusions { chopAfter:\"\" } }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(true, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches13() throws Exception {
DN dn = DN.decode("dc=foo, dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", "
+ "specificExclusions { chopAfter:\"\" } }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(false, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches14() throws Exception {
DN dn = DN.decode("dc=foo, dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", "
+ "specificExclusions { chopAfter:\"dc=foo\" } }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(true, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches15() throws Exception {
DN dn = DN.decode("dc=bar, dc=foo, dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", "
+ "specificExclusions { chopAfter:\"dc=foo\" } }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(false, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches16() throws Exception {
DN dn = DN.decode("dc=foo, dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", "
+ "specificExclusions { chopBefore:\"dc=foo\" } }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(false, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches17() throws Exception {
DN dn = DN.decode("dc=bar, dc=foo, dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", "
+ "specificExclusions { chopBefore:\"dc=foo\" } }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(false, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches18() throws Exception {
DN dn = DN.decode("dc=abc, dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", "
+ "specificExclusions { chopBefore:\"dc=foo\" } }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(true, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches19() throws Exception {
DN dn = DN.decode("dc=abc, dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", "
+ "specificationFilter item:person }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(true, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches20() throws Exception {
DN dn = DN.decode("dc=abc, dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", "
+ "specificationFilter item:organization }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(false, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches21() throws Exception {
DN dn = DN.decode("dc=abc, dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", "
+ "specificationFilter not:item:person }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(false, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@link SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches22() throws Exception {
DN dn = DN.decode("dc=abc, dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", "
+ "specificationFilter not:item:organization }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(true, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@code SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches23() throws Exception {
DN dn = DN.decode("dc=abc, dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", "
+ "specificationFilter \"(objectClass=person)\" }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(true, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
/**
* Tests the {@code SubtreeSpecification#isWithinScope(Entry)}
* method.
*
* @throws Exception
* If the test failed unexpectedly.
*/
@Test
public void testMatches24() throws Exception {
DN dn = DN.decode("dc=abc, dc=sun, dc=com");
String value = "{ base \"dc=sun, dc=com\", "
+ "specificationFilter \"(objectClass=organization)\" }";
SubtreeSpecification ss = SubtreeSpecification.valueOf(rootDN,
value);
assertEquals(false, ss
.isWithinScope(createEntry(dn, getObjectClasses())));
}
}