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

Jean-Noël Rouvignac
24.45.2016 36ad5988b43dba78b8e2efa3aca5cff9443a93f0
GenericSchemaTestCase.java: code cleanup
1 files modified
268 ■■■■ changed files
opendj-server-legacy/src/test/java/org/opends/server/schema/GenericSchemaTestCase.java 268 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/test/java/org/opends/server/schema/GenericSchemaTestCase.java
@@ -20,7 +20,9 @@
import static org.opends.server.util.ServerConstants.*;
import java.io.File;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeSet;
@@ -51,18 +53,12 @@
   */
  @Override
  @BeforeClass
  public void setUp()
         throws Exception
  public void setUp() throws Exception
  {
    TestCaseUtils.startServer();
  }
  /**
   * Tests to ensure that all attribute syntaxes defined in the schema have
   * valid OIDs.
   */
  /** Tests to ensure that all attribute syntaxes defined in the schema have valid OIDs. */
  @Test
  public void testEnsureValidSyntaxOIDs()
  {
@@ -77,26 +73,10 @@
      }
    }
    if (! invalidOIDs.isEmpty())
    {
      StringBuilder message = new StringBuilder();
      message.append("All attribute syntaxes defined in OpenDS must have valid OIDs assigned.").append(EOL);
      message.append("Attribute syntaxes without valid OIDs:").append(EOL);
      for (String s : invalidOIDs)
      {
        message.append("- ").append(s).append(EOL);
    throwIfInvalidOidsExist("attribute syntaxes", invalidOIDs);
      }
      throw new AssertionError(message.toString());
    }
  }
  /**
   * Tests to ensure that all matching rules defined in the schema have valid
   * OIDs.
   */
  /** Tests to ensure that all matching rules defined in the schema have valid OIDs. */
  @Test
  public void testEnsureValidMatchingRuleOIDs()
  {
@@ -111,28 +91,11 @@
      }
    }
    if (! invalidOIDs.isEmpty())
    {
      StringBuilder message = new StringBuilder();
      message.append("All matching rules defined in OpenDS must have valid ").append("OIDs assigned.");
      message.append(EOL);
      message.append("Matching rules without valid OIDs:");
      message.append(EOL);
      for (String s : invalidOIDs)
      {
        message.append("- ").append(s);
        message.append(EOL);
    throwIfInvalidOidsExist("matching rules", invalidOIDs);
      }
      throw new AssertionError(message.toString());
    }
  }
  /**
   * Tests to ensure that all attribute types defined in the schema have valid
   * OIDs.
   * Tests to ensure that all attribute types defined in the schema have valid OIDs.
   *
   * @throws  Exception  If an unexpected problem occurs.
   */
