diff --git a/src/main/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitSynchronizationException.java b/src/main/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitSynchronizationException.java index cc431ca257e3c6b6acc109c09154e128709694df..42944f0a41b1d5eb7cd1a724ab8e1792bc7da7de 100644 --- a/src/main/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitSynchronizationException.java +++ b/src/main/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitSynchronizationException.java @@ -5,4 +5,8 @@ public class OrganisationsEinheitSynchronizationException extends RuntimeExcepti public OrganisationsEinheitSynchronizationException(String message) { super(message); } + + public OrganisationsEinheitSynchronizationException(String message, Throwable cause) { + super(message, cause); + } } diff --git a/src/main/java/de/ozgcloud/admin/organisationseinheit/SyncService.java b/src/main/java/de/ozgcloud/admin/organisationseinheit/SyncService.java index e8c5a9ec12bf4c08076314dd6fb9e00b059edefe..a1c911a20d16d2cb4fdbbd707417180521c0bd9f 100644 --- a/src/main/java/de/ozgcloud/admin/organisationseinheit/SyncService.java +++ b/src/main/java/de/ozgcloud/admin/organisationseinheit/SyncService.java @@ -100,7 +100,8 @@ class SyncService { Optional<String> addAsGroupInKeycloak(OrganisationsEinheit organisationsEinheit) { if (organisationsEinheit.getParentId() != null) { - throw new OrganisationsEinheitSynchronizationException("Organisationseinheit %s has parent".formatted(organisationsEinheit.getOrganisationsEinheitId())); + throw new OrganisationsEinheitSynchronizationException( + "Organisationseinheit %s has parent".formatted(organisationsEinheit.getOrganisationsEinheitId())); } var addGroupData = organisationsEinheitMapper.toAddGroupData(organisationsEinheit); return addGroupInKeycloak(addGroupData); @@ -119,8 +120,7 @@ class SyncService { try { return Optional.of(keycloakRemoteService.addGroup(addGroupData)); } catch (ResourceCreationException e) { - LOG.error("Error adding group %s in Keycloak".formatted(addGroupData), e); - return Optional.empty(); + throw new OrganisationsEinheitSynchronizationException("Error creating group %s in Keycloak".formatted(addGroupData), e); } } } diff --git a/src/test/java/de/ozgcloud/admin/organisationseinheit/SyncServiceTest.java b/src/test/java/de/ozgcloud/admin/organisationseinheit/SyncServiceTest.java index 8208bcef2381378656844cdcac5e81d395c28bce..3645e9934b395137998058d17f0ceb5d3ad865bb 100644 --- a/src/test/java/de/ozgcloud/admin/organisationseinheit/SyncServiceTest.java +++ b/src/test/java/de/ozgcloud/admin/organisationseinheit/SyncServiceTest.java @@ -603,6 +603,9 @@ class SyncServiceTest { @Nested class TestAddGroupInKeycloak { + private static final String FAILURE_MESSAGE = LoremIpsum.getInstance().getWords(5); + private final Throwable resourceCreationException = new ResourceCreationException(FAILURE_MESSAGE); + private final String keycloakId = GroupTestFactory.ID; private final AddGroupData addGroupData = AddGroupDataTestFactory.create(); @@ -625,12 +628,11 @@ class SyncServiceTest { } @Test - void shouldReturnEmptyInCaseOfException() { + void shouldThrowExceptionInCaseOfResourceCreationException() { givenAddGroupFailed(); - var keycloakId = callService(); - - assertThat(keycloakId).isEmpty(); + assertThatExceptionOfType(OrganisationsEinheitSynchronizationException.class).isThrownBy(this::callService) + .withMessage("Error creating group %s in Keycloak", addGroupData.toString()).withCause(resourceCreationException); } private void givenAddGroupSuccessful() { @@ -638,7 +640,7 @@ class SyncServiceTest { } private void givenAddGroupFailed() { - when(keycloakRemoteService.addGroup(addGroupData)).thenThrow(new ResourceCreationException("Failure")); + when(keycloakRemoteService.addGroup(addGroupData)).thenThrow(resourceCreationException); } private Optional<String> callService() {