/*
|
* 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());
|
}
|
}
|