From e0e6524a8a157e25ff0c07d13cb7a78f76adb245 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Mon, 28 Oct 2024 13:09:05 +0100
Subject: [PATCH] OZG-6867 Throw exception instead of logging a warning

---
 src/main/java/de/ozgcloud/admin/keycloak/GroupMapper.java | 2 +-
 .../keycloak/GroupRepresentationMappingException.java     | 8 ++++++++
 .../java/de/ozgcloud/admin/keycloak/GroupMapperTest.java  | 8 ++++----
 3 files changed, 13 insertions(+), 5 deletions(-)
 create mode 100644 src/main/java/de/ozgcloud/admin/keycloak/GroupRepresentationMappingException.java

diff --git a/src/main/java/de/ozgcloud/admin/keycloak/GroupMapper.java b/src/main/java/de/ozgcloud/admin/keycloak/GroupMapper.java
index 4af927fa..2559aec6 100644
--- a/src/main/java/de/ozgcloud/admin/keycloak/GroupMapper.java
+++ b/src/main/java/de/ozgcloud/admin/keycloak/GroupMapper.java
@@ -44,7 +44,7 @@ abstract class GroupMapper {
 			return null;
 		}
 		if (values.size() > 1 && values.stream().distinct().count() > 1) {
-			LOG.warn("Group contains multiple values for {}. The first one is taken.", keycloakApiProperties.getOrganisationsEinheitIdKey());
+			throw new GroupRepresentationMappingException("Group contains multiple values for organisationsEinheitId: %s".formatted(values));
 		}
 		return values.getFirst();
 	}
diff --git a/src/main/java/de/ozgcloud/admin/keycloak/GroupRepresentationMappingException.java b/src/main/java/de/ozgcloud/admin/keycloak/GroupRepresentationMappingException.java
new file mode 100644
index 00000000..c07743dd
--- /dev/null
+++ b/src/main/java/de/ozgcloud/admin/keycloak/GroupRepresentationMappingException.java
@@ -0,0 +1,8 @@
+package de.ozgcloud.admin.keycloak;
+
+public class GroupRepresentationMappingException extends RuntimeException {
+
+	public GroupRepresentationMappingException(String message) {
+		super(message);
+	}
+}
diff --git a/src/test/java/de/ozgcloud/admin/keycloak/GroupMapperTest.java b/src/test/java/de/ozgcloud/admin/keycloak/GroupMapperTest.java
index a8f6474f..7d0c09d5 100644
--- a/src/test/java/de/ozgcloud/admin/keycloak/GroupMapperTest.java
+++ b/src/test/java/de/ozgcloud/admin/keycloak/GroupMapperTest.java
@@ -235,14 +235,14 @@ class GroupMapperTest {
 		}
 
 		@Test
-		void shouldReturnFirstValueIfMultipleAreAvailable() {
+		void shouldThrowExceptionIfMultipleValuesAreAvailable() {
 			givenOrganisationsEinheitIdProperty();
 			var value = GroupRepresentationTestFactory.ORGANISATIONS_EINHEIT_ID;
 			var value2 = UUID.randomUUID().toString();
 
-			var result = mapper.getOrganisationsEinheitId(Map.of(ORGANIZATIONS_EINHEIT_ID_ATTRIBUTE, List.of(value, value2)));
-
-			assertThat(result).isEqualTo(value);
+			assertThatExceptionOfType(GroupRepresentationMappingException.class)
+					.isThrownBy(() ->  mapper.getOrganisationsEinheitId(Map.of(ORGANIZATIONS_EINHEIT_ID_ATTRIBUTE, List.of(value, value2))))
+					.withMessage("Group contains multiple values for organisationsEinheitId: %s", List.of(value, value2));
 		}
 	}
 
-- 
GitLab