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

andrea-patricelli pushed a commit to branch 4_1_X
in repository https://gitbox.apache.org/repos/asf/syncope.git


The following commit(s) were added to refs/heads/4_1_X by this push:
     new bac305d454 [SYNCOPE-1986] fixes upgrader query to migrate user/group 
owner to user/group manager (#1477)
bac305d454 is described below

commit bac305d454f874eb6290455ed93e5ee3b8ba9a14
Author: Andrea Patricelli <[email protected]>
AuthorDate: Fri Jul 31 10:56:08 2026 +0200

    [SYNCOPE-1986] fixes upgrader query to migrate user/group owner to 
user/group manager (#1477)
---
 .../persistence/jpa/upgrade/GenerateUpgradeSQL.java  |  4 ++--
 .../jpa/upgrade/GenerateUpgradeSQLTest.java          | 20 ++++++++++++++++++++
 .../src/test/resources/syncope40.postgresql.sql      |  4 ++--
 3 files changed, 24 insertions(+), 4 deletions(-)

diff --git 
a/core/persistence-jpa-upgrader/src/main/java/org/apache/syncope/core/persistence/jpa/upgrade/GenerateUpgradeSQL.java
 
b/core/persistence-jpa-upgrader/src/main/java/org/apache/syncope/core/persistence/jpa/upgrade/GenerateUpgradeSQL.java
index cc86a67c8f..6de47930d2 100644
--- 
a/core/persistence-jpa-upgrader/src/main/java/org/apache/syncope/core/persistence/jpa/upgrade/GenerateUpgradeSQL.java
+++ 
b/core/persistence-jpa-upgrader/src/main/java/org/apache/syncope/core/persistence/jpa/upgrade/GenerateUpgradeSQL.java
@@ -33,9 +33,9 @@ public class GenerateUpgradeSQL {
             DROP TABLE TypeExtension_AnyTypeClass;
             DROP TABLE TypeExtension;
 
-            UPDATE SyncopeGroup SET userOwner_id=uManager_id;
+            UPDATE SyncopeGroup SET uManager_id=userOwner_id;
             ALTER TABLE SyncopeGroup DROP COLUMN userOwner_id;
-            UPDATE SyncopeGroup SET groupOwner_id=gManager_id;
+            UPDATE SyncopeGroup SET gManager_id=groupOwner_id;
             ALTER TABLE SyncopeGroup DROP COLUMN groupOwner_id;
 
             INSERT INTO OIDCOpEntity SELECT id,json AS jwks,'{}' AS 
customScopes FROM OIDCJWKS;
diff --git 
a/core/persistence-jpa-upgrader/src/test/java/org/apache/syncope/core/persistence/jpa/upgrade/GenerateUpgradeSQLTest.java
 
b/core/persistence-jpa-upgrader/src/test/java/org/apache/syncope/core/persistence/jpa/upgrade/GenerateUpgradeSQLTest.java
index 6336f3fa3a..1b928a3953 100644
--- 
a/core/persistence-jpa-upgrader/src/test/java/org/apache/syncope/core/persistence/jpa/upgrade/GenerateUpgradeSQLTest.java
+++ 
b/core/persistence-jpa-upgrader/src/test/java/org/apache/syncope/core/persistence/jpa/upgrade/GenerateUpgradeSQLTest.java
@@ -19,6 +19,7 @@
 package org.apache.syncope.core.persistence.jpa.upgrade;
 
 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.fail;
 
 import io.zonky.test.db.postgres.embedded.EmbeddedPostgres;
@@ -27,7 +28,10 @@ import java.io.StringWriter;
 import java.sql.SQLException;
 import java.util.function.Supplier;
 import javax.sql.DataSource;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,6 +44,7 @@ import 
org.springframework.test.context.DynamicPropertyRegistry;
 import org.springframework.test.context.DynamicPropertySource;
 import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
 
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
 @SpringJUnitConfig(classes = PersistenceUpgraderContext.class)
 class GenerateUpgradeSQLTest {
 
@@ -88,6 +93,7 @@ class GenerateUpgradeSQLTest {
     @Autowired
     private GenerateUpgradeSQL generateUpgradeSQL;
 
+    @Order(1)
     @Test
     void run() throws IOException, SQLException {
         StringWriter out = new StringWriter();
@@ -100,4 +106,18 @@ class GenerateUpgradeSQLTest {
                 new ResourceDatabasePopulator(new 
ByteArrayResource(out.toString().getBytes())),
                 SYNCOPE_DS);
     }
+
+    @Order(2)
+    @Test
+    void issue1986() {
+        JdbcTemplate jdbcTemplate = new JdbcTemplate(SYNCOPE_DS);
+        // root group has user owner rossini
+        assertEquals("1417acbe-cbf6-4277-9372-e75e04f97000",
+                jdbcTemplate.queryForObject("SELECT uManager_id FROM 
SyncopeGroup WHERE id = ?", String.class,
+                        "37d15e4c-cdc1-460b-a591-8505c8133806"));
+        // child group has group owner root
+        assertEquals("37d15e4c-cdc1-460b-a591-8505c8133806",
+                jdbcTemplate.queryForObject("SELECT gManager_id FROM 
SyncopeGroup WHERE id = ?", String.class,
+                        "b1f7c12d-ec83-441f-a50e-1691daaedf3b"));
+    }
 }
diff --git 
a/core/persistence-jpa-upgrader/src/test/resources/syncope40.postgresql.sql 
b/core/persistence-jpa-upgrader/src/test/resources/syncope40.postgresql.sql
index 5291c6c4c5..c908b4da82 100644
--- a/core/persistence-jpa-upgrader/src/test/resources/syncope40.postgresql.sql
+++ b/core/persistence-jpa-upgrader/src/test/resources/syncope40.postgresql.sql
@@ -4352,8 +4352,8 @@ INSERT INTO public.syncopedomain VALUES ('Two', 
'{"_class":"org.apache.syncope.c
 -- Data for Name: syncopegroup; Type: TABLE DATA; Schema: public; Owner: -
 --
 
-INSERT INTO public.syncopegroup VALUES 
('37d15e4c-cdc1-460b-a591-8505c8133806', NULL, '2010-10-20 10:00:00+00', 
'admin', NULL, '2010-10-20 10:00:00+00', 'admin', NULL, 'root', '[{"schema": 
"icon", "values": [{"stringValue": "niceIcon"}]}, {"schema": "show", "values": 
[{"booleanValue": true}]}, {"schema": "rderived_sx", "values": [{"stringValue": 
"sx"}]}, {"schema": "rderived_dx", "values": [{"stringValue": "dx"}]}]', 
'e4c28e7a-9dbf-4ee7-9441-93812a0d4a28', NULL, NULL);
-INSERT INTO public.syncopegroup VALUES 
('b1f7c12d-ec83-441f-a50e-1691daaedf3b', NULL, '2010-10-20 10:00:00+00', 
'admin', NULL, '2010-10-20 10:00:00+00', 'admin', NULL, 'child', '[{"schema": 
"icon", "values": [{"stringValue": "badIcon"}]}]', 
'e4c28e7a-9dbf-4ee7-9441-93812a0d4a28', NULL, NULL);
+INSERT INTO public.syncopegroup VALUES 
('37d15e4c-cdc1-460b-a591-8505c8133806', NULL, '2010-10-20 10:00:00+00', 
'admin', NULL, '2010-10-20 10:00:00+00', 'admin', NULL, 'root', '[{"schema": 
"icon", "values": [{"stringValue": "niceIcon"}]}, {"schema": "show", "values": 
[{"booleanValue": true}]}, {"schema": "rderived_sx", "values": [{"stringValue": 
"sx"}]}, {"schema": "rderived_dx", "values": [{"stringValue": "dx"}]}]', 
'e4c28e7a-9dbf-4ee7-9441-93812a0d4a28', NULL, '1417acbe-cbf6-4277-9372- [...]
+INSERT INTO public.syncopegroup VALUES 
('b1f7c12d-ec83-441f-a50e-1691daaedf3b', NULL, '2010-10-20 10:00:00+00', 
'admin', NULL, '2010-10-20 10:00:00+00', 'admin', NULL, 'child', '[{"schema": 
"icon", "values": [{"stringValue": "badIcon"}]}]', 
'e4c28e7a-9dbf-4ee7-9441-93812a0d4a28', '37d15e4c-cdc1-460b-a591-8505c8133806', 
NULL);
 INSERT INTO public.syncopegroup VALUES 
('29f96485-729e-4d31-88a1-6fc60e4677f3', NULL, '2010-10-20 10:00:00+00', 
'admin', NULL, '2010-10-20 10:00:00+00', 'admin', NULL, 'citizen', NULL, 
'e4c28e7a-9dbf-4ee7-9441-93812a0d4a28', NULL, NULL);
 INSERT INTO public.syncopegroup VALUES 
('8fb2d51e-c605-4e80-a72b-13ffecf1aa9a', NULL, '2010-10-20 10:00:00+00', 
'admin', NULL, '2010-10-20 10:00:00+00', 'admin', NULL, 'employee', 
'[{"schema": "icon", "values": [{"stringValue": "icon4"}]}]', 
'e4c28e7a-9dbf-4ee7-9441-93812a0d4a28', NULL, NULL);
 INSERT INTO public.syncopegroup VALUES 
('a3c1a693-a6be-483f-a2b3-5cfec146f4bf', NULL, '2010-10-20 10:00:00+00', 
'admin', NULL, '2010-10-20 10:00:00+00', 'admin', NULL, 'secretary', NULL, 
'e4c28e7a-9dbf-4ee7-9441-93812a0d4a28', NULL, NULL);

Reply via email to