mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

gbellato
13.18.2006 ab7f66770995003edb65d67dc78619eeefc59eae
Some more unit tests for the schema package
1 files added
3 files modified
280 ■■■■■ changed files
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/ApproximatematchingRule.java 1 ●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/AttributeSyntaxTest.java 92 ●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualityMatchingRuleTest.java 1 ●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/OrderingMatchingRuleTest.java 186 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/ApproximatematchingRule.java
@@ -32,7 +32,6 @@
import org.opends.server.api.ApproximateMatchingRule;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/AttributeSyntaxTest.java
@@ -48,34 +48,32 @@
    // - a boolean indicating if the value is correct.
    return new Object[][] {
        
        // tests for the UTC time syntax
        // Some values are commented because these values are not
        // accepted. I think they should.
        //{SYNTAX_UTC_TIME_OID,"20060906135000.000Z", true},
        //{SYNTAX_UTC_TIME_OID,"20060906135030.3Z", true},
        //{SYNTAX_UTC_TIME_OID,"20060906135030.30Z", true},
        //{SYNTAX_UTC_TIME_OID,"20060906135030.Z", true},
        //{SYNTAX_UTC_TIME_OID,"20060906135030.0118Z", true},
        {SYNTAX_UTC_TIME_OID,"20060906135030+01", true},
        {SYNTAX_UTC_TIME_OID,"200609061350Z", true},
        {SYNTAX_UTC_TIME_OID,"20060906135030Z", true},
        {SYNTAX_UTC_TIME_OID,"20061116135030Z", true},
        {SYNTAX_UTC_TIME_OID,"20061126135030Z", true},
        {SYNTAX_UTC_TIME_OID,"20061231235959Z", true},
        {SYNTAX_UTC_TIME_OID,"20060906135030+0101", true},
        {SYNTAX_UTC_TIME_OID,"20060906135030+2359", true},
        {SYNTAX_UTC_TIME_OID,"20060906135030+3359", false},
        {SYNTAX_UTC_TIME_OID,"20060906135030+2389", false},
        {SYNTAX_UTC_TIME_OID,"20062231235959Z", false},
        {SYNTAX_UTC_TIME_OID,"20061232235959Z", false},
        {SYNTAX_UTC_TIME_OID,"2006123123595aZ", false},
        {SYNTAX_UTC_TIME_OID,"200a1231235959Z", false},
        {SYNTAX_UTC_TIME_OID,"2006j231235959Z", false},
        {SYNTAX_UTC_TIME_OID,"200612-1235959Z", false},
        {SYNTAX_UTC_TIME_OID,"20061231#35959Z", false},
        // tests for the UTC time syntax. This time syntax only uses 2 digits
        // for the year but it is currently implemented using 4 digits
        // disable the tests for now.
        // see issue 637
        /*
        {SYNTAX_UTC_TIME_OID,"060906135030+01", true},
        {SYNTAX_UTC_TIME_OID,"0609061350Z", true},
        {SYNTAX_UTC_TIME_OID,"060906135030Z", true},
        {SYNTAX_UTC_TIME_OID,"061116135030Z", true},
        {SYNTAX_UTC_TIME_OID,"061126135030Z", true},
        {SYNTAX_UTC_TIME_OID,"061231235959Z", true},
        {SYNTAX_UTC_TIME_OID,"060906135030+0101", true},
        {SYNTAX_UTC_TIME_OID,"060906135030+2359", true},
        {SYNTAX_UTC_TIME_OID,"060906135030+3359", false},
        {SYNTAX_UTC_TIME_OID,"060906135030+2389", false},
        {SYNTAX_UTC_TIME_OID,"062231235959Z", false},
        {SYNTAX_UTC_TIME_OID,"061232235959Z", false},
        {SYNTAX_UTC_TIME_OID,"06123123595aZ", false},
        {SYNTAX_UTC_TIME_OID,"0a1231235959Z", false},
        {SYNTAX_UTC_TIME_OID,"06j231235959Z", false},
        {SYNTAX_UTC_TIME_OID,"0612-1235959Z", false},
        {SYNTAX_UTC_TIME_OID,"061231#35959Z", false},
        {SYNTAX_UTC_TIME_OID,"2006", false},
        */
        
        // generalized time. Not much different from UTC time.
        // generalized time.
        {SYNTAX_GENERALIZED_TIME_OID,"20060906135030+01", true},
        {SYNTAX_GENERALIZED_TIME_OID,"200609061350Z", true},
        {SYNTAX_GENERALIZED_TIME_OID,"20060906135030Z", true},
@@ -177,6 +175,48 @@
                     + " SYNTAX 2.5.4.3 "
                     + " ( this is an extension ) ", false},
               
         {SYNTAX_BIT_STRING_OID, "\'0\'B", true},
         {SYNTAX_BIT_STRING_OID, "\'1\'B", true},
         {SYNTAX_BIT_STRING_OID, "invalid", false},
         // disabled because test is failing :
         // {SYNTAX_LDAP_SYNTAX_OID,
         //   "( 2.5.4.3 DESC 'full syntax description' "
         //  + "( this is an extension ) )", true},
         {SYNTAX_LDAP_SYNTAX_OID,
             "( 2.5.4.3 DESC 'full syntax description' )", true},
         {SYNTAX_LDAP_SYNTAX_OID,
               "   (    2.5.4.3    DESC  ' syntax description'    )", true},
         {SYNTAX_LDAP_SYNTAX_OID,
               "( 2.5.4.3 DESC syntax description )", false},
         {SYNTAX_LDAP_SYNTAX_OID,
                 "($%^*&!@ DESC 'syntax description' )", false},
         {SYNTAX_LDAP_SYNTAX_OID,
                   "(temp-oid DESC 'syntax description' )", true},
         {SYNTAX_LDAP_SYNTAX_OID,
                   "2.5.4.3 DESC 'syntax description' )", false},
         {SYNTAX_LDAP_SYNTAX_OID,
                     "(2.5.4.3 DESC 'syntax description' ", false},
         {SYNTAX_GUIDE_OID, "sn$EQ|!(sn$EQ)", true},
         {SYNTAX_GUIDE_OID, "!(sn$EQ)", true},
         {SYNTAX_GUIDE_OID, "person#sn$EQ", true},
         {SYNTAX_GUIDE_OID, "(sn$EQ)", true},
         {SYNTAX_GUIDE_OID, "sn$EQ", true},
         {SYNTAX_GUIDE_OID, "sn$SUBSTR", true},
         {SYNTAX_GUIDE_OID, "sn$GE", true},
         {SYNTAX_GUIDE_OID, "sn$LE", true},
         {SYNTAX_GUIDE_OID, "sn$ME", false},
         {SYNTAX_GUIDE_OID, "?true", true},
         {SYNTAX_GUIDE_OID, "?false", true},
         {SYNTAX_GUIDE_OID, "true|sn$GE", false},
         {SYNTAX_GUIDE_OID, "sn$APPROX", true},
         {SYNTAX_GUIDE_OID, "sn$EQ|(sn$EQ)", true},
         {SYNTAX_GUIDE_OID, "sn$EQ|(sn$EQ", false},
         {SYNTAX_GUIDE_OID, "sn$EQ|(sn$EQ)|sn$EQ", true},
         {SYNTAX_GUIDE_OID, "sn$EQ|(cn$APPROX&?false)", true},
         {SYNTAX_GUIDE_OID, "sn$EQ|(cn$APPROX&|?false)", false},
        
    };
  }
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualityMatchingRuleTest.java
@@ -31,7 +31,6 @@
import org.opends.server.core.DirectoryException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/OrderingMatchingRuleTest.java
New file
@@ -0,0 +1,186 @@
/*
 * 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
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 */
package org.opends.server.schema;
import static org.testng.Assert.assertTrue;
import org.opends.server.TestCaseUtils;
import org.opends.server.api.OrderingMatchingRule;
import org.opends.server.core.DirectoryException;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
/**
 * Test The Ordering matching rules and the Ordering matching rule api.
 */