@@ -142,35 +105,9 @@
  {
    TreeSet<String> invalidOIDs = new TreeSet<>();
    String buildRoot = System.getProperty(TestCaseUtils.PROPERTY_BUILD_ROOT);
    File schemaDir = new File(new File(buildRoot, "resource"), "schema");
    for (File f : schemaDir.listFiles())
    for (File f : getSchemaFiles())
    {
      if (! f.getName().toLowerCase().endsWith(".ldif"))
      {
        // This could be some other kind of file, like ".svn".
        continue;
      }
      LDIFImportConfig importConfig = new LDIFImportConfig(f.getAbsolutePath());
      LDIFReader reader = new LDIFReader(importConfig);
      Entry e = reader.readEntry();
      reader.close();
      if (e == null)
      {
        // An empty schema file.  This is OK.
        continue;
      }
      List<Attribute> attrList = e.getAttribute(getAttributeTypesAttributeType());
      if (attrList.isEmpty())
      {
        // No attribute types in the schema file.  This is OK.
        continue;
      }
      for (Attribute a : attrList)
      for (Attribute a : getAttributesFromSchemaFile(f, getAttributeTypesAttributeType()))
      {
        for (ByteString v : a)
        {
@@ -183,30 +120,14 @@
      }
    }
    if (! invalidOIDs.isEmpty())
    {
      StringBuilder message = new StringBuilder();
      message.append("All attribute types defined in OpenDS must have valid ").append("OIDs assigned.");
      message.append(EOL);
      message.append("Attribute types without valid OIDs:");
      message.append(EOL);
      for (String s : invalidOIDs)
      {
        message.append("- ").append(s);
        message.append(EOL);
    throwIfInvalidOidsExist("attribute types", invalidOIDs);
      }
      throw new AssertionError(message.toString());
    }
  }
  /**
   * Tests to ensure that all object classes defined in the schema have valid
   * OIDs.
   * Tests to ensure that all object classes defined in the schema have valid OIDs.
   *
   * @throws  Exception  If an unexpected problem occurs.
   * @throws Exception
   *           If an unexpected problem occurs.
   */
  @Test
  public void testEnsureValidObjectClassOIDs()
@@ -214,36 +135,9 @@
  {
    TreeSet<String> invalidOIDs = new TreeSet<>();
    String buildRoot = System.getProperty(TestCaseUtils.PROPERTY_BUILD_ROOT);
    File schemaDir = new File(new File(buildRoot, "resource"), "schema");
    for (File f : schemaDir.listFiles())
    for (File f : getSchemaFiles())
    {
      if (! f.getName().toLowerCase().endsWith(".ldif"))
      {
        // This could be some other kind of file, like ".svn".
        continue;
      }
      LDIFImportConfig importConfig = new LDIFImportConfig(f.getAbsolutePath());
      Entry e;
      try (LDIFReader reader = new LDIFReader(importConfig))
      {
        e = reader.readEntry();
        if (e == null)
        {
          // An empty schema file. This is OK.
          continue;
        }
      }
      List<Attribute> attrList = e.getAttribute("objectclasses");
      if (attrList.isEmpty())
      {
        // No attribute types in the schema file.  This is OK.
        continue;
      }
      for (Attribute a : attrList)
      for (Attribute a : getAttributesFromSchemaFile(f, getObjectClassesAttributeType()))
      {
        for (ByteString v : a)
        {
@@ -256,20 +150,8 @@
      }
    }
    if (! invalidOIDs.isEmpty())
    {
      StringBuilder message = new StringBuilder()
          .append("All object classes defined in OpenDJ must have valid OIDs assigned.").append(EOL)
          .append("Object classes without valid OIDs:").append(EOL);
      for (String s : invalidOIDs)
      {
        message.append("- ").append(s).append(EOL);
    throwIfInvalidOidsExist("object classes", invalidOIDs);
      }
      throw new AssertionError(message.toString());
    }
  }
  /**
   * Tests to ensure that all name forms defined in the schema have valid OIDs.
@@ -282,35 +164,9 @@
  {
    TreeSet<String> invalidOIDs = new TreeSet<>();
    String buildRoot = System.getProperty(TestCaseUtils.PROPERTY_BUILD_ROOT);
    File schemaDir = new File(new File(buildRoot, "resource"), "schema");
    for (File f : schemaDir.listFiles())
    for (File f : getSchemaFiles())
    {
      if (! f.getName().toLowerCase().endsWith(".ldif"))
      {
        // This could be some other kind of file, like ".svn".
        continue;
      }
      LDIFImportConfig importConfig = new LDIFImportConfig(f.getAbsolutePath());
      LDIFReader reader = new LDIFReader(importConfig);
      Entry e = reader.readEntry();
      reader.close();
      if (e == null)
      {
        // An empty schema file.  This is OK.
        continue;
      }
      List<Attribute> attrList = e.getAttribute(getNameFormsAttributeType());
      if (attrList.isEmpty())
      {
        // No attribute types in the schema file.  This is OK.
        continue;
      }
      for (Attribute a : attrList)
      for (Attribute a : getAttributesFromSchemaFile(f, getNameFormsAttributeType()))
      {
        for (ByteString v : a)
        {
@@ -323,25 +179,55 @@
      }
    }
    if (! invalidOIDs.isEmpty())
    {
      StringBuilder message = new StringBuilder();
      message.append("All name forms defined in OpenDS must have valid OIDs ").append("assigned.");
      message.append(EOL);
      message.append("Name forms without valid OIDs:");
      message.append(EOL);
      for (String s : invalidOIDs)
      {
        message.append("- ").append(s);
        message.append(EOL);
    throwIfInvalidOidsExist("name forms", invalidOIDs);
      }
  private File[] getSchemaFiles()
  {
    String buildRoot = System.getProperty(TestCaseUtils.PROPERTY_BUILD_ROOT);
    File schemaDir = new File(new File(buildRoot, "resource"), "schema");
    return schemaDir.listFiles();
  }
  private List<Attribute> getAttributesFromSchemaFile(File f, AttributeType attributeType) throws Exception
  {
    Entry e = readSchemaEntry(f);
    return e != null
        ? e.getAttribute(attributeType)
        // An empty schema file. This is OK.
        : Collections.<Attribute> emptyList();
  }
  private Entry readSchemaEntry(File f) throws Exception
  {
    if (!f.getName().toLowerCase().endsWith(".ldif"))
    {
      // This could be some other kind of file, like ".svn".
      return null;
    }
    LDIFImportConfig importConfig = new LDIFImportConfig(f.getAbsolutePath());
    try (LDIFReader reader = new LDIFReader(importConfig))
    {
      return reader.readEntry();
    }
  }
  private void throwIfInvalidOidsExist(String elementType, Set<String> invalidOIDs) throws AssertionError
  {
    if (! invalidOIDs.isEmpty())
    {
      StringBuilder message = new StringBuilder()
          .append("All ").append(elementType).append(" defined in OpenDJ must have valid OIDs assigned." + EOL)
          .append(elementType).append(" without valid OIDs:" + EOL);
      for (String oid : invalidOIDs)
      {
        message.append("- ").append(oid).append(EOL);
      }
      throw new AssertionError(message.toString());
    }
  }
  /**
   * Indicates whether the string represents a valid numeric OID.
   *
@@ -352,27 +238,13 @@
   */
  private boolean isNumericOID(String oid)
  {
    // It must not be null, and it must not be empty.
    if (oid == null || oid.length() == 0)
    {
      return false;
    }
    // It must start and end with numeric digits.
    if (!Character.isDigit(oid.charAt(0)) ||
        !Character.isDigit(oid.charAt(oid.length()-1)))
    {
      return false;
    }
    if (oid == null
        || oid.isEmpty()
        || !startsAndEndsWithDigit(oid)
    // It must contain at least one period.
    if (!oid.contains("."))
    {
      return false;
    }
        || !oid.contains(".")
    // It must not contain any double periods.
    if (oid.contains(".."))
        || oid.contains(".."))
    {
      return false;
    }
@@ -394,5 +266,9 @@
    // If we've gotten here, then it should be a valid numeric OID.
    return true;
  }
}
  private boolean startsAndEndsWithDigit(String oid)
  {
    return Character.isDigit(oid.charAt(0)) && Character.isDigit(oid.charAt(oid.length() - 1));
  }
}