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

gbellato
25.02.2006 5ddd413407ed92f45379c415c64e36dde002cea1
Break the Equality Matching rule tests in subclasses.
Add some tests for more Equality matching rules
18 files added
1 files modified
1785 ■■■■ changed files
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/AuthPasswordEqualityMatchingRuleTest.java 123 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/BitStringEqualityMatchingRuleTest.java 76 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/BooleanEqualityMatchingRuleTest.java 80 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/CaseExactEqualityMatchingRuleTest.java 78 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/CaseExactIA5EqualityMatchingRuleTest.java 75 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/CaseIgnoreEqualityMatchingRuleTest.java 76 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/CaseIgnoreIA5EqualityMatchingRuleTest.java 75 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/DirectoryStringFirstComponentEqualityMatchingRuleTest.java 70 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/DistinguishedNameEqualityMatchingRuleTest.java 102 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualityMatchingRuleTest.java 282 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/GeneralizedTimeEqualityMatchingRuleTest.java 88 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/IntegerEqualityMatchingRuleTest.java 79 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/NumericStringEqualityMatchingRuleTest.java 79 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/PresentationAddressEqualityMatchingRuleTest.java 74 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/ProtocolInformationEqualityMatchingRuleTest.java 74 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/UUIDEqualityMatchingRuleTest.java 81 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/UniqueMemberEqualityMatchingRuleTest.java 76 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/UserPasswordEqualityMatchingRuleTest.java 117 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/WordEqualityMatchingRuleTest.java 80 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/AuthPasswordEqualityMatchingRuleTest.java
New file
@@ -0,0 +1,123 @@
/*
 * 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 org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.core.DirectoryServer;
import org.opends.server.extensions.SaltedMD5PasswordStorageScheme;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DN;
import org.testng.annotations.DataProvider;
import static org.opends.server.extensions.ExtensionsConstants.*;
/**
 * Test the AuthPasswordEqualityMatchingRule.
 */