public class OrderingMatchingRuleTest extends SchemaTestCase
{
  @DataProvider(name="Orderingmatchingrules")
  public Object[][] createOrderingMatchingRuleTest()
  {
    return new Object[][] {
        {"GeneralizedTimeOrderingMatchingRule", "20060912180130Z",
          "20060912180130Z", 0},
        {"GeneralizedTimeOrderingMatchingRule", "20060912180130Z",
          "20060912180129Z", 1},
        {"GeneralizedTimeOrderingMatchingRule", "20060912180129Z",
          "20060912180130Z", -1},
        // following test is currently disabled because it does not work
        // {"NumericStringOrderingMatchingRule", "1", "09", -1},
        // see issue 638
        {"NumericStringOrderingMatchingRule", "1", "999999999999999999999", -1},
        {"NumericStringOrderingMatchingRule", "1", "9", -1},
        {"NumericStringOrderingMatchingRule", "1", " 1 ", 0},
        {"NumericStringOrderingMatchingRule", "0", "1", -1},
        {"NumericStringOrderingMatchingRule", "1", "0", 1},
        {"IntegerOrderingMatchingRule", "1", "0", 1},
        {"IntegerOrderingMatchingRule", "1", "1", 0},
        {"IntegerOrderingMatchingRule", "45", "54", -1},
        {"IntegerOrderingMatchingRule", "-63", "63", -1},
        {"IntegerOrderingMatchingRule", "-63", "0", -1},
        {"IntegerOrderingMatchingRule", "63", "0", 1},
        {"IntegerOrderingMatchingRule", "0", "-63", 1},
        {"IntegerOrderingMatchingRule", "987654321987654321987654321",
                                        "987654321987654321987654322", -1},
    };
  }
  /**
   * Test the comparison of valid values.
   */
  @Test(dataProvider= "Orderingmatchingrules")
  public void OrderingMatchingRules(String ruleClassName, String value1,
      String value2, int result) throws Exception
  {
    // load the mathing rule code
    Class rule = Class.forName("org.opends.server.schema."+ruleClassName);
    // Make sure that the specified class can be instantiated as a task.
    OrderingMatchingRule ruleInstance =
      (OrderingMatchingRule) rule.newInstance();
    // we should call initializeMatchingRule but they all seem empty at the
    // moment.
    // ruleInstance.initializeMatchingRule(configEntry);
    ByteString normalizedValue1 =
      ruleInstance.normalizeValue(new ASN1OctetString(value1));
    ByteString normalizedValue2 =
      ruleInstance.normalizeValue(new ASN1OctetString(value2));
    int res = ruleInstance.compareValues(normalizedValue1, normalizedValue2);
    if (result == 0)
      assertTrue(res == 0);
    else if (result > 0)
      assertTrue(res > 0);
    else
      assertTrue(res < 0);
  }
  @DataProvider(name="OrderingMatchingRuleInvalidValues")
  public Object[][] createOrderingMatchingRuleInvalidValues()
  {
    return new Object[][] {
        {"GeneralizedTimeOrderingMatchingRule", "20060912180130"},
        {"GeneralizedTimeOrderingMatchingRule","2006123123595aZ"},
        {"GeneralizedTimeOrderingMatchingRule","200a1231235959Z"},
        {"GeneralizedTimeOrderingMatchingRule","2006j231235959Z"},
        {"GeneralizedTimeOrderingMatchingRule","20061231#35959Z"},
        {"GeneralizedTimeOrderingMatchingRule","2006"},
        {"NumericStringOrderingMatchingRule", "jfhslur"},
        {"NumericStringOrderingMatchingRule", "123AB"},
        {"IntegerOrderingMatchingRule", " 63 "},
        {"IntegerOrderingMatchingRule", "- 63"},
        {"IntegerOrderingMatchingRule", "+63"},
        {"IntegerOrderingMatchingRule", "AB"},
        {"IntegerOrderingMatchingRule", "0xAB"},
    };
  }
  /**
   * Test that invalid values are rejected.
   */
  @Test(dataProvider= "OrderingMatchingRuleInvalidValues")
  public void OrderingMatchingRulesInvalidValues(String ruleClassName,
      String value) throws Exception
  {
    // load the matching rule code
    Class rule = Class.forName("org.opends.server.schema."+ruleClassName);
    // Make sure that the specified class can be instantiated as a task.
    OrderingMatchingRule ruleInstance =
      (OrderingMatchingRule) rule.newInstance();
    // we should call initializeMatchingRule but they all seem empty at the
    // moment.
    // ruleInstance.initializeMatchingRule(configEntry);
    // normalize the 2 provided values
    boolean success = false;
    try
    {
      ruleInstance.normalizeValue(new ASN1OctetString(value));
    } catch (DirectoryException e) {
      success = true;
    }
    // if we get there with false value for  success then the tested
    // matching rule did not raised the Exception.
    assertTrue(success);
  }
  /**
   * Set up the environment for performing the tests in this suite.
   *
   * @throws Exception
   *           If the environment could not be set up.
   */
  @BeforeClass
  public void setUp() throws Exception {
    // This test suite depends on having the schema available.
    TestCaseUtils.startServer();
  }
  /**
   * Tears down the environment for performing the tests in this suite.
   *
   * @throws Exception
   *           If the environment could not be finalized.
   */
  @AfterClass
  public void tearDown() throws Exception {
    TestCaseUtils.startServer();
  }
}