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