| | |
| | | * |
| | | * |
| | | * Copyright 2006-2010 Sun Microsystems, Inc. |
| | | * Portions Copyright 2013-2015 ForgeRock AS. |
| | | * Portions Copyright 2013-2016 ForgeRock AS. |
| | | */ |
| | | package org.opends.server.backends; |
| | | |
| | |
| | | import org.forgerock.opendj.ldap.ByteString; |
| | | import org.forgerock.opendj.ldap.ResultCode; |
| | | import org.forgerock.opendj.ldap.SearchScope; |
| | | import org.forgerock.opendj.ldap.schema.AttributeType; |
| | | import org.forgerock.opendj.ldap.schema.MatchingRule; |
| | | import org.forgerock.opendj.ldap.schema.Schema; |
| | | import org.forgerock.opendj.ldap.schema.SchemaBuilder; |
| | |
| | | import org.opends.server.protocols.internal.SearchRequest; |
| | | import org.opends.server.schema.SchemaConstants; |
| | | import org.opends.server.tools.LDAPModify; |
| | | import org.opends.server.types.*; |
| | | import org.opends.server.types.DITContentRule; |
| | | import org.opends.server.types.DN; |
| | | import org.opends.server.types.DirectoryException; |
| | | import org.opends.server.types.Entry; |
| | | import org.opends.server.types.ExistingFileBehavior; |
| | | import org.opends.server.types.InitializationException; |
| | | import org.opends.server.types.LDIFExportConfig; |
| | | import org.opends.server.types.LDIFImportConfig; |
| | | import org.opends.server.types.MatchingRuleUse; |
| | | import org.opends.server.types.ObjectClass; |
| | | import org.opends.server.types.SearchFilter; |
| | | import org.opends.server.util.CollectionUtils; |
| | | import org.opends.server.util.ServerConstants; |
| | | import org.testng.annotations.BeforeClass; |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | int ruleID = 999001; |
| | | assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID)); |
| | | assertSchemaHasDITStructureRule(ruleID, false); |
| | | |
| | | assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0); |
| | | assertTrue(DirectoryServer.getSchema().hasDITStructureRule(ruleID)); |
| | | assertSchemaHasDITStructureRule(ruleID, true); |
| | | } |
| | | |
| | | private void assertSchemaHasDITStructureRule(int ruleID, boolean expected) |
| | | { |
| | | assertEquals(DirectoryServer.getSchema().getDITStructureRulesByID().containsKey(ruleID), expected); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | int ruleID = 999002; |
| | | assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID)); |
| | | assertSchemaHasDITStructureRule(ruleID, false); |
| | | |
| | | assertEquals(runModify(argsPermissive(), ldif, System.err), 0); |
| | | assertTrue(DirectoryServer.getSchema().hasDITStructureRule(ruleID)); |
| | | assertSchemaHasDITStructureRule(ruleID, true); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | int ruleID = 999010; |
| | | assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID)); |
| | | assertSchemaHasDITStructureRule(ruleID, false); |
| | | |
| | | File schemaFile = new File(SchemaConfigManager.getSchemaDirectoryPath(), |
| | | "98-schema-test-dsr.ldif"); |
| | | assertFalse(schemaFile.exists()); |
| | | |
| | | assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0); |
| | | assertTrue(DirectoryServer.getSchema().hasDITStructureRule(ruleID)); |
| | | assertSchemaHasDITStructureRule(ruleID, true); |
| | | |
| | | assertTrue(schemaFile.exists()); |
| | | } |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | int ruleID = 999003; |
| | | assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID)); |
| | | assertSchemaHasDITStructureRule(ruleID, false); |
| | | |
| | | assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0); |
| | | assertTrue(DirectoryServer.getSchema().hasDITStructureRule(ruleID)); |
| | | assertSchemaHasDITStructureRule(ruleID, true); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | int ruleID = 999004; |
| | | assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID)); |
| | | assertSchemaHasDITStructureRule(ruleID, false); |
| | | |
| | | assertNotEquals(runModify(argsNotPermissive(), ldif), 0); |
| | | assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID)); |
| | | assertSchemaHasDITStructureRule(ruleID, false); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | int ruleID = 999005; |
| | | assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID)); |
| | | assertSchemaHasDITStructureRule(ruleID, false); |
| | | |
| | | assertNotEquals(runModify(argsNotPermissive(), ldif), 0); |
| | | assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID)); |
| | | assertSchemaHasDITStructureRule(ruleID, false); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | int ruleID = 999006; |
| | | assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID)); |
| | | assertSchemaHasDITStructureRule(ruleID, false); |
| | | |
| | | assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0); |
| | | assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID)); |
| | | assertSchemaHasDITStructureRule(ruleID, false); |
| | | } |
| | | |
| | | /** |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | int ruleID = 999007; |
| | | assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID)); |
| | | assertSchemaHasDITStructureRule(ruleID, false); |
| | | |
| | | assertNotEquals(runModify(argsNotPermissive(), ldif), 0); |
| | | assertTrue(DirectoryServer.getSchema().hasDITStructureRule(ruleID)); |
| | | assertSchemaHasDITStructureRule(ruleID, true); |
| | | |
| | | ldif = toLdif( |
| | | "dn: cn=schema", |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0); |
| | | assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID)); |
| | | assertSchemaHasDITStructureRule(ruleID, false); |
| | | } |
| | | |
| | | private MatchingRule getMatchingRule(String name, String oid, boolean isObsolete) |
| | |
| | | "NAME 'testAddMRUSuccessful' APPLIES cn " + |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule)); |
| | | assertSchemaDoesNotHaveMatchingRuleUse(matchingRule); |
| | | |
| | | assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0); |
| | | |
| | |
| | | "X-SCHEMA-FILE '98-schema-test-mru.ldif' " + |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule)); |
| | | assertSchemaDoesNotHaveMatchingRuleUse(matchingRule); |
| | | |
| | | File schemaFile = new File(SchemaConfigManager.getSchemaDirectoryPath(), |
| | | "98-schema-test-mru.ldif"); |
| | |
| | | "NAME 'testReplaceMRUSuccessful' APPLIES ( cn $ sn ) " + |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule)); |
| | | assertSchemaDoesNotHaveMatchingRuleUse(matchingRule); |
| | | |
| | | assertEquals(runModify(argsPermissive(), ldif, System.err), 0); |
| | | |
| | |
| | | "NAME 'testRemoveAndAddMRU' APPLIES ( cn $ sn ) " + |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule)); |
| | | assertSchemaDoesNotHaveMatchingRuleUse(matchingRule); |
| | | |
| | | assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0); |
| | | |
| | |
| | | "NAME 'testAddMRUMRConflict2' APPLIES sn " + |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule)); |
| | | assertSchemaDoesNotHaveMatchingRuleUse(matchingRule); |
| | | |
| | | assertNotEquals(runModify(argsNotPermissive(), ldif), 0); |
| | | |
| | |
| | | "APPLIES xxxundefinedxxx " + |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule)); |
| | | assertSchemaDoesNotHaveMatchingRuleUse(matchingRule); |
| | | |
| | | assertNotEquals(runModify(argsNotPermissive(), ldif), 0); |
| | | } |
| | |
| | | "APPLIES ( cn $ xxxundefinedxxx ) " + |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule)); |
| | | assertSchemaDoesNotHaveMatchingRuleUse(matchingRule); |
| | | |
| | | assertNotEquals(runModify(argsNotPermissive(), ldif), 0); |
| | | } |
| | | |
| | | private void assertSchemaDoesNotHaveMatchingRuleUse(MatchingRule matchingRule) |
| | | { |
| | | assertFalse(DirectoryServer.getSchema().getMatchingRuleUses().containsKey(matchingRule)); |
| | | } |
| | | |
| | | /** |
| | | * Tests the behavior of the schema backend when attempting to add a new |
| | | * matching rule whose matching rule is OBSOLETE. |
| | |
| | | "NAME 'testAddMatchingRuleUseObsoleteMatchingRule' " + |
| | | "APPLIES cn X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule)); |
| | | assertSchemaDoesNotHaveMatchingRuleUse(matchingRule); |
| | | |
| | | assertNotEquals(runModify(argsNotPermissive(), ldif), 0); |
| | | } |
| | |
| | | "APPLIES testAddMRUObsoleteAT " + |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule)); |
| | | assertSchemaDoesNotHaveMatchingRuleUse(matchingRule); |
| | | |
| | | assertNotEquals(runModify(argsNotPermissive(), ldif), 0); |
| | | } |
| | |
| | | "NAME 'testRemoveMRUSuccessful' APPLIES cn " + |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule)); |
| | | assertSchemaDoesNotHaveMatchingRuleUse(matchingRule); |
| | | |
| | | assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0); |
| | | |
| | |
| | | "X-ORIGIN 'SchemaBackendTestCase' )"); |
| | | |
| | | String attrName = "testmatchingruleusematchingruleat1"; |
| | | assertNull(DirectoryServer.getSchema().getAttributeType(attrName)); |
| | | |
| | | assertFalse(DirectoryServer.getSchema().hasAttributeType(attrName)); |
| | | |
| | | assertEquals(runModify(argsNotPermissive(), ldif, System.err), 20); |
| | | } |
| | |
| | | "dn: cn=schema", |
| | | "changetype: modify", |
| | | "add: objectClasses", |
| | | "objectClasses: ( testissue1318oc1-oid NAME 'testIssue1381OC1' )", |
| | | "objectClasses: ( testissue1318oc1-oid NAME 'testIssue1381OC1')", |
| | | "", |
| | | "dn: cn=schema", |
| | | "changetype: modify", |
| | |
| | | "objectClasses: ( testissue1318oc1-oid NAME 'testIssue1381OC1' )", |
| | | "-", |
| | | "add: attributeTypes", |
| | | "attributeTypes: ( testissue1318at-oid NAME 'testIssue1381AT' )", |
| | | "attributeTypes: ( testissue1318at-oid NAME 'testIssue1381AT' SUP name)", |
| | | "-", |
| | | "add: objectClasses", |
| | | "objectClasses: ( testissue1318oc2-oid NAME 'testIssue1381OC2' " + |