From 06d198918c48ef1090f42746396d26d5f2e882be Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 01 Jun 2016 09:51:51 +0000
Subject: [PATCH] OPENDJ-3004 Migrate DITStructureRule
---
opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java | 90 +++++++++++++++++++++++++++++++++++++++++---
1 files changed, 83 insertions(+), 7 deletions(-)
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java
index 245c348..ee55c0a 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java
@@ -46,6 +46,7 @@
import org.forgerock.opendj.ldap.schema.ObjectClass;
import org.forgerock.opendj.ldap.schema.Schema;
import org.forgerock.opendj.ldap.schema.SchemaBuilder;
+import org.forgerock.opendj.ldap.schema.UnknownSchemaElementException;
import org.forgerock.util.Utils;
import org.opends.server.TestCaseUtils;
import org.opends.server.core.AddOperation;
@@ -3181,8 +3182,7 @@
* @throws Exception If an unexpected problem occurs.
*/
@Test
- public void testAddDITStructureRuleSuccessful()
- throws Exception
+ public void testAddDITStructureRuleSuccessful() throws Exception
{
String ldif = toLdif(
"dn: cn=schema",
@@ -3207,13 +3207,49 @@
int ruleID = 999001;
assertSchemaHasDITStructureRule(ruleID, false);
- runModify(argsNotPermissive(), ldif, System.err, SUCCESS);
- assertSchemaHasDITStructureRule(ruleID, true);
+ try
+ {
+ runModify(argsNotPermissive(), ldif, System.err, SUCCESS);
+ assertSchemaHasDITStructureRule(ruleID, true);
+ }
+ finally
+ {
+ // delete in reverse order
+ String ldif2 = toLdif(
+ "dn: cn=schema",
+ "changetype: modify",
+ "delete: ditStructureRules",
+ "ditStructureRules: ( 999001 " +
+ "NAME 'testAddDITStructureRuleSuccessful' " +
+ "FORM testAddDITStructureRuleSuccessfulNF " +
+ "X-ORIGIN 'SchemaBackendTestCase' )",
+ "-",
+ "delete: nameForms",
+ "nameForms: ( testaddditstructurerulesuccessfulnf-oid " +
+ "NAME 'testAddDITStructureRuleSuccessfulNF' " +
+ "OC testAddDITStructureRuleSuccessfulOC MUST cn " +
+ "X-ORIGIN 'SchemaBackendTestCase' )",
+ "-",
+ "delete: objectClasses",
+ "objectClasses: ( testaddditstructurerulesuccessfuloc-oid " +
+ "NAME 'testAddDITStructureRuleSuccessfulOC' SUP top " +
+ "STRUCTURAL MUST cn X-ORIGIN 'SchemaBackendTestCase')");
+ runModify(argsNotPermissive(), ldif2, System.err, SUCCESS);
+ assertSchemaHasDITStructureRule(ruleID, false);
+ }
}
private void assertSchemaHasDITStructureRule(int ruleID, boolean expected)
{
- assertEquals(DirectoryServer.getSchema().getDITStructureRulesByID().containsKey(ruleID), expected);
+ try
+ {
+ DirectoryServer.getSchema().getDITStructureRule(ruleID);
+ assertTrue(expected, "Expected to find a DITStructureRule with ruleID " + ruleID);
+ }
+ catch (UnknownSchemaElementException e)
+ {
+ assertFalse(expected, e.getMessage());
+ }
}
/**
@@ -3383,7 +3419,7 @@
int ruleID = 999004;
assertSchemaHasDITStructureRule(ruleID, false);
- runModify(argsNotPermissive(), ldif, INVALID_ATTRIBUTE_SYNTAX);
+ runModify(argsNotPermissive(), ldif, CONSTRAINT_VIOLATION);
assertSchemaHasDITStructureRule(ruleID, false);
}
@@ -3420,11 +3456,51 @@
int ruleID = 999005;
assertSchemaHasDITStructureRule(ruleID, false);
- runModify(argsNotPermissive(), ldif, INVALID_ATTRIBUTE_SYNTAX);
+ runModify(argsNotPermissive(), ldif, CONSTRAINT_VIOLATION);
assertSchemaHasDITStructureRule(ruleID, false);
}
/**
+ * Tests the addition of a new DITContentRule with a conflicting rule identifier.
+ *
+ * @throws Exception
+ * If an unexpected problem occurs.
+ */
+ @Test
+ public void testAddDITStructureRuleConflictingRuleID() throws Exception
+ {
+ String ldif = toLdif(
+ "dn: cn=schema",
+ "changetype: modify",
+ "add: nameForms",
+ "nameForms: ( 1.3.6.1.1.10.15.100 NAME 'domainNameForm' OC domain MUST ( dc ) )",
+ "-",
+ "add: dITStructureRules",
+ "dITStructureRules: ( 1 NAME 'dummyStructureRule' FORM domainNameForm )");
+ runModify(argsNotPermissive(), ldif, ATTRIBUTE_OR_VALUE_EXISTS);
+ }
+
+ /**
+ * Tests the addition of a new DITContentRule with a conflicting rule identifier.
+ *
+ * @throws Exception
+ * If an unexpected problem occurs.
+ */
+ @Test
+ public void testAddDITStructureRuleConflictingRuleIDWithPermissiveControl() throws Exception
+ {
+ String ldif = toLdif(
+ "dn: cn=schema",
+ "changetype: modify",
+ "add: nameForms",
+ "nameForms: ( 1.3.6.1.1.10.15.100 NAME 'domainNameForm' OC domain MUST ( dc ) )",
+ "-",
+ "add: dITStructureRules",
+ "dITStructureRules: ( 1 NAME 'dummyStructureRule' FORM domainNameForm )");
+ runModify(argsPermissive(), ldif, UNWILLING_TO_PERFORM);
+ }
+
+ /**
* Tests the behavior of the schema backend when attempting to add a new
* DIT structure rule that references a name form which is OBSOLETE.
*
--
Gitblit v1.10.0