From 47297cb5cbf95ece24fad64056a88043b743961e Mon Sep 17 00:00:00 2001
From: Violette Roche-Montane <violette.roche-montane@forgerock.com>
Date: Tue, 20 Nov 2012 16:11:45 +0000
Subject: [PATCH] - add new tests.
---
opendj-sdk/opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/schema/NameFormTestCase.java | 683 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 683 insertions(+), 0 deletions(-)
diff --git a/opendj-sdk/opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/schema/NameFormTestCase.java b/opendj-sdk/opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/schema/NameFormTestCase.java
new file mode 100644
index 0000000..db135f6
--- /dev/null
+++ b/opendj-sdk/opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/schema/NameFormTestCase.java
@@ -0,0 +1,683 @@
+/*
+ * 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 legal-notices/CDDLv1_0.txt
+ * or http://forgerock.org/license/CDDLv1.0.html.
+ * 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 legal-notices/CDDLv1_0.txt.
+ * 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 2012 ForgeRock AS.
+ */
+
+package org.forgerock.opendj.ldap.schema;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+import static org.fest.assertions.Assertions.assertThat;
+
+import org.forgerock.i18n.LocalizableMessage;
+import org.testng.annotations.Test;
+
+/**
+ * This class tests the NameForm class.
+ */
+@SuppressWarnings("javadoc")
+public class NameFormTestCase extends SchemaTestCase {
+
+ /**
+ * NameForm doesn't allow null OID.
+ */
+ @Test(expectedExceptions = NullPointerException.class)
+ public final void testCreateFormDoesntAllowNullOid() {
+
+ // The set of user defined names for this definition.
+ List<String> names = new ArrayList<String>();
+ names.add("MyNewForm");
+ names.add("TheNewForm");
+
+ // An optional set of extensions for the name form ( X-ORIGIN / X-SCHEMA-FILE)
+ Map<String, List<String>> extraProperties = new TreeMap<String, List<String>>();
+ List<String> extra = new ArrayList<String>();
+ extra.add("EntrySchemaCheckingTestCase");
+ extraProperties.put("X-ORIGIN", extra);
+
+ // The set of required attribute types for this name form.
+ Set<String> requiredAttributeOIDs = new TreeSet<String>();
+ requiredAttributeOIDs.add("sn");
+ requiredAttributeOIDs.add("cn");
+
+ // @formatter:off
+ new NameForm(null, names, "Description of the new form", false,
+ "mynewform-oid", requiredAttributeOIDs, Collections.<String> emptySet(), extraProperties, null);
+ // @formatter:on
+ }
+
+ /**
+ * NameForm doesn't allow null structuralClassOID.
+ */
+ @Test(expectedExceptions = NullPointerException.class)
+ public final void testCreateFormDoesntAllowNullStructuralClassOID() {
+
+ // The set of user defined names for this definition.
+ List<String> names = new ArrayList<String>();
+ names.add("MyNewForm");
+ names.add("TheNewForm");
+
+ // An optional set of extensions for the name form ( X-ORIGIN / X-SCHEMA-FILE)
+ Map<String, List<String>> extraProperties = new TreeMap<String, List<String>>();
+ List<String> extra = new ArrayList<String>();
+ names.add("EntrySchemaCheckingTestCase");
+ extraProperties.put("X-ORIGIN", extra);
+
+ // The set of required attribute types for this name form.
+ Set<String> requiredAttributeOIDs = new TreeSet<String>();
+ requiredAttributeOIDs.add("sn");
+ requiredAttributeOIDs.add("cn");
+
+ // @formatter:off
+ new NameForm("mynewform-oid", names, "Description of the new form", false,
+ null, requiredAttributeOIDs, Collections.<String> emptySet(), extraProperties, null);
+ // @formatter:on
+ }
+
+ /**
+ * NameForm doesn't allow null requiredAttributeOIDs.
+ */
+ @Test(expectedExceptions = NullPointerException.class)
+ public final void testCreateFormDoesntAllowNullRequiredAttributeOIDs() {
+
+ // The set of user defined names for this definition.
+ List<String> names = new ArrayList<String>();
+ names.add("MyNewForm");
+ names.add("TheNewForm");
+
+ // An optional set of extensions for the name form ( X-ORIGIN / X-SCHEMA-FILE)
+ Map<String, List<String>> extraProperties = new TreeMap<String, List<String>>();
+ List<String> extra = new ArrayList<String>();
+ extra.add("EntrySchemaCheckingTestCase");
+ extraProperties.put("X-ORIGIN", extra);
+
+ // The set of required attribute types for this name form.
+ Set<String> requiredAttributeOIDs = new TreeSet<String>();
+ requiredAttributeOIDs.add("sn");
+ requiredAttributeOIDs.add("cn");
+
+ // @formatter:off
+ new NameForm("mynewform-oid", names, "Description of the new form", false,
+ "mynewform-oid", null, Collections.<String> emptySet(), extraProperties, null);
+ // @formatter:on
+ }
+
+ /**
+ * NameForm doesn't allow null requiredAttributeOIDs.
+ */
+ @Test(expectedExceptions = IllegalArgumentException.class)
+ public final void testCreateFormDoesntAllowEmptyRequiredAttributeOIDs() {
+
+ // The set of user defined names for this definition.
+ List<String> names = new ArrayList<String>();
+ names.add("MyNewForm");
+ names.add("TheNewForm");
+
+ // An optional set of extensions for the name form ( X-ORIGIN / X-SCHEMA-FILE)
+ Map<String, List<String>> extraProperties = new TreeMap<String, List<String>>();
+ List<String> extra = new ArrayList<String>();
+ extra.add("EntrySchemaCheckingTestCase");
+ extraProperties.put("X-ORIGIN", extra);
+
+ // The set of required attribute types for this name form.
+ Set<String> requiredAttributeOIDs = new TreeSet<String>();
+
+ // @formatter:off
+ new NameForm("mynewform-oid", names, "Description of the new form", false,
+ "mynewform-oid", requiredAttributeOIDs, Collections.<String> emptySet(), extraProperties, null);
+ // @formatter:on
+ }
+
+ /**
+ * NameForm doesn't allow null requiredAttributeOIDs.
+ */
+ @Test(expectedExceptions = NullPointerException.class)
+ public final void testCreateFormDoesntAllowNullOptionalAttributeOIDs() {
+
+ // The set of user defined names for this definition.
+ List<String> names = new ArrayList<String>();
+ names.add("MyNewForm");
+ names.add("TheNewForm");
+
+ // An optional set of extensions for the name form ( X-ORIGIN / X-SCHEMA-FILE)
+ Map<String, List<String>> extraProperties = new TreeMap<String, List<String>>();
+ List<String> extra = new ArrayList<String>();
+ extra.add("EntrySchemaCheckingTestCase");
+ extraProperties.put("X-ORIGIN", extra);
+
+ // The set of required attribute types for this name form.
+ Set<String> requiredAttributeOIDs = new TreeSet<String>();
+ requiredAttributeOIDs.add("sn");
+ requiredAttributeOIDs.add("cn");
+
+ // @formatter:off
+ new NameForm("mynewform-oid", names, "Description of the new form", false,
+ "mynewform-oid", requiredAttributeOIDs, null, extraProperties, null);
+ // @formatter:on
+ }
+
+ /**
+ * Create a new form and compare the result as string with the expected
+ * usual form.
+ */
+ @Test()
+ public final void testCreateNewFormWithUniqueName() {
+
+ // The set of user defined names for this definition.
+ List<String> names = new ArrayList<String>();
+ names.add("MyNewForm");
+
+ // An optional set of extensions for the name form ( X-ORIGIN / X-SCHEMA-FILE)
+ Map<String, List<String>> extraProperties = new TreeMap<String, List<String>>();
+ List<String> extra = new ArrayList<String>();
+ extra.add("EntrySchemaCheckingTestCase");
+ extraProperties.put("X-ORIGIN", extra);
+
+ // The set of required attribute types for this name form.
+ Set<String> requiredAttributeOIDs = new TreeSet<String>();
+ requiredAttributeOIDs.add("sn");
+ requiredAttributeOIDs.add("cn");
+
+ // @formatter:off
+ NameForm nf = new NameForm("mynewform-oid", names, "Description of the new form", false,
+ "mynewform-oid", requiredAttributeOIDs, Collections.<String> emptySet(), extraProperties, null);
+
+ assertThat(nf.hasName("MyNewForm")).isTrue();
+ assertThat(nf.getOID().toString()).isEqualTo("mynewform-oid");
+
+ assertThat(nf.toString()).isEqualTo(
+ "( mynewform-oid NAME 'MyNewForm' DESC 'Description of the new form'"
+ + " OC mynewform-oid MUST ( cn $ sn ) X-ORIGIN 'EntrySchemaCheckingTestCase' )");
+ // @formatter:on
+ }
+
+ /**
+ * Create a new form without name(s).
+ */
+ @Test()
+ public final void testCreateNewFormWithOnlyOid() {
+
+ // An optional set of extensions for the name form ( X-ORIGIN / X-SCHEMA-FILE)
+ Map<String, List<String>> extraProperties = new TreeMap<String, List<String>>();
+ List<String> extra = new ArrayList<String>();
+ extra.add("EntrySchemaCheckingTestCase");
+ extraProperties.put("X-ORIGIN", extra);
+
+ // The set of required attribute types for this name form.
+ Set<String> requiredAttributeOIDs = new TreeSet<String>();
+ requiredAttributeOIDs.add("sn");
+ requiredAttributeOIDs.add("cn");
+
+ // @formatter:off
+ NameForm nf = new NameForm("1.3.6.1.4.1.1466.115.121.1.35", new ArrayList<String>(),
+ "Description of the new form", false, "mynewform-oid", requiredAttributeOIDs,
+ Collections.<String> emptySet(), extraProperties, null);
+
+ assertThat(nf.hasName("hasAName ?")).isFalse();
+ assertThat(nf.getNameOrOID()).isEqualTo("1.3.6.1.4.1.1466.115.121.1.35");
+ assertThat(nf.getOID()).isEqualTo("1.3.6.1.4.1.1466.115.121.1.35");
+
+ assertThat(nf.toString()).isEqualTo(
+ "( 1.3.6.1.4.1.1466.115.121.1.35 DESC 'Description of the new form'"
+ + " OC mynewform-oid MUST ( cn $ sn ) X-ORIGIN 'EntrySchemaCheckingTestCase' )");
+ // @formatter:on
+ }
+
+ /**
+ * Create a new form and compare the result as string with the expected
+ * usual form.
+ */
+ @Test()
+ public final void testCreateNewForm() {
+
+ // The set of user defined names for this definition.
+ List<String> names = new ArrayList<String>();
+ names.add("MyNewForm");
+ names.add("TheNewForm");
+
+ // An optional set of extensions for the name form ( X-ORIGIN / X-SCHEMA-FILE)
+ Map<String, List<String>> extraProperties = new TreeMap<String, List<String>>();
+ List<String> extra = new ArrayList<String>();
+ extra.add("EntrySchemaCheckingTestCase");
+ extraProperties.put("X-ORIGIN", extra);
+
+ // The set of required attribute types for this name form.
+ Set<String> requiredAttributeOIDs = new TreeSet<String>();
+ requiredAttributeOIDs.add("sn");
+ requiredAttributeOIDs.add("cn");
+
+ // @formatter:off
+ NameForm nf = new NameForm("mynewform-oid", names, "Description of the new form", false,
+ "mynewform-oid", requiredAttributeOIDs, Collections.<String> emptySet(),
+ extraProperties, null);
+
+ assertThat(nf.toString()).isEqualTo(
+ "( mynewform-oid NAME ( 'MyNewForm' 'TheNewForm' )"
+ + " DESC 'Description of the new form' OC mynewform-oid"
+ + " MUST ( cn $ sn ) X-ORIGIN 'EntrySchemaCheckingTestCase' )");
+ // @formatter:on
+ }
+
+ /**
+ * Create a new form and compare the result as string with the expected
+ * usual form.
+ */
+ @Test()
+ public final void testCreateNewFormWithOptionalAttributesOid() {
+
+ // The set of user defined names for this definition.
+ List<String> names = new ArrayList<String>();
+ names.add("MyNewForm");
+
+ // An optional set of extensions for the name form ( X-ORIGIN / X-SCHEMA-FILE)
+ Map<String, List<String>> extraProperties = new TreeMap<String, List<String>>();
+ List<String> extra = new ArrayList<String>();
+ extra.add("EntrySchemaCheckingTestCase");
+ extraProperties.put("X-ORIGIN", extra);
+
+ // The set of required attribute types for this name form.
+ Set<String> requiredAttributeOIDs = new TreeSet<String>();
+ requiredAttributeOIDs.add("sn");
+ requiredAttributeOIDs.add("cn");
+
+ Set<String> optionalAttributeOIDs = new TreeSet<String>();
+ optionalAttributeOIDs.add("description");
+ optionalAttributeOIDs.add("uid");
+
+ // @formatter:off
+ NameForm nf = new NameForm("mynewform-oid", names, "Description of the new form", false,
+ "mynewform-oid", requiredAttributeOIDs, optionalAttributeOIDs, extraProperties, null);
+
+ assertThat(nf.toString()).isEqualTo(
+ "( mynewform-oid NAME 'MyNewForm' DESC 'Description of the new form'"
+ + " OC mynewform-oid MUST ( cn $ sn )"
+ + " MAY ( description $ uid )"
+ + " X-ORIGIN 'EntrySchemaCheckingTestCase' )");
+ // @formatter:on
+ }
+
+ /**
+ * Adds a new form which is containing an OID not provided by the schema.
+ * Exception expected : The name form description "MyNewForm" is associated
+ * with a structural object class "mynewform-oid" which is not defined in
+ * the schema.
+ *
+ * @throws SchemaException
+ */
+ @Test(expectedExceptions = SchemaException.class)
+ public final void testNameFormValidateDoesntAllowUnknowNewStructuralObject()
+ throws SchemaException {
+
+ // The set of user defined names for this definition.
+ List<String> names = new ArrayList<String>();
+ names.add("MyNewForm");
+ names.add("TheNewForm");
+
+ // An optional set of extensions for the name form ( X-ORIGIN / X-SCHEMA-FILE)
+ Map<String, List<String>> extraProperties = new TreeMap<String, List<String>>();
+ List<String> extra = new ArrayList<String>();
+ extra.add("EntrySchemaCheckingTestCase");
+ extraProperties.put("X-ORIGIN", extra);
+
+ // The set of required attribute types for this name form.
+ Set<String> requiredAttributeOIDs = new TreeSet<String>();
+ requiredAttributeOIDs.add("sn");
+ requiredAttributeOIDs.add("cn");
+
+ Set<String> optionalAttributeOIDs = new TreeSet<String>();
+ optionalAttributeOIDs.add("description");
+ optionalAttributeOIDs.add("uid");
+
+ // @formatter:off
+ NameForm nf1 = new NameForm("mynewform-oid", names, "Description of the new form", false,
+ "mynewform-oid", requiredAttributeOIDs, optionalAttributeOIDs, extraProperties, null);
+
+ assertThat(nf1.toString()).isEqualTo(
+ "( mynewform-oid NAME ( 'MyNewForm' 'TheNewForm' )"
+ + " DESC 'Description of the new form'"
+ + " OC mynewform-oid"
+ + " MUST ( cn $ sn )"
+ + " MAY ( description $ uid )"
+ + " X-ORIGIN 'EntrySchemaCheckingTestCase' )");
+ // @formatter:on
+
+ List<LocalizableMessage> warnings = new ArrayList<LocalizableMessage>();
+ nf1.validate(Schema.getDefaultSchema(), warnings);
+ }
+
+ /**
+ * Validate a nameForm using an abstract object class instead of an
+ * structural object class throws an error.
+ *
+ * @throws SchemaException
+ */
+ @Test(expectedExceptions = SchemaException.class)
+ public final void testNameFormValidateDoesntAllowAbstractObjectClass() throws SchemaException {
+
+ // The set of user defined names for this definition.
+ List<String> names = new ArrayList<String>();
+ names.add("MyNewForm");
+ names.add("TheNewForm");
+
+ // An optional set of extensions for the name form ( X-ORIGIN / X-SCHEMA-FILE)
+ Map<String, List<String>> extraProperties = new TreeMap<String, List<String>>();
+ List<String> extra = new ArrayList<String>();
+ extra.add("EntrySchemaCheckingTestCase");
+ extraProperties.put("X-ORIGIN", extra);
+
+ // The set of required attribute types for this name form.
+ Set<String> requiredAttributeOIDs = new TreeSet<String>();
+ requiredAttributeOIDs.add("sn");
+ requiredAttributeOIDs.add("cn");
+
+ Set<String> optionalAttributeOIDs = new TreeSet<String>();
+ optionalAttributeOIDs.add("description");
+ optionalAttributeOIDs.add("uid");
+
+ // @formatter:off
+ NameForm nf1 = new NameForm("mynewform-oid", names, "Description of the new form", false,
+ "top", requiredAttributeOIDs, optionalAttributeOIDs, extraProperties, null);
+
+ assertThat(nf1.toString()).isEqualTo(
+ "( mynewform-oid NAME ( 'MyNewForm' 'TheNewForm' )"
+ + " DESC 'Description of the new form'"
+ + " OC top"
+ + " MUST ( cn $ sn )"
+ + " MAY ( description $ uid )"
+ + " X-ORIGIN 'EntrySchemaCheckingTestCase' )");
+ // @formatter:on
+
+ List<LocalizableMessage> warnings = new ArrayList<LocalizableMessage>();
+ nf1.validate(Schema.getDefaultSchema(), warnings);
+ }
+
+ /**
+ * Validate a new form without warnings.
+ *
+ * @throws SchemaException
+ */
+ @Test()
+ public final void testNameFormValidate() throws SchemaException {
+
+ // The set of user defined names for this definition.
+ List<String> names = new ArrayList<String>();
+ names.add("MyNewForm");
+ names.add("TheNewForm");
+
+ // An optional set of extensions for the name form ( X-ORIGIN / X-SCHEMA-FILE)
+ Map<String, List<String>> extraProperties = new TreeMap<String, List<String>>();
+ List<String> extra = new ArrayList<String>();
+ extra.add("EntrySchemaCheckingTestCase");
+ extraProperties.put("X-ORIGIN", extra);
+
+ // The set of required attribute types for this name form.
+ Set<String> requiredAttributeOIDs = new TreeSet<String>();
+ requiredAttributeOIDs.add("sn");
+ requiredAttributeOIDs.add("cn");
+
+ Set<String> optionalAttributeOIDs = new TreeSet<String>();
+ optionalAttributeOIDs.add("description");
+ optionalAttributeOIDs.add("uid");
+
+ // @formatter:off
+ NameForm nf1 = new NameForm("1.3.6.1.4.1.1466.115.121.1.35", names, "Description of the new form", false,
+ "person", requiredAttributeOIDs, optionalAttributeOIDs, extraProperties, null);
+
+ assertThat(nf1.toString()).isEqualTo(
+ "( 1.3.6.1.4.1.1466.115.121.1.35 NAME ( 'MyNewForm' 'TheNewForm' )"
+ + " DESC 'Description of the new form'"
+ // Structural Object class, contained in the core schema:
+ + " OC person"
+ + " MUST ( cn $ sn )"
+ + " MAY ( description $ uid )"
+ + " X-ORIGIN 'EntrySchemaCheckingTestCase' )");
+ // @formatter:on
+
+ List<LocalizableMessage> warnings = new ArrayList<LocalizableMessage>();
+ nf1.validate(Schema.getCoreSchema(), warnings);
+
+ assertThat(warnings).isEmpty();
+ }
+
+ /**
+ * Compare two same nameForm using the equal function.
+ */
+ @Test()
+ public final void testNameFormEqualsTrue() {
+
+ // The set of user defined names for this definition.
+ List<String> names = new ArrayList<String>();
+ names.add("MyNewForm");
+ names.add("TheNewForm");
+
+ // An optional set of extensions for the name form ( X-ORIGIN / X-SCHEMA-FILE)
+ Map<String, List<String>> extraProperties = new TreeMap<String, List<String>>();
+ List<String> extra = new ArrayList<String>();
+ extra.add("EntrySchemaCheckingTestCase");
+ extraProperties.put("X-ORIGIN", extra);
+
+ // The set of required attribute types for this name form.
+ Set<String> requiredAttributeOIDs = new TreeSet<String>();
+ requiredAttributeOIDs.add("sn");
+ requiredAttributeOIDs.add("cn");
+
+ // @formatter:off
+ NameForm nf1 = new NameForm("mynewform-oid", names, "Description of the new form", false,
+ "mynewform-oid", requiredAttributeOIDs, Collections.<String> emptySet(), extraProperties, null);
+
+ NameForm nf2 = new NameForm("mynewform-oid", names, "Description of the new form", false,
+ "mynewform-oid", requiredAttributeOIDs, Collections.<String> emptySet(), extraProperties, null);
+ // @formatter:on
+
+ assertThat(nf1.equals(nf2)).isTrue();
+ }
+
+ /**
+ * Equals between two 'nameforms' fails.
+ */
+ @Test()
+ public final void testNameFormEqualsFalse() {
+
+ // The set of user defined names for this definition.
+ List<String> names = new ArrayList<String>();
+ names.add("MyNewForm");
+ names.add("TheNewForm");
+
+ // An optional set of extensions for the name form ( X-ORIGIN / X-SCHEMA-FILE)
+ Map<String, List<String>> extraProperties = new TreeMap<String, List<String>>();
+ List<String> extra = new ArrayList<String>();
+ extra.add("EntrySchemaCheckingTestCase");
+ extraProperties.put("X-ORIGIN", extra);
+
+ // The set of required attribute types for this name form.
+ Set<String> requiredAttributeOIDs = new TreeSet<String>();
+ requiredAttributeOIDs.add("sn");
+ requiredAttributeOIDs.add("cn");
+
+ // @formatter:off
+ NameForm nf1 = new NameForm("mynewform-oid", names, "Description of the new form", false,
+ "mynewform-oid", requiredAttributeOIDs, Collections.<String> emptySet(), extraProperties, null);
+
+ NameForm nf2 = new NameForm("mynewform-oid2", names, "Description of the new form", false,
+ "mynewform-oid", requiredAttributeOIDs, Collections.<String> emptySet(), extraProperties, null);
+ // @formatter:on
+
+ assertThat(nf1.getOID()).isEqualTo("mynewform-oid");
+ assertThat(nf2.getOID()).isEqualTo("mynewform-oid2");
+ // fails if oid is different.
+ assertThat(nf1.equals(nf2)).isFalse();
+ }
+
+ /**
+ * Duplicating a form without validating it doesn't copy OptionalAttributes
+ * and RequiredAttributes.
+ */
+ @Test()
+ public final void testNameFormDuplicateDoesntDuplicateAllAttributeWithoutValidateIt() {
+
+ // The set of user defined names for this definition.
+ List<String> names = new ArrayList<String>();
+ names.add("MyNewForm");
+ names.add("TheNewForm");
+
+ // An optional set of extensions for the name form ( X-ORIGIN / X-SCHEMA-FILE)
+ Map<String, List<String>> extraProperties = new TreeMap<String, List<String>>();
+ List<String> extra = new ArrayList<String>();
+ extra.add("EntrySchemaCheckingTestCase");
+ extraProperties.put("X-ORIGIN", extra);
+
+ // The set of required attribute types for this name form.
+ Set<String> requiredAttributeOIDs = new TreeSet<String>();
+ requiredAttributeOIDs.add("sn");
+ requiredAttributeOIDs.add("cn");
+
+ // The set of optional attribute types
+ Set<String> optionalAttributeOIDs = new TreeSet<String>();
+ optionalAttributeOIDs.add("description");
+ optionalAttributeOIDs.add("uid");
+
+ // @formatter:off
+ NameForm nf1 = new NameForm("1.3.6.1.4.1.1466.115.121.1.35", names, "Description of the new form", false,
+ "person", requiredAttributeOIDs, optionalAttributeOIDs, extraProperties, null);
+
+ assertThat(nf1.toString()).isEqualTo(
+ "( 1.3.6.1.4.1.1466.115.121.1.35 NAME ( 'MyNewForm' 'TheNewForm' )"
+ + " DESC 'Description of the new form'"
+ // Structural Object class, contained in the core schema:
+ + " OC person"
+ + " MUST ( cn $ sn )"
+ + " MAY ( description $ uid )"
+ + " X-ORIGIN 'EntrySchemaCheckingTestCase' )");
+ // @formatter:on
+
+ // Duplicating the 'nameform'.
+ NameForm nf2 = nf1.duplicate();
+
+ // Checking if the attributes are the same :
+ assertThat(nf2.getDescription()).isEqualTo(nf1.getDescription());
+ assertThat(nf2.getDescription()).isEqualTo("Description of the new form");
+
+ assertThat(nf2.getExtraPropertyNames()).isEqualTo(nf1.getExtraPropertyNames());
+ assertThat(nf2.getExtraPropertyNames().iterator().next()).isEqualTo("X-ORIGIN");
+
+ assertThat(nf2.getNameOrOID()).isEqualTo(nf1.getNameOrOID());
+ assertThat(nf2.getNameOrOID()).isEqualTo("MyNewForm");
+
+ assertThat(nf2.getOID()).isEqualTo(nf1.getOID());
+ assertThat(nf2.getOID()).isEqualTo("1.3.6.1.4.1.1466.115.121.1.35");
+
+ // Required and optional attributes are empty.
+ assertThat(nf2.getOptionalAttributes()).isEmpty();
+ assertThat(nf2.getOptionalAttributes()).isEqualTo(nf1.getOptionalAttributes());
+
+ assertThat(nf2.getRequiredAttributes()).isEmpty();
+ assertThat(nf2.getRequiredAttributes()).isEqualTo(nf1.getRequiredAttributes());
+
+ assertThat(nf2.getStructuralClass()).isEqualTo(nf1.getStructuralClass());
+ }
+
+ /**
+ * Duplicating a form succeeds after a schema validation.
+ *
+ * @throws SchemaException
+ */
+ @Test()
+ public final void testNameFormDuplicateSucceedAfterValidation() throws SchemaException {
+
+ // The set of user defined names for this definition.
+ List<String> names = new ArrayList<String>();
+ names.add("MyNewForm");
+ names.add("TheNewForm");
+
+ // An optional set of extensions for the name form ( X-ORIGIN / X-SCHEMA-FILE)
+ Map<String, List<String>> extraProperties = new TreeMap<String, List<String>>();
+ List<String> extra = new ArrayList<String>();
+ extra.add("EntrySchemaCheckingTestCase");
+ extraProperties.put("X-ORIGIN", extra);
+
+ // The set of required attribute types for this name form.
+ Set<String> requiredAttributeOIDs = new TreeSet<String>();
+ requiredAttributeOIDs.add("sn");
+ requiredAttributeOIDs.add("cn");
+
+ Set<String> optionalAttributeOIDs = new TreeSet<String>();
+ optionalAttributeOIDs.add("description");
+ optionalAttributeOIDs.add("uid");
+
+ // @formatter:off
+ NameForm nf1 = new NameForm("1.3.6.1.4.1.1466.115.121.1.35", names, "Description of the new form", false,
+ "person", requiredAttributeOIDs, optionalAttributeOIDs, extraProperties, null);
+
+ assertThat(nf1.toString()).isEqualTo(
+ "( 1.3.6.1.4.1.1466.115.121.1.35 NAME ( 'MyNewForm' 'TheNewForm' )"
+ + " DESC 'Description of the new form'"
+ // Structural Object class, contained in the core schema:
+ + " OC person"
+ + " MUST ( cn $ sn )"
+ + " MAY ( description $ uid )"
+ + " X-ORIGIN 'EntrySchemaCheckingTestCase' )");
+ // @formatter:on
+
+ List<LocalizableMessage> warnings1 = new ArrayList<LocalizableMessage>();
+ nf1.validate(Schema.getCoreSchema(), warnings1);
+
+ // Duplicating the 'nameform'.
+ NameForm nf2 = nf1.duplicate();
+
+ // Required and optional attributes are empty :
+ assertThat(nf2.getOptionalAttributes()).isEmpty();
+ assertThat(nf2.getRequiredAttributes()).isEmpty();
+
+ List<LocalizableMessage> warnings2 = new ArrayList<LocalizableMessage>();
+ nf2.validate(Schema.getCoreSchema(), warnings2);
+
+ // Checking if the attributes are the same :
+ assertThat(nf2.getDescription()).isEqualTo(nf1.getDescription());
+ assertThat(nf2.getDescription()).isEqualTo("Description of the new form");
+
+ assertThat(nf2.getExtraPropertyNames()).isEqualTo(nf1.getExtraPropertyNames());
+ assertThat(nf2.getExtraPropertyNames().iterator().next()).isEqualTo("X-ORIGIN");
+
+ assertThat(nf2.getNameOrOID()).isEqualTo(nf1.getNameOrOID());
+ assertThat(nf2.getNameOrOID()).isEqualTo("MyNewForm");
+
+ assertThat(nf2.getOID()).isEqualTo(nf1.getOID());
+ assertThat(nf2.getOID()).isEqualTo("1.3.6.1.4.1.1466.115.121.1.35");
+
+ // Required and optional attributes are not empty :
+ assertThat(nf2.getOptionalAttributes()).isNotEmpty();
+ assertThat(nf2.getOptionalAttributes()).isEqualTo(nf1.getOptionalAttributes());
+
+ assertThat(nf2.getRequiredAttributes()).isNotEmpty();
+ assertThat(nf2.getRequiredAttributes()).isEqualTo(nf1.getRequiredAttributes());
+
+ assertThat(nf2.getStructuralClass()).isEqualTo(nf1.getStructuralClass());
+ }
+}
--
Gitblit v1.10.0