This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch 4_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git


The following commit(s) were added to refs/heads/4_0_X by this push:
     new 4e25508580 [SYNCOPE-1905] Fix SinglePullJobDelegate and add test pull 
single group (#1157)
4e25508580 is described below

commit 4e25508580d6fa97c965c9d28520ceb481393b45
Author: Valerio Crescia <valerio.cres...@tirasa.net>
AuthorDate: Wed Aug 13 11:25:21 2025 +0200

    [SYNCOPE-1905] Fix SinglePullJobDelegate and add test pull single group 
(#1157)
---
 .../java/pushpull/SinglePullJobDelegate.java       |  1 +
 .../apache/syncope/fit/core/PullTaskITCase.java    | 35 ++++++++++++++++++++++
 2 files changed, 36 insertions(+)

diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePullJobDelegate.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePullJobDelegate.java
index f3b23a0086..329ca5b328 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePullJobDelegate.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePullJobDelegate.java
@@ -124,6 +124,7 @@ public class SinglePullJobDelegate extends PullJobDelegate 
implements SyncopeSin
             AnyType anyType = anyTypeDAO.findById(provision.getAnyType()).
                     orElseThrow(() -> new NotFoundException("AnyType" + 
provision.getAnyType()));
 
+            ghandler = buildGroupHandler();
             dispatcher.addHandlerSupplier(provision.getObjectClass(), () -> {
                 SyncopePullResultHandler handler;
                 switch (anyType.getKind()) {
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java
index abca7b0960..fcb7ed5981 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java
@@ -80,6 +80,7 @@ import org.apache.syncope.common.lib.to.MembershipTO;
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.PropagationTaskTO;
 import org.apache.syncope.common.lib.to.Provision;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.to.PullTaskTO;
 import org.apache.syncope.common.lib.to.RemediationTO;
@@ -118,6 +119,7 @@ import 
org.apache.syncope.core.provisioning.java.pushpull.LDAPPasswordPullAction
 import org.apache.syncope.fit.core.reference.TestInboundActions;
 import org.identityconnectors.framework.common.objects.AttributeUtil;
 import org.identityconnectors.framework.common.objects.Name;
+import org.identityconnectors.framework.common.objects.Uid;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.springframework.core.task.SimpleAsyncTaskExecutor;
@@ -1641,4 +1643,37 @@ public class PullTaskITCase extends AbstractTaskITCase {
             Optional.ofNullable(user).ifPresent(u -> deleteUser(u.getKey()));
         }
     }
+
+    @Test
+    public void issueSYNCOPE1905() {
+
+        ldapCleanup();
+
+        PullTaskTO pullTaskTO = new PullTaskTO();
+        pullTaskTO.setResource(RESOURCE_NAME_LDAP);
+        pullTaskTO.setDestinationRealm(SyncopeConstants.ROOT_REALM);
+        pullTaskTO.setUnmatchingRule(UnmatchingRule.PROVISION);
+        pullTaskTO.setMatchingRule(MatchingRule.UPDATE);
+        pullTaskTO.setPerformCreate(true);
+        pullTaskTO.setPerformUpdate(true);
+
+        ProvisioningReport result = null;
+        try {
+            List<ProvisioningReport> results =
+                RECONCILIATION_SERVICE.pull(new 
ReconQuery.Builder(AnyTypeKind.GROUP.name(),
+                    RESOURCE_NAME_LDAP).fiql(
+                    SyncopeClient.getConnObjectTOFiqlSearchConditionBuilder()
+                        .is(Uid.NAME)
+                        .equalToIgnoreCase("testLDAPGroup")
+                        .query()).build(), pullTaskTO);
+
+            assertNotNull(results.getFirst());
+            result = results.getFirst();
+
+            assertEquals(ProvisioningReport.Status.SUCCESS, 
result.getStatus());
+            assertEquals("testLDAPGroup", results.getFirst().getName());
+        } finally {
+            Optional.ofNullable(result).ifPresent(r -> 
deleteGroup(r.getKey()));
+        }
+    }
 }

Reply via email to