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

Matthew Swift
27.18.2011 7306b37ae8ea170aa32c92b63b2d384d3f87e2d8
Unit tests for OPENDJ-217: Unpredictable failures during schema validation using SDK

Several tests are disabled because they are currently failing.
1 files modified
260 ■■■■■ changed files
opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/schema/SchemaBuilderTest.java 260 ●●●●● patch | view | raw | blame | history
opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/schema/SchemaBuilderTest.java
@@ -29,9 +29,9 @@
import static org.fest.assertions.Assertions.assertThat;
import static org.fest.assertions.Fail.fail;
import org.forgerock.opendj.ldap.schema.Schema;
import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.forgerock.i18n.LocalizedIllegalArgumentException;
import org.testng.annotations.Test;
@@ -43,17 +43,263 @@
{
  /**
   * Tests that schema validation resolves dependencies between parent/child
   * attribute types regardless of the order in which they were added.
   */
  @Test(enabled = false)
  public void testAttributeTypeDependenciesChildThenParent()
  {
    final Schema schema = new SchemaBuilder(Schema.getCoreSchema())
        .addAttributeType("( childtype-oid NAME 'childtype' SUP parenttype )",
            false)
        .addAttributeType(
            "( parenttype-oid NAME 'parenttype' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )",
            false).toSchema();
    assertThat(schema.getAttributeType("childtype").getSyntax()).isNotNull();
    assertThat(schema.getAttributeType("childtype").getSyntax().getOID())
        .isEqualTo("1.3.6.1.4.1.1466.115.121.1.15");
  }
  /**
   * Tests that schema validation resolves dependencies between parent/child
   * attribute types regardless of the order in which they were added.
   */
  @Test
  public void testAttributeTypeDependenciesParentThenChild()
  {
    final Schema schema = new SchemaBuilder(Schema.getCoreSchema())
        .addAttributeType(
            "( parenttype-oid NAME 'parenttype' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )",
            false)
        .addAttributeType("( childtype-oid NAME 'childtype' SUP parenttype )",
            false).toSchema();
    assertThat(schema.getAttributeType("childtype").getSyntax()).isNotNull();
    assertThat(schema.getAttributeType("childtype").getSyntax().getOID())
        .isEqualTo("1.3.6.1.4.1.1466.115.121.1.15");
  }
  /**
   * Tests that attribute types must have a syntax or a superior.
   */
  @Test(enabled = false, expectedExceptions = LocalizedIllegalArgumentException.class)
  public void testAttributeTypeNoSuperiorNoSyntax()
  {
    new SchemaBuilder(Schema.getCoreSchema()).addAttributeType(
        "( parenttype-oid NAME 'parenttype' )", false);
  }
  /**
   * Tests that schema validation handles validation failures for superior
   * attribute types regardless of the order.
   */
  @Test(enabled = false)
  public void testAttributeTypeSuperiorFailureChildThenParent()
  {
    final Schema schema = new SchemaBuilder(Schema.getCoreSchema())
        .addAttributeType("( childtype-oid NAME 'childtype' SUP parenttype )",
            false)
        .addAttributeType("( parenttype-oid NAME 'parenttype' SUP xxx )", false)
        .toSchema();
    try
    {
      schema.getAttributeType("childtype");
      fail("childtype should not be in the schema because its parent is invalid");
    }
    catch (final UnknownSchemaElementException e)
    {
      // Expected.
    }
    try
    {
      schema.getAttributeType("parenttype");
      fail("parenttype should not be in the schema because it is invalid");
    }
    catch (final UnknownSchemaElementException e)
    {
      // Expected.
    }
  }
  /**
   * Tests that schema validation handles validation failures for superior
   * attribute types regardless of the order.
   */
  @Test
  public void testAttributeTypeSuperiorFailureParentThenChild()
  {
    final Schema schema = new SchemaBuilder(Schema.getCoreSchema())
        .addAttributeType("( parenttype-oid NAME 'parenttype' SUP xxx )", false)
        .addAttributeType("( childtype-oid NAME 'childtype' SUP parenttype )",
            false).toSchema();
    try
    {
      schema.getAttributeType("childtype");
      fail("childtype should not be in the schema because its parent is invalid");
    }
    catch (final UnknownSchemaElementException e)
    {
      // Expected.
    }
    try
    {
      schema.getAttributeType("parenttype");
      fail("parenttype should not be in the schema because it is invalid");
    }
    catch (final UnknownSchemaElementException e)
    {
      // Expected.
    }
  }
  /**
   * Test for OPENDJ-156: Errors when parsing collective attribute definitions.
   */
  @Test
  public void testCollectiveAttribute()
  {
    SchemaBuilder builder = new SchemaBuilder(Schema.getCoreSchema());
    builder
    final Schema schema = new SchemaBuilder(Schema.getCoreSchema())
        .addAttributeType(
            "( 2.5.4.11.1 NAME 'c-ou' SUP ou SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 COLLECTIVE X-ORIGIN 'RFC 3671' )",
            false);
    Schema schema = builder.toSchema();
            "( 2.5.4.11.1 NAME 'c-ou' "
                + "SUP ou SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 "
                + "COLLECTIVE X-ORIGIN 'RFC 3671' )", false).toSchema();
    assertThat(schema.getWarnings()).isEmpty();
  }
  /**
   * Tests that schema validation resolves dependencies between parent/child
   * object classes regardless of the order in which they were added.
   */
  @Test
  public void testObjectClassDependenciesChildThenParent()
  {
    final Schema schema = new SchemaBuilder(Schema.getCoreSchema())
        .addObjectClass(
            "( childtype-oid NAME 'childtype' SUP parenttype STRUCTURAL MUST sn )",
            false)
        .addObjectClass(
            "( parenttype-oid NAME 'parenttype' SUP top STRUCTURAL MUST cn )",
            false).toSchema();
    final AttributeType cn = schema.getAttributeType("cn");
    final AttributeType sn = schema.getAttributeType("sn");
    assertThat(schema.getObjectClass("childtype").isRequired(cn)).isTrue();
    assertThat(schema.getObjectClass("childtype").isRequired(sn)).isTrue();
  }
  /**
   * Tests that schema validation resolves dependencies between parent/child
   * object classes regardless of the order in which they were added.
   */
  @Test
  public void testObjectClassDependenciesParentThenChild()
  {
    final Schema schema = new SchemaBuilder(Schema.getCoreSchema())
        .addObjectClass(
            "( parenttype-oid NAME 'parenttype' SUP top STRUCTURAL MUST cn )",
            false)
        .addObjectClass(
            "( childtype-oid NAME 'childtype' SUP parenttype STRUCTURAL MUST sn )",
            false).toSchema();
    final AttributeType cn = schema.getAttributeType("cn");
    final AttributeType sn = schema.getAttributeType("sn");
    assertThat(schema.getObjectClass("childtype").isRequired(cn)).isTrue();
    assertThat(schema.getObjectClass("childtype").isRequired(sn)).isTrue();
  }
  /**
   * Tests that schema validation handles validation failures for superior
   * object classes regardless of the order.
   */
  @Test(enabled = false)
  public void testObjectClassSuperiorFailureChildThenParent()
  {
    final Schema schema = new SchemaBuilder(Schema.getCoreSchema())
        .addObjectClass(
            "( childtype-oid NAME 'childtype' SUP parenttype STRUCTURAL MUST sn )",
            false)
        .addObjectClass(
            "( parenttype-oid NAME 'parenttype' SUP top STRUCTURAL MUST xxx )",
            false).toSchema();
    try
    {
      schema.getObjectClass("childtype");
      fail("childtype should not be in the schema because its parent is invalid");
    }
    catch (final UnknownSchemaElementException e)
    {
      // Expected.
    }
    try
    {
      schema.getObjectClass("parenttype");
      fail("parenttype should not be in the schema because it is invalid");
    }
    catch (final UnknownSchemaElementException e)
    {
      // Expected.
    }
  }
  /**
   * Tests that schema validation handles validation failures for superior
   * object classes regardless of the order.
   */
  @Test
  public void testObjectClassSuperiorFailureParentThenChild()
  {
    final Schema schema = new SchemaBuilder(Schema.getCoreSchema())
        .addObjectClass(
            "( parenttype-oid NAME 'parenttype' SUP top STRUCTURAL MUST xxx )",
            false)
        .addObjectClass(
            "( childtype-oid NAME 'childtype' SUP parenttype STRUCTURAL MUST sn )",
            false).toSchema();
    try
    {
      schema.getObjectClass("childtype");
      fail("childtype should not be in the schema because its parent is invalid");
    }
    catch (final UnknownSchemaElementException e)
    {
      // Expected.
    }
    try
    {
      schema.getObjectClass("parenttype");
      fail("parenttype should not be in the schema because it is invalid");
    }
    catch (final UnknownSchemaElementException e)
    {
      // Expected.
    }
  }
}