public class AuthPasswordEqualityMatchingRuleTest extends
    EqualityMatchingRuleTest
{
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalitymatchingrules")
  public Object[][] createEqualityMatchingRuleTest()
  {
    return new Object[][] {
        {"password", "password", true},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalityMatchingRuleInvalidValues")
  public Object[][] createEqualityMatchingRuleInvalidValues()
  {
    return new Object[][] {};
  }
  private Object[] generateValues(String password) throws Exception
  {
    ByteString bytePassword = new ASN1OctetString(password);
    SaltedMD5PasswordStorageScheme scheme = new SaltedMD5PasswordStorageScheme();
    ConfigEntry configEntry =
       DirectoryServer.getConfigEntry(DN.decode("cn=Salted MD5,cn=Password Storage Schemes,cn=config"));
    scheme.initializePasswordStorageScheme(configEntry);
    ByteString encodedAuthPassword = scheme.encodeAuthPassword(bytePassword);
    StringBuilder[] authPWComponents =
         AuthPasswordSyntax.decodeAuthPassword(
              encodedAuthPassword.stringValue());
     return new Object[] {
         AUTH_PASSWORD_SCHEME_NAME_SALTED_MD5 + "$"
                 + authPWComponents[1].toString()
                 + "$"+ authPWComponents[2].toString(),
         password, true};
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="valuesMatch")
  public Object[][] createValuesMatch()
  {
    try
    {
      return new Object[][] {
          generateValues("password"),
          {"password", "something else", false},
          {"password", AUTH_PASSWORD_SCHEME_NAME_SALTED_MD5+"$something$else",
                      false},
          {"password", "scheme$something$else", false}
      };
    }
    catch (Exception e)
    {
      return new Object[][] {};
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override
  public EqualityMatchingRule getRule()
  {
    return new AuthPasswordEqualityMatchingRule();
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/BitStringEqualityMatchingRuleTest.java
New file
@@ -0,0 +1,76 @@
/*
 * 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 org.opends.server.api.EqualityMatchingRule;
import org.testng.annotations.DataProvider;
/**
 * Test the BitStringEqualityMatchingRule.
 */
public class BitStringEqualityMatchingRuleTest extends EqualityMatchingRuleTest
{
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalityMatchingRuleInvalidValues")
  public Object[][] createEqualityMatchingRuleInvalidValues()
  {
    return new Object[][] {
        {"\'a\'B"},
        {"0"},
        {"010101"},
        {"\'10101"},
        {"\'1010\'A"},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalitymatchingrules")
  public Object[][] createEqualityMatchingRuleTest()
  {
    return new Object[][] {
        {"\'0\'B", "\'0\'B", true},
        {"\'1\'B", "\'1\'B", true},
        {"\'0\'B", "\'1\'B", false},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  public EqualityMatchingRule getRule()
  {
    return new BitStringEqualityMatchingRule();
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/BooleanEqualityMatchingRuleTest.java
New file
@@ -0,0 +1,80 @@
/*
 * 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 org.opends.server.api.EqualityMatchingRule;
import org.opends.server.schema.BooleanEqualityMatchingRuleTest;
import org.testng.annotations.DataProvider;
/**
 * Test the BooleanEqualityMatchingRule.
 */
public class BooleanEqualityMatchingRuleTest extends EqualityMatchingRuleTest
{
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name= "equalitymatchingrules")
  public Object[][] createEqualityMatchingRuleTest()
  {
    return new Object[][] {
        {"TRUE",  "true",  true},
        {"YES",   "true",  true},
        {"ON",    "true",  true},
        {"1",     "true",  true},
        {"FALSE", "false", true},
        {"NO",    "false", true},
        {"OFF",   "false", true},
        {"0",     "false", true},
        {"TRUE",  "false", false},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name= "equalityMatchingRuleInvalidValues")
  public Object[][] createEqualityMatchingRuleInvalidValues()
  {
    return new Object[][] {
        {"garbage"},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  public EqualityMatchingRule getRule()
  {
    return new BooleanEqualityMatchingRule();
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/CaseExactEqualityMatchingRuleTest.java
New file
@@ -0,0 +1,78 @@
/*
 * 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 org.opends.server.api.EqualityMatchingRule;
import org.testng.annotations.DataProvider;
/**
 * Test the CaseExactEqualityMatchingRule.
 */
public class CaseExactEqualityMatchingRuleTest extends
    EqualityMatchingRuleTest
{
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalityMatchingRuleInvalidValues")
  public Object[][] createEqualityMatchingRuleInvalidValues()
  {
    return new Object[][] { };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalitymatchingrules")
  public Object[][] createEqualityMatchingRuleTest()
  {
    return new Object[][] {
        {"12345678", "12345678", true},
        {"12345678\u2163", "12345678\u2163", true},
        {"ABC45678", "ABC45678", true},
        {"  ABC45678  ", "ABC45678", true},
        {"ABC   45678", "ABC 45678", true},
        {"   ", " ", true},
        {"", "", true},
        {"ABC45678", "abc45678", false},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  public EqualityMatchingRule getRule()
  {
    return new CaseExactEqualityMatchingRule();
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/CaseExactIA5EqualityMatchingRuleTest.java
New file
@@ -0,0 +1,75 @@
/*
 * 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 org.opends.server.api.EqualityMatchingRule;
import org.testng.annotations.DataProvider;
/**
 * Test the CaseExactIA5EqualityMatchingRule.
 */
public class CaseExactIA5EqualityMatchingRuleTest extends
    EqualityMatchingRuleTest
{
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalityMatchingRuleInvalidValues")
  public Object[][] createEqualityMatchingRuleInvalidValues()
  {
    return new Object[][] {
        {"12345678\u2163"},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalitymatchingrules")
  public Object[][] createEqualityMatchingRuleTest()
  {
    return new Object[][] {
        {"12345678", "12345678", true},
        {"ABC45678", "ABC45678", true},
        {"ABC45678", "abc45678", false},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  public EqualityMatchingRule getRule()
  {
    return new CaseExactIA5EqualityMatchingRule();
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/CaseIgnoreEqualityMatchingRuleTest.java
New file
@@ -0,0 +1,76 @@
/*
 * 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 org.opends.server.api.EqualityMatchingRule;
import org.testng.annotations.DataProvider;
/**
 * Test the CaseIgnoreEqualityMatchingRule.
 */
public class CaseIgnoreEqualityMatchingRuleTest extends
    EqualityMatchingRuleTest
{
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalityMatchingRuleInvalidValues")
  public Object[][] createEqualityMatchingRuleInvalidValues()
  {
    return new Object[][] {};
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalitymatchingrules")
  public Object[][] createEqualityMatchingRuleTest()
  {
    return new Object[][] {
        {" string ", "string", true},
        {"string ",  "string", true},
        {" string",  "string", true},
        {"    ",     " ",      true},
        {"Z",        "z",      true},
        {"ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",
         "abcdefghijklmnopqrstuvwxyz1234567890", true},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  public EqualityMatchingRule getRule()
  {
    return new CaseIgnoreEqualityMatchingRule();
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/CaseIgnoreIA5EqualityMatchingRuleTest.java
New file
@@ -0,0 +1,75 @@
/*
 * 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 org.opends.server.api.EqualityMatchingRule;
import org.testng.annotations.DataProvider;
/**
 * Test the CaseExactIA5EqualityMatchingRule.
 */
public class CaseIgnoreIA5EqualityMatchingRuleTest extends
    EqualityMatchingRuleTest
{
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalityMatchingRuleInvalidValues")
  public Object[][] createEqualityMatchingRuleInvalidValues()
  {
    return new Object[][] {
        {"12345678\u2163"},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalitymatchingrules")
  public Object[][] createEqualityMatchingRuleTest()
  {
    return new Object[][] {
        {"12345678", "12345678", true},
        {"ABC45678", "ABC45678", true},
        {"ABC45678", "abc45678", true},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  public EqualityMatchingRule getRule()
  {
    return new CaseIgnoreIA5EqualityMatchingRule();
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/DirectoryStringFirstComponentEqualityMatchingRuleTest.java
New file
@@ -0,0 +1,70 @@
/*
 * 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 org.opends.server.api.EqualityMatchingRule;
import org.testng.annotations.DataProvider;
/**
 * Test the DirectoryStringFirstComponentEqualityMatchingRule.
 */
public class DirectoryStringFirstComponentEqualityMatchingRuleTest extends
    EqualityMatchingRuleTest
{
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name= "equalitymatchingrules")
  public Object[][] createEqualityMatchingRuleTest()
  {
    return new Object[][] {
        {"(1.2.8.5 NAME 'testtype' DESC 'full type')", "1.2.8.5", true},
        {"(1.2.8.5 NAME 'testtype' DESC 'full type')", "something", false},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name= "equalityMatchingRuleInvalidValues")
  public Object[][] createEqualityMatchingRuleInvalidValues()
  {
    return new Object[][] {};
  }
  /**
   * {@inheritDoc}
   */
  @Override
  public EqualityMatchingRule getRule()
  {
    return new DirectoryStringFirstComponentEqualityMatchingRule();
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/DistinguishedNameEqualityMatchingRuleTest.java
New file
@@ -0,0 +1,102 @@
/*
 * 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 org.opends.server.api.EqualityMatchingRule;
import org.testng.annotations.DataProvider;
/**
 * Test the DistinguishedNameEqualityMatchingRule.
 */
public class DistinguishedNameEqualityMatchingRuleTest extends
    EqualityMatchingRuleTest
{
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalityMatchingRuleInvalidValues")
  public Object[][] createEqualityMatchingRuleInvalidValues()
  {
    return new Object[][] {
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalitymatchingrules")
  public Object[][] createEqualityMatchingRuleTest()
  {
    /*
     *  DistinguishedNameEqualityMatchingRule rely on DN for the
     *  DN with correct syntax, just do a few such tests and then
     *  do more tests with invalid DNs
     */
    return new Object[][] {
        // valid DNs
        { "", "" , true},
        { "   ", "", true },
        { "dc=com", "dc=com" , true},
        { "DC=COM", "dc=com" , true},
        { "dc = com", "dc=com" , true},
        { " dc = com ", "dc=com" , true},
        { "dc=example,dc=com", "dc=example,dc=com" , true},
        { "dc=example, dc=com", "dc=example,dc=com", true },
        { "dc=example ,dc=com", "dc=example,dc=com", true },
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="warnmodeEqualityMatchingRule")
  public Object[][] createWarnmodeEqualityMatchingRuleTest()
  {
    return new Object[][] {
        // invalid DNs
        { "example", "example", true },
        { " example ", " example ", true },
        { "invalid dn", "invalid   dn", true },
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  public EqualityMatchingRule getRule()
  {
    return new DistinguishedNameEqualityMatchingRule();
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualityMatchingRuleTest.java
@@ -28,230 +28,154 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.core.DirectoryException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.AcceptRejectWarn;
import org.opends.server.types.ByteString;
import org.opends.server.types.ConditionResult;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import static org.opends.server.schema.SchemaConstants.SYNTAX_IA5_STRING_OID;
import static org.testng.Assert.*;
/**
 * Test The equality matching rules and the equality matching rule api.
 */
public class EqualityMatchingRuleTest extends SchemaTestCase
public abstract class EqualityMatchingRuleTest extends SchemaTestCase
{
  /**
   * Generate data for the EqualityMatching Rule test.
   *
   * @return the data for the equality matching rule test.
   */
  @DataProvider(name="equalitymatchingrules")
  public Object[][] createEqualityMatchingRuleTest()
  {
    return new Object[][] {
        {"WordEqualityMatchingRule", "first word", "first", true},
        {"WordEqualityMatchingRule", "first,word", "first", true},
        {"WordEqualityMatchingRule", "first  word", "first", true},
        {"WordEqualityMatchingRule", "first#word", "first", true},
        {"WordEqualityMatchingRule", "first.word", "first", true},
        {"WordEqualityMatchingRule", "first/word", "first", true},
        {"WordEqualityMatchingRule", "first$word", "first", true},
        {"WordEqualityMatchingRule", "first+word", "first", true},
        {"WordEqualityMatchingRule", "first-word", "first", true},
        {"WordEqualityMatchingRule", "first=word", "first", true},
        {"WordEqualityMatchingRule", "word", "first", false},
        {"WordEqualityMatchingRule", "", "empty", false},
        {"WordEqualityMatchingRule", "", "", true},
        {"DirectoryStringFirstComponentEqualityMatchingRule",
          "(1.2.8.5 NAME 'testtype' DESC 'full type')",
           "1.2.8.5", true},
        {"DirectoryStringFirstComponentEqualityMatchingRule",
             "(1.2.8.5 NAME 'testtype' DESC 'full type')",
             "something", false},
        {"BooleanEqualityMatchingRule", "TRUE", "true", true},
        {"BooleanEqualityMatchingRule", "YES", "true", true},
        {"BooleanEqualityMatchingRule", "ON", "true", true},
        {"BooleanEqualityMatchingRule", "1", "true", true},
        {"BooleanEqualityMatchingRule", "FALSE", "false", true},
        {"BooleanEqualityMatchingRule", "NO", "false", true},
        {"BooleanEqualityMatchingRule", "OFF", "false", true},
        {"BooleanEqualityMatchingRule", "0", "false", true},
        {"BooleanEqualityMatchingRule", "TRUE", "false", false},
  public abstract Object[][] createEqualityMatchingRuleTest();
        {"CaseIgnoreEqualityMatchingRule", " string ", "string", true},
        {"CaseIgnoreEqualityMatchingRule", "string ", "string", true},
        {"CaseIgnoreEqualityMatchingRule", " string", "string", true},
        {"CaseIgnoreEqualityMatchingRule", "    ", " ", true},
        {"CaseIgnoreEqualityMatchingRule", "Z", "z", true},
        {"CaseIgnoreEqualityMatchingRule",
                            "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",
                            "abcdefghijklmnopqrstuvwxyz1234567890", true},
  /**
   * Generate invalid data for the EqualityMatching Rule test.
   *
   * @return the data for the EqualityMatchingRulesInvalidValuestest.
   */
  @DataProvider(name="equalityMatchingRuleInvalidValues")
  public abstract Object[][] createEqualityMatchingRuleInvalidValues();
        {"IntegerEqualityMatchingRule", "1234567890", "1234567890", true},
        {"IntegerEqualityMatchingRule", "-1", "-1", true},
        {"IntegerEqualityMatchingRule", "-9876543210", "-9876543210", true},
        {"IntegerEqualityMatchingRule", "1", "-1", false},
        {"GeneralizedTimeEqualityMatchingRule","2006090613Z",
                                               "20060906130000.000Z", true},
        {"GeneralizedTimeEqualityMatchingRule","200609061350Z",
                                               "20060906135000.000Z", true},
        {"GeneralizedTimeEqualityMatchingRule","200609061351Z",
                                               "20060906135000.000Z", false},
        {"GeneralizedTimeEqualityMatchingRule","20060906135030Z",
                                               "20060906135030.000Z", true},
        {"GeneralizedTimeEqualityMatchingRule","20060906135030.3Z",
                                               "20060906135030.300Z", true},
        {"GeneralizedTimeEqualityMatchingRule","20060906135030.30Z",
                                               "20060906135030.300Z", true},
        {"GeneralizedTimeEqualityMatchingRule","20060906135030.Z",
                                               "20060906135030.000Z", true},
        {"GeneralizedTimeEqualityMatchingRule","20060906135030.0118Z",
                                               "20060906135030.012Z", true},
        {"GeneralizedTimeEqualityMatchingRule","20060906135030+01",
                                               "20060906125030.000Z", true},
        {"GeneralizedTimeEqualityMatchingRule","20060906135030+0101",
                                               "20060906124930.000Z", true},
        {"UUIDEqualityMatchingRule",
                 "12345678-9ABC-DEF0-1234-1234567890ab",
                 "12345678-9abc-def0-1234-1234567890ab", true},
        {"UUIDEqualityMatchingRule",
                  "12345678-9abc-def0-1234-1234567890ab",
                  "12345678-9abc-def0-1234-1234567890ab", true},
        {"UUIDEqualityMatchingRule",
                  "02345678-9abc-def0-1234-1234567890ab",
                  "12345678-9abc-def0-1234-1234567890ab", false},
        {"BitStringEqualityMatchingRule", "\'0\'B", "\'0\'B", true},
        {"BitStringEqualityMatchingRule", "\'1\'B", "\'1\'B", true},
        {"BitStringEqualityMatchingRule", "\'0\'B", "\'1\'B", false},
        {"CaseExactIA5EqualityMatchingRule", "12345678",
                                             "12345678", true},
        {"CaseExactIA5EqualityMatchingRule", "ABC45678",
                                             "ABC45678", true},
        {"CaseExactIA5EqualityMatchingRule", "ABC45678",
                                             "abc45678", false},
        {"CaseIgnoreIA5EqualityMatchingRule", "12345678",
                                              "12345678", true},
        {"CaseIgnoreIA5EqualityMatchingRule", "ABC45678",
                                              "ABC45678", true},
        {"CaseIgnoreIA5EqualityMatchingRule", "ABC45678",
                                              "abc45678", true},
        {"UniqueMemberEqualityMatchingRule",
                 "1.3.6.1.4.1.1466.0=#04024869,O=Test,C=GB#'0101'B",
                 "1.3.6.1.4.1.1466.0=#04024869,O=Test,C=GB#'0101'B", true},
        {"UniqueMemberEqualityMatchingRule",
                 "1.3.6.1.4.1.1466.0=#04024869,O=Test,C=GB#'0101'B",
                 "1.3.6.1.4.1.1466.0=#04024869,o=Test,C=GB#'0101'B", true},
    };
  }
  /**
   * Get an instance of the matching rule.
   *
   * @return An instance of the matching rule to test.
   */
  public abstract EqualityMatchingRule getRule();
  /**
   * Test the normalization and the comparison of valid values.
   */
  @Test(dataProvider= "equalitymatchingrules")
  public void EqualityMatchingRules(String ruleClassName, String value1,
  public void equalityMatchingRules(String value1,
                             String value2, Boolean 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.
    EqualityMatchingRule ruleInstance =
      (EqualityMatchingRule) rule.newInstance();
    // we should call initializeMatchingRule but they all seem empty at the
    // moment.
    // ruleInstance.initializeMatchingRule(configEntry);
    EqualityMatchingRule rule = getRule();
    // normalize the 2 provided values and check that they are equals
    ByteString normalizedValue1 =
      ruleInstance.normalizeValue(new ASN1OctetString(value1));
      rule.normalizeValue(new ASN1OctetString(value1));
    ByteString normalizedValue2 =
      ruleInstance.normalizeValue(new ASN1OctetString(value2));
      rule.normalizeValue(new ASN1OctetString(value2));
    Boolean liveResult = ruleInstance.areEqual(normalizedValue1,
        normalizedValue2);
    Boolean liveResult = rule.areEqual(normalizedValue1, normalizedValue2);
    assertEquals(result, liveResult);
  }
  @DataProvider(name="equalityMathchingRuleInvalidValues")
  public Object[][] createEqualityMathchingRuleInvalidValues()
  /**
   * Generate data for the EqualityMatching Rule test in warn mode.
   *
   * @return the data for the equality matching rule test in warn mode.
   */
  @DataProvider(name="warnmodeEqualityMatchingRule")
  public Object[][] createWarnmodeEqualityMatchingRuleTest()
  {
    return new Object[][] {
        {"IntegerEqualityMatchingRule", "01"},
        {"IntegerEqualityMatchingRule", "00"},
        {"IntegerEqualityMatchingRule", "-01"},
        {"IntegerEqualityMatchingRule", "1-2"},
        {"IntegerEqualityMatchingRule", "b2"},
        {"IntegerEqualityMatchingRule", "-"},
        {"IntegerEqualityMatchingRule", ""},
        {"GeneralizedTimeEqualityMatchingRule","2006september061Z"},
        {"GeneralizedTimeEqualityMatchingRule","2006"},
        {"GeneralizedTimeEqualityMatchingRule","200609061Z"},
        {"GeneralizedTimeEqualityMatchingRule","20060906135Z"},
        {"GeneralizedTimeEqualityMatchingRule","200609061350G"},
        {"GeneralizedTimeEqualityMatchingRule","2006090613mmZ"},
        {"GeneralizedTimeEqualityMatchingRule","20060906135030.011"},
        {"GeneralizedTimeEqualityMatchingRule","20060906135030Zx"},
        {"UUIDEqualityMatchingRule", "G2345678-9abc-def0-1234-1234567890ab"},
        {"UUIDEqualityMatchingRule", "g2345678-9abc-def0-1234-1234567890ab"},
        {"UUIDEqualityMatchingRule", "12345678/9abc/def0/1234/1234567890ab"},
        {"UUIDEqualityMatchingRule", "12345678-9abc-def0-1234-1234567890a"},
        {"BitStringEqualityMatchingRule", "\'a\'B"},
        {"BitStringEqualityMatchingRule", "0"},
        {"BitStringEqualityMatchingRule", "010101"},
        {"BitStringEqualityMatchingRule", "\'10101"},
        {"BitStringEqualityMatchingRule", "\'1010\'A"},
        {"CaseExactIA5EqualityMatchingRule", "12345678\u2163"},
        {"CaseIgnoreIA5EqualityMatchingRule", "12345678\u2163"},
        {"UniqueMemberEqualityMatchingRule",
                "1.3.6.1.4.1.1466.0=#04024869,O=Test,C=GB#'123'B"},
        {"UniqueMemberEqualityMatchingRule", "1.3.6.1.4.1.1466.01"}
    };
    return new Object[][] {};
  }
  /**
   * Test the normalization and the comparison in the warning mode
   */
  @Test(dataProvider= "warnmodeEqualityMatchingRule")
  public void warnmodeEqualityMatchingRules(
      String value1, String value2, Boolean result)
      throws Exception
  {
    AcceptRejectWarn accept = DirectoryServer.getSyntaxEnforcementPolicy();
    DirectoryServer.setSyntaxEnforcementPolicy(AcceptRejectWarn.WARN);
    try
    {
      equalityMatchingRules(value1, value2, result);
    }
    finally
    {
      DirectoryServer.setSyntaxEnforcementPolicy(accept);
    }
  }
  /**
   * Test that invalid values are rejected.
   */
  @Test(dataProvider= "equalityMathchingRuleInvalidValues")
  public void EqualityMatchingRulesInvalidValues(String ruleClassName,
      String value) throws Exception
  @Test(dataProvider= "equalityMatchingRuleInvalidValues")
  public void equalityMatchingRulesInvalidValues(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.
    EqualityMatchingRule ruleInstance =
      (EqualityMatchingRule) rule.newInstance();
    // we should call initializeMatchingRule but they all seem empty at the
    // moment.
    // ruleInstance.initializeMatchingRule(configEntry);
    // Get the instance of the rule to be tested.
    EqualityMatchingRule rule = getRule();
    // normalize the 2 provided values
    boolean success = false;
    try
    {
      ruleInstance.normalizeValue(new ASN1OctetString(value));
      rule.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);
    if (!success)
    {
      fail("The matching rule : " + rule.getName() +
           " should detect that value \"" + value + "\" is invalid");
    }
  }
  /**
   * Generate data for the EqualityMatching Rule test.
   *
   * @return the data for the equality matching rule test.
   */
  @DataProvider(name="valuesMatch")
  public Object[][] createValuesMatch()
  {
    return new Object[][] {};
  }
  /**
   * Test the valuesMatch method used for extensible filters.
   */
  @Test(dataProvider= "valuesMatch")
  public void testValuesMatch(String value1,
                             String value2, Boolean result) throws Exception
  {
    EqualityMatchingRule rule = getRule();
    // normalize the 2 provided values and check that they are equals
    ByteString normalizedValue1 =
      rule.normalizeValue(new ASN1OctetString(value1));
    ByteString normalizedValue2 =
      rule.normalizeValue(new ASN1OctetString(value2));
    ConditionResult liveResult =
      rule.valuesMatch(normalizedValue1, normalizedValue2);
    if (result == true)
      assertEquals(ConditionResult.TRUE, liveResult);
    else
      assertEquals(ConditionResult.FALSE, liveResult);
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/GeneralizedTimeEqualityMatchingRuleTest.java
New file
@@ -0,0 +1,88 @@
/*
 * 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 org.opends.server.api.EqualityMatchingRule;
import org.testng.annotations.DataProvider;
/**
 * Test the  GeneralizedTimeEqualityMatchingRule.
 */
public class GeneralizedTimeEqualityMatchingRuleTest extends
    EqualityMatchingRuleTest
{
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalityMatchingRuleInvalidValues")
  public Object[][] createEqualityMatchingRuleInvalidValues()
  {
    return new Object [][] {
        {"2006september061Z"},
        {"2006"},
        {"200609061Z"},
        {"20060906135Z"},
        {"200609061350G"},
        {"2006090613mmZ"},
        {"20060906135030.011"},
        {"20060906135030Zx"},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalitymatchingrules")
  public Object[][] createEqualityMatchingRuleTest()
  {
    return new Object [][] {
        {"2006090613Z",          "20060906130000.000Z", true},
        {"200609061350Z",        "20060906135000.000Z", true},
        {"200609061351Z",        "20060906135000.000Z", false},
        {"20060906135030Z",      "20060906135030.000Z", true},
        {"20060906135030.3Z",    "20060906135030.300Z", true},
        {"20060906135030.30Z",   "20060906135030.300Z", true},
        {"20060906135030.Z",     "20060906135030.000Z", true},
        {"20060906135030.0118Z", "20060906135030.012Z", true},
        {"20060906135030+01",    "20060906125030.000Z", true},
        {"20060906135030+0101",  "20060906124930.000Z", true},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  public EqualityMatchingRule getRule()
  {
    return new GeneralizedTimeEqualityMatchingRule();
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/IntegerEqualityMatchingRuleTest.java
New file
@@ -0,0 +1,79 @@
/*
 * 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 org.opends.server.api.EqualityMatchingRule;
import org.testng.annotations.DataProvider;
/**
 * Test the IntegerEqualityMatchingRule.
 */
public class IntegerEqualityMatchingRuleTest extends EqualityMatchingRuleTest
{
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalityMatchingRuleInvalidValues")
  public Object[][] createEqualityMatchingRuleInvalidValues()
  {
    return new Object[][] {
        {"01"},
        {"00"},
        {"-01"},
        {"1-2"},
        {"b2"},
        {"-"},
        {""},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalitymatchingrules")
  public Object[][] createEqualityMatchingRuleTest()
  {
    return new Object[][] {
        {"1234567890",  "1234567890",   true},
        {"-1",          "-1",           true},
        {"-9876543210", "-9876543210", true},
        {"1",           "-1",          false},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  public EqualityMatchingRule getRule()
  {
    return new IntegerEqualityMatchingRule();
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/NumericStringEqualityMatchingRuleTest.java
New file
@@ -0,0 +1,79 @@
/*
 * 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 org.opends.server.api.EqualityMatchingRule;
import org.testng.annotations.DataProvider;
/**
 * Test the NumericStringEqualityMatchingRule.
 */
public class NumericStringEqualityMatchingRuleTest extends
    EqualityMatchingRuleTest
{
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalityMatchingRuleInvalidValues")
  public Object[][] createEqualityMatchingRuleInvalidValues()
  {
    return new Object[][] {
        {"A2B1"}
     };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalitymatchingrules")
  public Object[][] createEqualityMatchingRuleTest()
  {
    return new Object[][] {
        {"1234567890", "1234567890", true },
        {" 1234567890  ", "1234567890", true },
        /* disabled because it is currently failing
         * see issue : 707
        {" 123   4567890  ", "1234567890", false },
        */
        {"1234",       "5678",       false },
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  public EqualityMatchingRule getRule()
  {
    return new NumericStringEqualityMatchingRule();
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/PresentationAddressEqualityMatchingRuleTest.java
New file
@@ -0,0 +1,74 @@
/*
 * 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 org.opends.server.api.EqualityMatchingRule;
import org.testng.annotations.DataProvider;
/**
 * Test the PresentationAddressEqualityMatchingRule.
 * This matching rule is deprecated, tests are very basic...
 */
public class PresentationAddressEqualityMatchingRuleTest extends
    EqualityMatchingRuleTest
{
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalityMatchingRuleInvalidValues")
  public Object[][] createEqualityMatchingRuleInvalidValues()
  {
    return new Object[][] {};
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalitymatchingrules")
  public Object[][] createEqualityMatchingRuleTest()
  {
       return new Object[][] {
           {"   ", " ", true},
           {"string", "string", true},
           {"STRING", "string", true},
           {"some string", "some other string", false},
       };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  public EqualityMatchingRule getRule()
  {
    return new PresentationAddressEqualityMatchingRule();
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/ProtocolInformationEqualityMatchingRuleTest.java
New file
@@ -0,0 +1,74 @@
/*
 * 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 org.opends.server.api.EqualityMatchingRule;
import org.testng.annotations.DataProvider;
/**
 * Test the ProtocolInformationEqualityMatchingRule.
 * This matching rule is deprecated, tests are very basic...
 */
public class ProtocolInformationEqualityMatchingRuleTest extends
    EqualityMatchingRuleTest
{
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalityMatchingRuleInvalidValues")
  public Object[][] createEqualityMatchingRuleInvalidValues()
  {
    return new Object[][] {};
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalitymatchingrules")
  public Object[][] createEqualityMatchingRuleTest()
  {
    return new Object[][] {
        {"   ", " ", true},
        {"string", "string", true},
        {"STRING", "string", true},
        {"some string", "some other string", false},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  public EqualityMatchingRule getRule()
  {
    return new ProtocolInformationEqualityMatchingRule();
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/UUIDEqualityMatchingRuleTest.java
New file
@@ -0,0 +1,81 @@
/*
 * 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 org.opends.server.api.EqualityMatchingRule;
import org.testng.annotations.DataProvider;
/**
 * Test the UUIDEqualityMatchingRule.
 */
public class UUIDEqualityMatchingRuleTest extends EqualityMatchingRuleTest
{
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalityMatchingRuleInvalidValues")
  public Object[][] createEqualityMatchingRuleInvalidValues()
  {
    return new Object[][] {
        {"G2345678-9abc-def0-1234-1234567890ab"},
        {"g2345678-9abc-def0-1234-1234567890ab"},
        {"12345678/9abc/def0/1234/1234567890ab"},
        {"12345678-9abc-def0-1234-1234567890a"},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalitymatchingrules")
  public Object[][] createEqualityMatchingRuleTest()
  {
    return new Object[][] {
      {"12345678-9ABC-DEF0-1234-1234567890ab",
       "12345678-9abc-def0-1234-1234567890ab", true},
      {"12345678-9abc-def0-1234-1234567890ab",
       "12345678-9abc-def0-1234-1234567890ab", true},
      {"02345678-9abc-def0-1234-1234567890ab",
       "12345678-9abc-def0-1234-1234567890ab", false},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  public EqualityMatchingRule getRule()
  {
    return new UUIDEqualityMatchingRule();
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/UniqueMemberEqualityMatchingRuleTest.java
New file
@@ -0,0 +1,76 @@
/*
 * 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 org.opends.server.api.EqualityMatchingRule;
import org.testng.annotations.DataProvider;
/**
 * test the UniqueMemberEqualityMatchingRule.
 */
public class UniqueMemberEqualityMatchingRuleTest extends
    EqualityMatchingRuleTest
{
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalityMatchingRuleInvalidValues")
  public Object[][] createEqualityMatchingRuleInvalidValues()
  {
    return new Object[][] {
        {"1.3.6.1.4.1.1466.0=#04024869,O=Test,C=GB#'123'B"},
        {"1.3.6.1.4.1.1466.01"}
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalitymatchingrules")
  public Object[][] createEqualityMatchingRuleTest()
  {
    return new Object [][] {
        {"1.3.6.1.4.1.1466.0=#04024869,O=Test,C=GB#'0101'B",
         "1.3.6.1.4.1.1466.0=#04024869,O=Test,C=GB#'0101'B", true},
        {"1.3.6.1.4.1.1466.0=#04024869,O=Test,C=GB#'0101'B",
         "1.3.6.1.4.1.1466.0=#04024869,o=Test,C=GB#'0101'B", true},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  public EqualityMatchingRule getRule()
  {
    return new UniqueMemberEqualityMatchingRule();
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/UserPasswordEqualityMatchingRuleTest.java
New file
@@ -0,0 +1,117 @@
/*
 * 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 org.opends.server.api.EqualityMatchingRule;
import org.opends.server.config.ConfigEntry;
import org.opends.server.core.DirectoryServer;
import org.opends.server.extensions.SaltedMD5PasswordStorageScheme;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.types.ByteString;
import org.opends.server.types.DN;
import org.testng.annotations.DataProvider;
/**
 * Test the AuthPasswordEqualityMatchingRule.
 */
public class UserPasswordEqualityMatchingRuleTest extends
    EqualityMatchingRuleTest
{
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalitymatchingrules")
  public Object[][] createEqualityMatchingRuleTest()
  {
    return new Object[][] {
        {"password", "password", true},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalityMatchingRuleInvalidValues")
  public Object[][] createEqualityMatchingRuleInvalidValues()
  {
    return new Object[][] {};
  }
  private Object[] generateValues(String password) throws Exception
  {
    ByteString bytePassword = new ASN1OctetString(password);
    SaltedMD5PasswordStorageScheme scheme = new SaltedMD5PasswordStorageScheme();
    ConfigEntry configEntry =
       DirectoryServer.getConfigEntry(
           DN.decode("cn=Salted MD5,cn=Password Storage Schemes,cn=config"));
    scheme.initializePasswordStorageScheme(configEntry);
    ByteString encodedAuthPassword =
         scheme.encodePasswordWithScheme(bytePassword);
     return new Object[] {
         encodedAuthPassword.toString(), password, true};
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="valuesMatch")
  public Object[][] createValuesMatch()
  {
    try
    {
      return new Object[][] {
          generateValues("password"),
          {"password", "something else", false},
          {"password", "{wong}password", false},
          {"password", "{SMD5}wrong",    false}
      };
    }
    catch (Exception e)
    {
      return new Object[][] {};
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override
  public EqualityMatchingRule getRule()
  {
    return new UserPasswordEqualityMatchingRule();
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/WordEqualityMatchingRuleTest.java
New file
@@ -0,0 +1,80 @@
/*
 * 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 org.opends.server.api.EqualityMatchingRule;
import org.testng.annotations.DataProvider;
/**
 * Test the Word Equality Matching Rule
 */
public class WordEqualityMatchingRuleTest extends EqualityMatchingRuleTest
{
  /**
   * {@inheritDoc}
   */
  @Override
  public EqualityMatchingRule getRule()
  {
    return new WordEqualityMatchingRule();
  }
  /**
   * {@inheritDoc}
   */
  @DataProvider(name="equalitymatchingrules")
  public Object[][] createEqualityMatchingRuleTest()
  {
    return new Object[][] {
        {"first word", "first", true},
        {"first,word", "first", true},
        {"first  word", "first", true},
        {"first#word", "first", true},
        {"first.word", "first", true},
        {"first/word", "first", true},
        {"first$word", "first", true},
        {"first+word", "first", true},
        {"first-word", "first", true},
        {"first=word", "first", true},
        {"word", "first", false},
        {"", "empty", false},
        {"", "", true},
    };
  }
  /**
   * {@inheritDoc}
   */
  @Override
  @DataProvider(name="equalityMatchingRuleInvalidValues")
  public Object[][] createEqualityMatchingRuleInvalidValues()
  {
    // all values are valid, return an empty table.
    return new Object[][] {};
  }
}