mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Valery Kharseko
17.32.2024 19898792d82508306ccfdedbd5482068b4f7767e
[#90, #432] FIX delete entries in overlapping backends (#434)

2 files modified
25 ■■■■■ changed files
opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendDeleteOperation.java 3 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/test/java/org/openidentityplatform/opendj/OverlappingBackendTestSuite.java 22 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/workflowelement/localbackend/LocalBackendDeleteOperation.java
@@ -13,6 +13,7 @@
 *
 * Copyright 2008-2009 Sun Microsystems, Inc.
 * Portions Copyright 2011-2016 ForgeRock AS.
 * Portions Copyright 2022-2024 3A Systems, LLC.
 */
package org.opends.server.workflowelement.localbackend;
@@ -281,9 +282,9 @@
      {
          if (dn.isInScopeOf(entryDN, SearchScope.WHOLE_SUBTREE)) {
              setResultCodeAndMessageNoInfoDisclosure(entry,ResultCode.NOT_ALLOWED_ON_NONLEAF, ERR_DELETE_HAS_SUB_BACKEND.get(entryDN, dn));
          }
        return;
      }
      }
      // Actually perform the delete.
      if (noOp)
opendj-server-legacy/src/test/java/org/openidentityplatform/opendj/OverlappingBackendTestSuite.java
@@ -30,6 +30,7 @@
import java.util.Set;
import static org.assertj.core.api.Assertions.assertThat;
import static org.testng.Assert.assertEquals;
@Test(sequential = true)
public class OverlappingBackendTestSuite extends DirectoryServerTestCase {
@@ -125,5 +126,26 @@
        hasUserRoot(search("o=test"));
        hasUserRoot2(search("o=test"));
        hasUserRoot2(search("ou=eus,o=test"));
        int resultCode = TestCaseUtils.applyModifications(true,
                "dn: uid=user.1,o=test,ou=es,o=test",
                "changetype: modify",
                "add: description",
                "description: user.1");
        assertEquals(resultCode, 0);
        resultCode = TestCaseUtils.applyModifications(true,
                "dn: uid=user.2,o=test,ou=eus,o=test",
                "changetype: modify",
                "add: description",
                "description: user.2");
        assertEquals(resultCode, 0);
        hasUserRoot(search("o=test"));
        hasUserRoot2(search("o=test"));
        hasUserRoot2(search("ou=eus,o=test"));
        TestCaseUtils.deleteEntry(DN.valueOf("uid=user.1,o=test,ou=es,o=test"));
        TestCaseUtils.deleteEntry(DN.valueOf("uid=user.2,o=test,ou=eus,o=test"));
      }
}