| | |
| | | import static org.forgerock.opendj.ldap.schema.CoreSchema.*; |
| | | import static org.mockito.Mockito.*; |
| | | import static org.opends.server.TestCaseUtils.*; |
| | | import static org.opends.server.core.DirectoryServer.*; |
| | | import static org.opends.server.protocols.internal.InternalClientConnection.*; |
| | | import static org.opends.server.protocols.internal.Requests.*; |
| | | import static org.opends.server.types.ExistingFileBehavior.*; |
| | | import static org.opends.server.types.NullOutputStream.nullPrintStream; |
| | | import static org.opends.server.types.NullOutputStream.*; |
| | | import static org.opends.server.util.StaticUtils.*; |
| | | import static org.testng.Assert.*; |
| | | |
| | |
| | | import org.forgerock.opendj.ldap.schema.MatchingRule; |
| | | import org.forgerock.opendj.ldap.schema.MatchingRuleUse; |
| | | 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.server.config.server.SchemaBackendCfg; |
| | | import org.forgerock.util.Utils; |
| | |
| | | import org.opends.server.core.DeleteOperationBasis; |
| | | import org.opends.server.core.DirectoryServer; |
| | | import org.opends.server.core.ModifyDNOperationBasis; |
| | | import org.opends.server.core.ServerContext; |
| | | import org.opends.server.protocols.internal.InternalClientConnection; |
| | | import org.opends.server.protocols.internal.InternalSearchOperation; |
| | | import org.opends.server.protocols.internal.SearchRequest; |
| | | import org.opends.server.schema.SchemaConstants; |
| | | import org.opends.server.schema.SchemaHandler; |
| | | import org.opends.server.schema.SchemaHandler.SchemaUpdater; |
| | | import com.forgerock.opendj.ldap.tools.LDAPModify; |
| | | import org.opends.server.types.DirectoryException; |
| | | import org.opends.server.types.Entry; |
| | | import org.opends.server.types.LDIFExportConfig; |
| | |
| | | import org.testng.annotations.DataProvider; |
| | | import org.testng.annotations.Test; |
| | | |
| | | import com.forgerock.opendj.ldap.tools.LDAPModify; |
| | | |
| | | /** A set of test cases for the schema backend. */ |
| | | @SuppressWarnings("javadoc") |
| | | public class SchemaBackendTestCase extends BackendTestCase |
| | |
| | | { |
| | | TestCaseUtils.startServer(); |
| | | |
| | | schemaBackend = |
| | | (SchemaBackend) TestCaseUtils.getServerContext().getBackendConfigManager().getLocalBackendById("schema"); |
| | | schemaBackend = (SchemaBackend) getServerContext().getBackendConfigManager().getLocalBackendById("schema"); |
| | | assertNotNull(schemaBackend); |
| | | } |
| | | |
| | |
| | | "X-ORGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String attrName = "testaddattributetypesuccessful"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertFalse(getSchema().hasAttributeType(attrName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, SUCCESS); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertTrue(getSchema().hasAttributeType(attrName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String attrName = "testaddattributetypesuccessfulnooid"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertFalse(getSchema().hasAttributeType(attrName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, SUCCESS); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertTrue(getSchema().hasAttributeType(attrName)); |
| | | } |
| | | |
| | | private static Schema getSchema() |
| | | { |
| | | return getServerContext().getSchema(); |
| | | } |
| | | |
| | | /** |
| | |
| | | "SINGLE-VALUE)"); |
| | | |
| | | String attrName = "testaddattributetypenospacebeforeparenthesis"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertFalse(getSchema().hasAttributeType(attrName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, SUCCESS); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertTrue(getSchema().hasAttributeType(attrName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-SCHEMA-FILE '98-schema-test-attrtype.ldif' )"); |
| | | |
| | | String attrName = "testaddattributetypetoaltschemafile"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertFalse(getSchema().hasAttributeType(attrName)); |
| | | assertSchemaFileExists("98-schema-test-attrtype.ldif", false); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, SUCCESS); |
| | | |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertTrue(getSchema().hasAttributeType(attrName)); |
| | | assertSchemaFileExists("98-schema-test-attrtype.ldif", true); |
| | | } |
| | | |
| | |
| | | "NAME '" + initialName + "' " + |
| | | "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE " + |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(initialOid)); |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(initialName)); |
| | | assertFalse(getSchema().hasAttributeType(initialOid)); |
| | | assertFalse(getSchema().hasAttributeType(initialName)); |
| | | runModify(argsNotPermissive(), ldifAdd1, System.err, SUCCESS); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(initialOid)); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(initialName)); |
| | | assertTrue(getSchema().hasAttributeType(initialOid)); |
| | | assertTrue(getSchema().hasAttributeType(initialName)); |
| | | |
| | | // try to add the attribute again, with its new definition |
| | | String ldifAdd2 = toLdif( |
| | |
| | | finally |
| | | { |
| | | // clean the attribute to put back the schema in its initial state before the test |
| | | if (DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(initialOid)) |
| | | if (getSchema().hasAttributeType(initialOid)) |
| | | { |
| | | String removalLdif = toLdif( |
| | | "dn: cn=schema", |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String attrName = "testreplaceattributetypeinaltschemafile"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertFalse(getSchema().hasAttributeType(attrName)); |
| | | assertSchemaFileExists("98-schema-test-replaceattrtype.ldif", false); |
| | | |
| | | runModify(argsPermissive(), ldif, System.err, SUCCESS); |
| | | |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertTrue(getSchema().hasAttributeType(attrName)); |
| | | assertSchemaFileExists("98-schema-test-replaceattrtype.ldif", true); |
| | | } |
| | | |
| | |
| | | "'SchemaBackendTestCase' )"); |
| | | |
| | | String attrName = "testremoveattributetypesuccessful"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertFalse(getSchema().hasAttributeType(attrName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, SUCCESS); |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertFalse(getSchema().hasAttributeType(attrName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String attrName = "testremoveattributetypesuccessful"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertFalse(getSchema().hasAttributeType(attrName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, SUCCESS); |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertFalse(getSchema().hasAttributeType(attrName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String attrName = "testremoveattributetypeundefined"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertFalse(getSchema().hasAttributeType(attrName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, NO_SUCH_ATTRIBUTE); |
| | | } |
| | |
| | | "X-ORIGIN 'RFC 2256' )"); |
| | | |
| | | String attrName = "name"; |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertTrue(getSchema().hasAttributeType(attrName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, CONSTRAINT_VIOLATION); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertTrue(getSchema().hasAttributeType(attrName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'RFC 1274' )"); |
| | | |
| | | String attrName = "uid"; |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertTrue(getSchema().hasAttributeType(attrName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, CONSTRAINT_VIOLATION); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertTrue(getSchema().hasAttributeType(attrName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | |
| | | try |
| | | { |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertFalse(getSchema().hasAttributeType(attrName)); |
| | | runModify(argsNotPermissive(), ldif, SUCCESS); |
| | | |
| | | runModify(argsNotPermissive(), ldif1, CONSTRAINT_VIOLATION); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertTrue(getSchema().hasAttributeType(attrName)); |
| | | } |
| | | finally |
| | | { |
| | | runModify(argsNotPermissive(), ldif2, SUCCESS); |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertFalse(getSchema().hasAttributeType(attrName)); |
| | | } |
| | | } |
| | | |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String attrName = "testremoveattributetypereferencedbydcr"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertFalse(getSchema().hasAttributeType(attrName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, CONSTRAINT_VIOLATION); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertTrue(getSchema().hasAttributeType(attrName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String attrName = "testremoveatrefbymruat"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertFalse(getSchema().hasAttributeType(attrName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, CONSTRAINT_VIOLATION); |
| | | |
| | | assertMatchingRuleUseExistsWithName(matchingRule, "testremoveatrefbymrumru"); |
| | | |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertTrue(getSchema().hasAttributeType(attrName)); |
| | | } |
| | | finally |
| | | { |
| | | DirectoryServer.getInstance().getServerContext().getSchema(); |
| | | getSchema(); |
| | | deregisterMatchingRuleUse(matchingRule); |
| | | deregisterAttributeType("testremoveatrefbymruat-oid"); |
| | | deregisterMatchingRule(matchingRule); |
| | |
| | | |
| | | private void updateSchema(SchemaUpdater updater) throws DirectoryException |
| | | { |
| | | SchemaHandler schemaHandler = DirectoryServer.getInstance().getServerContext().getSchemaHandler(); |
| | | schemaHandler.updateSchema(updater); |
| | | getServerContext().getSchemaHandler().updateSchema(updater); |
| | | } |
| | | |
| | | private void deregisterAttributeType(final String nameOrOid) throws DirectoryException |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String ocName = "testaddobjectclasssuccessful"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertFalse(getSchema().hasObjectClass(ocName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, SUCCESS); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertTrue(getSchema().hasObjectClass(ocName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "MUST cn X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String ocName = "testaddobjectclasssuccessfulnooid"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertFalse(getSchema().hasObjectClass(ocName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, SUCCESS); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertTrue(getSchema().hasObjectClass(ocName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-SCHEMA-FILE '98-schema-test-oc.ldif' )"); |
| | | |
| | | String ocName = "testaddobjectclasstoaltschemafile"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertFalse(getSchema().hasObjectClass(ocName)); |
| | | assertSchemaFileExists("98-schema-test-oc.ldif", false); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, SUCCESS); |
| | | |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertTrue(getSchema().hasObjectClass(ocName)); |
| | | assertSchemaFileExists("98-schema-test-oc.ldif", true); |
| | | } |
| | | |
| | |
| | | "NAME '" + initialName + "' " + |
| | | "SUP top STRUCTURAL " + |
| | | "MUST cn X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(initialOid)); |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(initialName)); |
| | | assertFalse(getSchema().hasObjectClass(initialOid)); |
| | | assertFalse(getSchema().hasObjectClass(initialName)); |
| | | runModify(argsNotPermissive(), ldifAdd1, System.err, SUCCESS); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(initialOid)); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(initialName)); |
| | | assertTrue(getSchema().hasObjectClass(initialOid)); |
| | | assertTrue(getSchema().hasObjectClass(initialName)); |
| | | |
| | | // try to add the attribute again, with its new definition |
| | | String ldifAdd2 = toLdif( |
| | |
| | | finally |
| | | { |
| | | // clean the object class to put back the schema in its initial state before the test |
| | | if (DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(initialOid)) |
| | | if (getSchema().hasObjectClass(initialOid)) |
| | | { |
| | | String removalLdif = toLdif( |
| | | "dn: cn=schema", |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String ocName = "testaddobjectclassmultipleconflicts"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertFalse(getSchema().hasObjectClass(ocName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, CONSTRAINT_VIOLATION); |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertFalse(getSchema().hasObjectClass(ocName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String ocName = "testremovethenaddobjectclasssuccessful"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertFalse(getSchema().hasObjectClass(ocName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, SUCCESS); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertTrue(getSchema().hasObjectClass(ocName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String ocName = "testremoveobjectclasssuccessful"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertFalse(getSchema().hasObjectClass(ocName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, SUCCESS); |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertFalse(getSchema().hasObjectClass(ocName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "seeAlso $ description ) X-ORIGIN 'RFC 2256' )"); |
| | | |
| | | String ocName = "person"; |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertTrue(getSchema().hasObjectClass(ocName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, CONSTRAINT_VIOLATION); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertTrue(getSchema().hasObjectClass(ocName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | |
| | | try |
| | | { |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertFalse(getSchema().hasObjectClass(ocName)); |
| | | runModify(argsPermissive(), addOCThenNF, SUCCESS); |
| | | |
| | | runModify(argsPermissive(), deleteOC, CONSTRAINT_VIOLATION); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertTrue(getSchema().hasObjectClass(ocName)); |
| | | } |
| | | finally |
| | | { |
| | | runModify(argsPermissive(), deleteNFThenOC, SUCCESS); |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertFalse(getSchema().hasObjectClass(ocName)); |
| | | } |
| | | } |
| | | |
| | |
| | | "STRUCTURAL MUST cn X-ORIGIN 'SchemaBackendTestCase')"); |
| | | |
| | | String ocName = "testremoveobjectclassreferencedbydcr"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertFalse(getSchema().hasObjectClass(ocName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, CONSTRAINT_VIOLATION); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertTrue(getSchema().hasObjectClass(ocName)); |
| | | } |
| | | |
| | | private static String[] argsNotPermissive() |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String nameFormName = "testaddnameformsuccessful"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, SUCCESS); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertTrue(getSchema().hasNameForm(nameFormName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-SCHEMA-FILE '98-schema-test-nameform.ldif' )"); |
| | | |
| | | String nameFormName = "testaddnameformtoaltschemafile"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | assertSchemaFileExists("98-schema-test-nameform.ldif", false); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, SUCCESS); |
| | | |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertTrue(getSchema().hasNameForm(nameFormName)); |
| | | assertSchemaFileExists("98-schema-test-nameform.ldif", true); |
| | | } |
| | | |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String nameFormName = "testaddnameformwithundefinedreqat"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, CONSTRAINT_VIOLATION); |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String nameFormName = "testaddnameformwithmultipleundefinedreqat"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, CONSTRAINT_VIOLATION); |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "MAY xxxundefinedxxx X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String nameFormName = "testaddnameformwithundefinedoptat"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, CONSTRAINT_VIOLATION); |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String nameFormName = "testaddnameformwithmultipleundefinedoptat"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, CONSTRAINT_VIOLATION); |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "OC xxxundefinedxxx MUST cn X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String nameFormName = "testaddnameformwithundefinedoc"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, CONSTRAINT_VIOLATION); |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String nameFormName = "testaddnameformwithauxiliaryoc"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, CONSTRAINT_VIOLATION); |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String nameFormName = "testaddnameformwithobsoleteoc"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, CONSTRAINT_VIOLATION); |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String nameFormName = "testaddnameformocconflict2"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, SUCCESS); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertTrue(getSchema().hasNameForm(nameFormName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String nameFormName = "testremovenameformsuccessful"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, SUCCESS); |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String nameFormName = "testremovethenaddnameformsuccessful"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, SUCCESS); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertTrue(getSchema().hasNameForm(nameFormName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String nameFormName = "testremovenameformreferencedbydsrnf"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, CONSTRAINT_VIOLATION); |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertTrue(getSchema().hasNameForm(nameFormName)); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String ocName = "testaddditcontentrulesuccessfuloc"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertFalse(getSchema().hasObjectClass(ocName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, SUCCESS); |
| | | |
| | | ObjectClass oc = DirectoryServer.getInstance().getServerContext().getSchema().getObjectClass(ocName); |
| | | ObjectClass oc = getSchema().getObjectClass(ocName); |
| | | assertFalse(oc.isPlaceHolder()); |
| | | |
| | | DITContentRule dcr = DirectoryServer.getInstance().getServerContext().getSchema().getDITContentRule(oc); |
| | | DITContentRule dcr = getSchema().getDITContentRule(oc); |
| | | assertNotNull(dcr); |
| | | assertTrue(dcr.hasName("testaddditcontentrulesuccessful")); |
| | | } |
| | |
| | | "NOT description X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String ocName = "testreplaceditcontentrulesuccessfuloc"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertFalse(getSchema().hasObjectClass(ocName)); |
| | | |
| | | runModify(argsPermissive(), ldif, System.err, SUCCESS); |
| | | |
| | | ObjectClass oc = DirectoryServer.getInstance().getServerContext().getSchema().getObjectClass(ocName); |
| | | ObjectClass oc = getSchema().getObjectClass(ocName); |
| | | assertFalse(oc.isPlaceHolder()); |
| | | |
| | | DITContentRule dcr = DirectoryServer.getInstance().getServerContext().getSchema().getDITContentRule(oc); |
| | | DITContentRule dcr = getSchema().getDITContentRule(oc); |
| | | assertNotNull(dcr); |
| | | assertTrue(dcr.hasName("testreplaceditcontentrulesuccessful")); |
| | | } |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String ocName = "testadddcrtoaltschemafileoc"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertFalse(getSchema().hasObjectClass(ocName)); |
| | | assertSchemaFileExists("98-schema-test-dcr.ldif", false); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, SUCCESS); |
| | | |
| | | ObjectClass oc = DirectoryServer.getInstance().getServerContext().getSchema().getObjectClass(ocName); |
| | | ObjectClass oc = getSchema().getObjectClass(ocName); |
| | | assertFalse(oc.isPlaceHolder()); |
| | | |
| | | DITContentRule dcr = DirectoryServer.getInstance().getServerContext().getSchema().getDITContentRule(oc); |
| | | DITContentRule dcr = getSchema().getDITContentRule(oc); |
| | | assertNotNull(dcr); |
| | | assertTrue(dcr.hasName("testadddcrtoaltschemafile")); |
| | | |
| | |
| | | "NOT description X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String ocName = "testremovethenaddditcontentruleoc"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertFalse(getSchema().hasObjectClass(ocName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, SUCCESS); |
| | | |
| | | ObjectClass oc = DirectoryServer.getInstance().getServerContext().getSchema().getObjectClass(ocName); |
| | | ObjectClass oc = getSchema().getObjectClass(ocName); |
| | | assertFalse(oc.isPlaceHolder()); |
| | | |
| | | DITContentRule dcr = DirectoryServer.getInstance().getServerContext().getSchema().getDITContentRule(oc); |
| | | DITContentRule dcr = getSchema().getDITContentRule(oc); |
| | | assertNotNull(dcr); |
| | | assertTrue(dcr.hasName("testremovethenaddditcontentrule")); |
| | | } |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String ocName = "testremoveditcontentrulesuccessfuloc"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(ocName)); |
| | | assertFalse(getSchema().hasObjectClass(ocName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, SUCCESS); |
| | | |
| | | ObjectClass oc = DirectoryServer.getInstance().getServerContext().getSchema().getObjectClass(ocName); |
| | | ObjectClass oc = getSchema().getObjectClass(ocName); |
| | | assertFalse(oc.isPlaceHolder()); |
| | | |
| | | DITContentRule dcr = DirectoryServer.getInstance().getServerContext().getSchema().getDITContentRule(oc); |
| | | DITContentRule dcr = getSchema().getDITContentRule(oc); |
| | | assertNull(dcr); |
| | | } |
| | | |
| | |
| | | |
| | | private void assertSchemaHasDITStructureRule(int ruleID, boolean expected) |
| | | { |
| | | boolean hasDITStructureRule = DirectoryServer.getInstance().getServerContext().getSchema().hasDITStructureRule(ruleID); |
| | | boolean hasDITStructureRule = getSchema().hasDITStructureRule(ruleID); |
| | | assertEquals(hasDITStructureRule, expected, "Expected to find a DITStructureRule with ruleID " + ruleID); |
| | | } |
| | | |
| | |
| | | |
| | | private void assertMatchingRuleUseExistsWithName(MatchingRule matchingRule, String mruName) |
| | | { |
| | | MatchingRuleUse mru = DirectoryServer.getInstance().getServerContext().getSchema().getMatchingRuleUse(matchingRule); |
| | | MatchingRuleUse mru = getSchema().getMatchingRuleUse(matchingRule); |
| | | assertNotNull(mru); |
| | | assertTrue(mru.hasName(mruName)); |
| | | } |
| | |
| | | |
| | | private void assertSchemaDoesNotHaveMatchingRuleUse(MatchingRule matchingRule) |
| | | { |
| | | for (MatchingRuleUse matchingRuleUse : DirectoryServer.getInstance().getServerContext().getSchema().getMatchingRuleUses()) |
| | | for (MatchingRuleUse matchingRuleUse : getSchema().getMatchingRuleUses()) |
| | | { |
| | | assertFalse(matchingRuleUse.getMatchingRule().equals(matchingRule)); |
| | | } |
| | |
| | | .addToSchema(); |
| | | } |
| | | }); |
| | | SchemaHandler schemaHandler = DirectoryServer.getInstance().getServerContext().getSchemaHandler(); |
| | | return schemaHandler.getSchema().getMatchingRule(oid); |
| | | |
| | | return getSchema().getMatchingRule(oid); |
| | | } |
| | | |
| | | private void runModify(String[] args, String ldifContent, ResultCode expectedRC) |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String attrName = "testattributetypesmatchingrule"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertFalse(getSchema().hasAttributeType(attrName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, ATTRIBUTE_OR_VALUE_EXISTS); |
| | | } |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String objectClassName = "testobjectclassesmatchingrule"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasObjectClass(objectClassName)); |
| | | assertFalse(getSchema().hasObjectClass(objectClassName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, ATTRIBUTE_OR_VALUE_EXISTS); |
| | | } |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String nameFormName = "testnameformsmatchingrule"; |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasNameForm(nameFormName)); |
| | | assertFalse(getSchema().hasNameForm(nameFormName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, ATTRIBUTE_OR_VALUE_EXISTS); |
| | | } |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String objectClassName = "testditcontentrulesmatchingruleoc"; |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().getObjectClass(objectClassName).isPlaceHolder()); |
| | | assertTrue(getSchema().getObjectClass(objectClassName).isPlaceHolder()); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, ATTRIBUTE_OR_VALUE_EXISTS); |
| | | } |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String objectClassName = "testditcontentrulesmatchingruleoc1"; |
| | | assertTrue(DirectoryServer.getInstance().getServerContext().getSchema().getObjectClass(objectClassName).isPlaceHolder()); |
| | | assertTrue(getSchema().getObjectClass(objectClassName).isPlaceHolder()); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, ATTRIBUTE_OR_VALUE_EXISTS); |
| | | } |
| | |
| | | |
| | | String attrName = "testmatchingruleusematchingruleat1"; |
| | | |
| | | assertFalse(DirectoryServer.getInstance().getServerContext().getSchema().hasAttributeType(attrName)); |
| | | assertFalse(getSchema().hasAttributeType(attrName)); |
| | | |
| | | runModify(argsNotPermissive(), ldif, System.err, ATTRIBUTE_OR_VALUE_EXISTS); |
| | | } |
| | |
| | | " MAY ( street $ c) X-ORIGIN 'user defined' )"); |
| | | assertEquals(resultCode, 0); |
| | | |
| | | assertFalse(getInstance().getServerContext().getSchema().getObjectClass("testaddanddeletedefinitionwithextraspaces").isPlaceHolder()); |
| | | assertFalse(getInstance().getServerContext().getSchema().getObjectClass("testaddanddeletedefinitionwithextraspaces-oid").isPlaceHolder()); |
| | | assertFalse(getSchema().getObjectClass("testaddanddeletedefinitionwithextraspaces").isPlaceHolder()); |
| | | assertFalse(getSchema().getObjectClass("testaddanddeletedefinitionwithextraspaces-oid").isPlaceHolder()); |
| | | |
| | | resultCode = TestCaseUtils.applyModifications(false, |
| | | "dn: cn=schema", |
| | |
| | | " MAY ( street $ c) X-ORIGIN 'user defined' )"); |
| | | assertEquals(resultCode, 0); |
| | | |
| | | assertTrue(getInstance().getServerContext().getSchema().getObjectClass("testaddanddeletedefinitionwithextraspaces").isPlaceHolder()); |
| | | assertTrue(getInstance().getServerContext().getSchema().getObjectClass("testaddanddeletedefinitionwithextraspaces-oid").isPlaceHolder()); |
| | | assertTrue(getSchema().getObjectClass("testaddanddeletedefinitionwithextraspaces").isPlaceHolder()); |
| | | assertTrue(getSchema().getObjectClass("testaddanddeletedefinitionwithextraspaces-oid").isPlaceHolder()); |
| | | } |
| | | |
| | | /** |
| | |
| | | LDIFExportConfig exportConfig = new LDIFExportConfig(tempFile.getAbsolutePath(), OVERWRITE); |
| | | schemaBackend.exportLDIF(exportConfig); |
| | | |
| | | ServerContext serverContext = DirectoryServer.getInstance().getServerContext(); |
| | | LDIFImportConfig importConfig = new LDIFImportConfig(tempFile.getAbsolutePath()); |
| | | LDIFImportResult importResult = schemaBackend.importLDIF(importConfig, serverContext); |
| | | LDIFImportResult importResult = schemaBackend.importLDIF(importConfig, getServerContext()); |
| | | assertEquals(importResult.getEntriesRead(), 1); |
| | | assertEquals(importResult.getEntriesImported(), 0); |
| | | assertEquals(importResult.getEntriesRejected(), 1); |
| | |
| | | LDIFImportConfig importConfig = new LDIFImportConfig(tempFile.getAbsolutePath()); |
| | | importConfig.setValidateSchema(false); |
| | | |
| | | ServerContext serverContext = DirectoryServer.getInstance().getServerContext(); |
| | | LDIFImportResult importResult = schemaBackend.importLDIF(importConfig, serverContext); |
| | | LDIFImportResult importResult = schemaBackend.importLDIF(importConfig, getServerContext()); |
| | | assertEquals(importResult.getEntriesRead(), 1); |
| | | assertEquals(importResult.getEntriesImported(), 1); |
| | | assertEquals(importResult.getEntriesRejected(), 0); |