From 89ddafbea8a663bde5adb414e99ca2dd5486ef96 Mon Sep 17 00:00:00 2001 From: Andrea Patricelli Date: Thu, 30 Jul 2026 11:40:04 +0200 Subject: [PATCH] [SYNCOPE-1986] fixes upgrader query to migrate user/group owner to user/group manager --- .../jpa/upgrade/GenerateUpgradeSQL.java | 4 ++-- .../jpa/upgrade/GenerateUpgradeSQLTest.java | 20 +++++++++++++++++++ .../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 cc86a67c8f2..6de47930d2b 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 6336f3fa3a4..1b928a39534 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.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.DynamicPropertySource; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) @SpringJUnitConfig(classes = PersistenceUpgraderContext.class) class GenerateUpgradeSQLTest { @@ -88,6 +93,7 @@ static void registerTestProperties(final DynamicPropertyRegistry registry) { @Autowired private GenerateUpgradeSQL generateUpgradeSQL; + @Order(1) @Test void run() throws IOException, SQLException { StringWriter out = new StringWriter(); @@ -100,4 +106,18 @@ void run() throws IOException, SQLException { 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 5291c6c4c5b..c908b4da829 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-e75e04f97000'); +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);