| New file |
| | |
| | | /* |
| | | * The contents of this file are subject to the terms of the Common Development and |
| | | * Distribution License (the License). You may not use this file except in compliance with the |
| | | * License. |
| | | * |
| | | * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the |
| | | * specific language governing permission and limitations under the License. |
| | | * |
| | | * When distributing Covered Software, include this CDDL Header Notice in each file and include |
| | | * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL |
| | | * Header, with the fields enclosed by brackets [] replaced by your own identifying |
| | | * information: "Portions Copyright [year] [name of copyright owner]". |
| | | * |
| | | * Copyright 2024 3A Systems, LLC. |
| | | */ |
| | | package org.opends.server.extensions; |
| | | |
| | | import org.forgerock.opendj.ldap.ByteString; |
| | | import org.forgerock.opendj.ldap.DN; |
| | | import org.forgerock.opendj.ldap.SearchScope; |
| | | import org.forgerock.opendj.server.config.meta.VirtualAttributeCfgDefn; |
| | | import org.opends.server.TestCaseUtils; |
| | | import org.opends.server.api.VirtualAttributeProvider; |
| | | import org.opends.server.core.DirectoryServer; |
| | | import org.opends.server.types.Entry; |
| | | import org.opends.server.types.SearchFilter; |
| | | import org.opends.server.types.VirtualAttributeRule; |
| | | import org.testng.annotations.BeforeClass; |
| | | import org.testng.annotations.Test; |
| | | |
| | | import java.util.Collections; |
| | | |
| | | import static org.forgerock.opendj.ldap.schema.CoreSchema.getGoverningStructureRuleAttributeType; |
| | | import static org.testng.Assert.*; |
| | | |
| | | /** |
| | | * A set of test cases for the governing structure rule virtual attribute |
| | | * provider. |
| | | */ |
| | | public class Issue387TestCase |
| | | extends ExtensionsTestCase |
| | | { |
| | | |
| | | /** |
| | | * Ensures that the Directory Server is running. |
| | | * |
| | | * @throws Exception If an unexpected problem occurs. |
| | | */ |
| | | @BeforeClass |
| | | public void startServer() |
| | | throws Exception |
| | | { |
| | | TestCaseUtils.startServer(); |
| | | TestCaseUtils.initializeTestBackend(true); |
| | | TestCaseUtils.clearBackend("userRoot", "dc=example,dc=com"); |
| | | |
| | | int resultCode = TestCaseUtils.applyModifications(true, |
| | | "dn: cn=schema", |
| | | "changetype: modify", |
| | | "add: nameForms", |
| | | "nameForms: ( 1.3.6.1.4.1.56521.999.8.1.7 NAME 'commonNameForm' DESC 'Name Form for a commonName orgRole structure' OC organizationalRole MUST cn )", |
| | | "-", |
| | | "add: ditStructureRules", |
| | | "dITStructureRules: ( 150 NAME 'commonNameStructureRule' FORM commonNameForm )", |
| | | "dITStructureRules: ( 151 NAME 'commonNameSubStructureRule' FORM commonNameForm SUP 150 )" |
| | | ); |
| | | assertEquals(resultCode, 0); |
| | | } |
| | | |
| | | @Test |
| | | public void test() |
| | | throws Exception |
| | | { |
| | | GoverningStructureRuleVirtualAttributeProvider provider = |
| | | new GoverningStructureRuleVirtualAttributeProvider(); |
| | | |
| | | Entry entry = TestCaseUtils.addEntry( |
| | | "dn: cn=first,dc=example,dc=com", |
| | | "objectClass: top", |
| | | "objectClass: organizationalRole" |
| | | ); |
| | | |
| | | entry.processVirtualAttributes(); |
| | | assertTrue(provider.hasValue(entry, getRule(provider), ByteString.valueOfUtf8("150"))); |
| | | |
| | | |
| | | entry = DirectoryServer.getEntry(DN.valueOf("dc=example,dc=com")); |
| | | assertNotNull(entry); |
| | | assertFalse(entry.hasAttribute(getGoverningStructureRuleAttributeType())); |
| | | |
| | | entry = TestCaseUtils.addEntry( |
| | | "dn: cn=second,cn=first,dc=example,dc=com", |
| | | "objectClass: top", |
| | | "objectClass: organizationalRole" |
| | | ); |
| | | entry.processVirtualAttributes(); |
| | | assertTrue(provider.hasValue(entry, getRule(provider), ByteString.valueOfUtf8("150"))); |
| | | } |
| | | |
| | | private VirtualAttributeRule getRule(VirtualAttributeProvider<?> provider) |
| | | { |
| | | return new VirtualAttributeRule(getGoverningStructureRuleAttributeType(), provider, |
| | | Collections.<DN>emptySet(), SearchScope.WHOLE_SUBTREE, |
| | | Collections.<DN>emptySet(), |
| | | Collections.<SearchFilter>emptySet(), |
| | | VirtualAttributeCfgDefn.ConflictBehavior.VIRTUAL_OVERRIDES_REAL); |
| | | } |
| | | } |