From 217346b3220842b11679dcc9023b6d09add068d9 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Mon, 13 May 2024 23:27:50 +0200 Subject: [PATCH] OZG-5681 outsource user profile service --- .../bescheid/BescheidEventListener.java | 4 +- .../de/ozgcloud/bescheid/BescheidRequest.java | 2 +- .../de/ozgcloud/bescheid/BescheidService.java | 4 +- .../BescheidManagerCallContextProvider.java | 6 +-- .../callcontext/CurrentUserService.java | 13 ----- .../common/callcontext/UserProfile.java | 15 ------ .../common/callcontext/UserProfileMapper.java | 17 ------ .../callcontext/UserProfileTestFactory.java | 30 ----------- .../bescheid/common/user/UserProfile.java | 38 +++++++++++++ .../common/user/UserProfileMapper.java | 40 ++++++++++++++ .../common/user/UserProfileService.java | 52 ++++++++++++++++++ .../common/user/UserProfileTestFactory.java | 53 +++++++++++++++++++ .../SmartDocumentsBescheidRemoteService.java | 2 +- .../bescheid/BescheidEventListenerITCase.java | 13 +++-- .../bescheid/BescheidEventListenerTest.java | 9 ++-- .../bescheid/BescheidRequestTestFactory.java | 2 +- .../bescheid/BescheidServiceTest.java | 12 ++--- .../bescheid/BescheidTestFactory.java | 2 +- ...artDocumentsBescheidRemoteServiceTest.java | 2 +- .../bescheid/BescheidEventListenerITCase.java | 10 ++-- .../bescheid/BescheidGrpcServiceITCase.java | 7 ++- .../document/DocumentEventListenerITCase.java | 19 ++++--- 22 files changed, 233 insertions(+), 119 deletions(-) delete mode 100644 bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/UserProfile.java delete mode 100644 bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/UserProfileMapper.java delete mode 100644 bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/UserProfileTestFactory.java create mode 100644 bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/user/UserProfile.java create mode 100644 bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/user/UserProfileMapper.java create mode 100644 bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/user/UserProfileService.java create mode 100644 bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/user/UserProfileTestFactory.java diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidEventListener.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidEventListener.java index 7da2c36ae..f42a7e841 100644 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidEventListener.java +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidEventListener.java @@ -40,6 +40,7 @@ import de.ozgcloud.bescheid.Bescheid.SendBy; import de.ozgcloud.bescheid.attacheditem.AttachedItemService; import de.ozgcloud.bescheid.binaryfile.BinaryFileService; import de.ozgcloud.bescheid.common.callcontext.CurrentUserService; +import de.ozgcloud.bescheid.common.user.UserProfileService; import de.ozgcloud.bescheid.nachricht.NachrichtService; import de.ozgcloud.bescheid.smartdocuments.SmartDocumentsProperties; import de.ozgcloud.bescheid.vorgang.VorgangId; @@ -95,6 +96,7 @@ class BescheidEventListener { private final ApplicationEventPublisher eventPublisher; private final CurrentUserService userService; + private final UserProfileService userProfileService; private final Optional<SmartDocumentsProperties> smartDocumentsProperties; @EventListener(condition = IS_CREATE_BESCHEID) @@ -183,7 +185,7 @@ class BescheidEventListener { Optional.ofNullable(eventBody.get(GENEHMIGT_BODYKEY)) .map(Object::toString).map(Boolean::valueOf) .ifPresentOrElse(builder::genehmigt, () -> builder.genehmigt(true)); - builder.createFor(userService.getUserProfile()); + builder.createFor(userProfileService.getUserProfile()); return builder.build(); } diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidRequest.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidRequest.java index 26d88f90e..bd827b7b2 100644 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidRequest.java +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidRequest.java @@ -2,7 +2,7 @@ package de.ozgcloud.bescheid; import java.time.LocalDate; -import de.ozgcloud.bescheid.common.callcontext.UserProfile; +import de.ozgcloud.bescheid.common.user.UserProfile; import de.ozgcloud.bescheid.vorgang.VorgangId; import lombok.Builder; import lombok.Getter; diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidService.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidService.java index 7d7a715a5..667106fd6 100644 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidService.java +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidService.java @@ -12,7 +12,7 @@ import org.springframework.stereotype.Service; import de.ozgcloud.bescheid.attacheditem.AttachedItem; import de.ozgcloud.bescheid.attacheditem.AttachedItemService; import de.ozgcloud.bescheid.attributes.ClientAttributeService; -import de.ozgcloud.bescheid.common.callcontext.CurrentUserService; +import de.ozgcloud.bescheid.common.user.UserProfileService; import de.ozgcloud.bescheid.nachricht.NachrichtService; import de.ozgcloud.bescheid.vorgang.Vorgang; import de.ozgcloud.bescheid.vorgang.VorgangId; @@ -33,7 +33,7 @@ class BescheidService { private final VorgangService vorgangService; private final AttachedItemService attachedItemService; private final NachrichtService nachrichtService; - private final CurrentUserService currentUserService; + private final UserProfileService currentUserService; private final ClientAttributeService bescheidClientAttributeService; private final BuildProperties buildProperties; private final Optional<BescheidRemoteService> remoteService; diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/BescheidManagerCallContextProvider.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/BescheidManagerCallContextProvider.java index 249a3bd2e..69a49780c 100644 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/BescheidManagerCallContextProvider.java +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/BescheidManagerCallContextProvider.java @@ -23,18 +23,14 @@ */ package de.ozgcloud.bescheid.common.callcontext; -import org.springframework.context.annotation.Primary; -import org.springframework.stereotype.Component; - import de.ozgcloud.apilib.common.callcontext.CallContext; import de.ozgcloud.apilib.common.callcontext.OzgCloudCallContextProvider; import de.ozgcloud.apilib.user.OzgCloudUserId; import de.ozgcloud.common.errorhandling.TechnicalException; import lombok.RequiredArgsConstructor; -@Component +//@Component("bescheid_BescheidManagerCallContextProvider") @RequiredArgsConstructor -@Primary public class BescheidManagerCallContextProvider implements OzgCloudCallContextProvider { private final CurrentUserService currentUserService; diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/CurrentUserService.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/CurrentUserService.java index 4d1287ab8..b77b10a64 100644 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/CurrentUserService.java +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/CurrentUserService.java @@ -35,10 +35,7 @@ import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; -import de.ozgcloud.apilib.user.OzgCloudUserId; -import de.ozgcloud.apilib.user.OzgCloudUserProfileService; import de.ozgcloud.command.Command; -import de.ozgcloud.common.errorhandling.TechnicalException; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor @@ -46,21 +43,11 @@ import lombok.RequiredArgsConstructor; public class CurrentUserService { private final AuthenticationTrustResolver trustResolver; - private final Optional<OzgCloudUserProfileService> userProfileService; - private final UserProfileMapper mapper; public CallContextUser getUser() { return findUser().orElseThrow(() -> new IllegalStateException("No authenticated User found")); } - public UserProfile getUserProfile() { - var service = userProfileService.orElseThrow(() -> new IllegalStateException("No connection to user-manager configured.")); - - return getUser().getUserId().map(OzgCloudUserId::from) - .map(service::getById) - .map(mapper::mapProfile).orElseThrow(() -> new TechnicalException("Unknown UserId or cannot load user profile.")); - } - public Optional<CallContextUser> findUser() { return findTrustedAuthentication() .map(this::mapToCallContextUser) diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/UserProfile.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/UserProfile.java deleted file mode 100644 index 1cd483d3a..000000000 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/UserProfile.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.ozgcloud.bescheid.common.callcontext; - -import de.ozgcloud.bescheid.UserId; -import lombok.Builder; -import lombok.Getter; - -@Builder -@Getter -public class UserProfile { - - private UserId id; - private String firstName; - private String lastName; - private String email; -} diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/UserProfileMapper.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/UserProfileMapper.java deleted file mode 100644 index 7563fe9d5..000000000 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/UserProfileMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package de.ozgcloud.bescheid.common.callcontext; - -import org.mapstruct.Mapper; - -import de.ozgcloud.apilib.user.OzgCloudUserId; -import de.ozgcloud.apilib.user.OzgCloudUserProfile; -import de.ozgcloud.bescheid.UserId; - -@Mapper -public interface UserProfileMapper { - - UserProfile mapProfile(OzgCloudUserProfile userProfile); - - default UserId mapUserId(OzgCloudUserId id) { - return UserId.from(id.toString()); - } -} diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/UserProfileTestFactory.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/UserProfileTestFactory.java deleted file mode 100644 index 6c3af38e8..000000000 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/callcontext/UserProfileTestFactory.java +++ /dev/null @@ -1,30 +0,0 @@ -package de.ozgcloud.bescheid.common.callcontext; - -import java.util.UUID; - -import com.thedeanda.lorem.LoremIpsum; - -import de.ozgcloud.bescheid.UserId; - -public class UserProfileTestFactory { - - private static final LoremIpsum LOREM_IPSUM = LoremIpsum.getInstance(); - - public static final UserId ID = UserId.from(UUID.randomUUID().toString()); - - public static final String FIRST_NAME = LOREM_IPSUM.getFirstName(); - public static final String LAST_NAME = LOREM_IPSUM.getLastName(); - public static final String EMAIL = "test-email@local"; - - public static UserProfile create() { - return createBuilder().build(); - } - - public static UserProfile.UserProfileBuilder createBuilder() { - return UserProfile.builder() - .id(ID) - .firstName(FIRST_NAME) - .lastName(LAST_NAME) - .email(EMAIL); - } -} diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/user/UserProfile.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/user/UserProfile.java new file mode 100644 index 000000000..889dbbad4 --- /dev/null +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/user/UserProfile.java @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.bescheid.common.user; + +import de.ozgcloud.bescheid.UserId; +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +public class UserProfile { + + private UserId id; + private String firstName; + private String lastName; + private String email; +} diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/user/UserProfileMapper.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/user/UserProfileMapper.java new file mode 100644 index 000000000..0c7c5ceda --- /dev/null +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/user/UserProfileMapper.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.bescheid.common.user; + +import org.mapstruct.Mapper; + +import de.ozgcloud.apilib.user.OzgCloudUserId; +import de.ozgcloud.apilib.user.OzgCloudUserProfile; +import de.ozgcloud.bescheid.UserId; + +@Mapper +public interface UserProfileMapper { + + UserProfile mapProfile(OzgCloudUserProfile userProfile); + + default UserId mapUserId(OzgCloudUserId id) { + return UserId.from(id.toString()); + } +} diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/user/UserProfileService.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/user/UserProfileService.java new file mode 100644 index 000000000..5346ead50 --- /dev/null +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/user/UserProfileService.java @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.bescheid.common.user; + +import java.util.Optional; + +import org.springframework.stereotype.Service; + +import de.ozgcloud.apilib.user.OzgCloudUserId; +import de.ozgcloud.apilib.user.OzgCloudUserProfileService; +import de.ozgcloud.bescheid.common.callcontext.CurrentUserService; +import de.ozgcloud.common.errorhandling.TechnicalException; +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class UserProfileService { + + private final CurrentUserService currentUserService; + private final Optional<OzgCloudUserProfileService> userProfileService; + private final UserProfileMapper mapper; + + public UserProfile getUserProfile() { + var service = userProfileService.orElseThrow(() -> new IllegalStateException("No connection to user-manager configured.")); + + return currentUserService.getUser().getUserId().map(OzgCloudUserId::from) + .map(service::getById) + .map(mapper::mapProfile).orElseThrow(() -> new TechnicalException("Unknown UserId or cannot load user profile.")); + } + +} diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/user/UserProfileTestFactory.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/user/UserProfileTestFactory.java new file mode 100644 index 000000000..8b20aa41c --- /dev/null +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/common/user/UserProfileTestFactory.java @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.bescheid.common.user; + +import java.util.UUID; + +import com.thedeanda.lorem.LoremIpsum; + +import de.ozgcloud.bescheid.UserId; + +public class UserProfileTestFactory { + + private static final LoremIpsum LOREM_IPSUM = LoremIpsum.getInstance(); + + public static final UserId ID = UserId.from(UUID.randomUUID().toString()); + + public static final String FIRST_NAME = LOREM_IPSUM.getFirstName(); + public static final String LAST_NAME = LOREM_IPSUM.getLastName(); + public static final String EMAIL = "test-email@local"; + + public static UserProfile create() { + return createBuilder().build(); + } + + public static UserProfile.UserProfileBuilder createBuilder() { + return UserProfile.builder() + .id(ID) + .firstName(FIRST_NAME) + .lastName(LAST_NAME) + .email(EMAIL); + } +} diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteService.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteService.java index 07c961a2e..b3ce8a3e1 100644 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteService.java +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteService.java @@ -30,7 +30,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import de.ozgcloud.bescheid.Bescheid; import de.ozgcloud.bescheid.BescheidRemoteService; import de.ozgcloud.bescheid.BescheidRequest; -import de.ozgcloud.bescheid.common.callcontext.UserProfile; +import de.ozgcloud.bescheid.common.user.UserProfile; import de.ozgcloud.bescheid.smartdocuments.SmartDocumentsBescheidRemoteService.SmartDocumentsResponse.SmartDocumentDocument; import de.ozgcloud.bescheid.smartdocuments.SmartDocumentsBescheidRemoteService.SmartDocumentsResponse.SmartDocumentFile; import de.ozgcloud.bescheid.smartdocuments.SmartDocumentsRequest.CustomerData; diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java index 3728f3c86..f3947126d 100644 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java +++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java @@ -15,7 +15,8 @@ import de.ozgcloud.apilib.common.command.OzgCloudCommandService; import de.ozgcloud.apilib.common.command.grpc.CommandMapper; import de.ozgcloud.bescheid.attacheditem.AttachedItemService; import de.ozgcloud.bescheid.common.callcontext.CurrentUserService; -import de.ozgcloud.bescheid.common.callcontext.UserProfile; +import de.ozgcloud.bescheid.common.user.UserProfile; +import de.ozgcloud.bescheid.common.user.UserProfileService; import de.ozgcloud.command.Command; import de.ozgcloud.command.CommandCreatedEventTestFactory; import de.ozgcloud.command.CommandTestFactory; @@ -32,6 +33,8 @@ class BescheidEventListenerITCase { @MockBean private CurrentUserService userService; @MockBean + private UserProfileService userProfileService; + @MockBean private OzgCloudCommandService commandService; @MockBean private CommandMapper commandMapper; @@ -43,13 +46,13 @@ class BescheidEventListenerITCase { @BeforeEach void init() { - when(userService.getUserProfile()).thenReturn(userProfile); + when(userProfileService.getUserProfile()).thenReturn(userProfile); } @Nested class TestCreateBescheid { - private Command command = CommandTestFactory.createBuilder().order(BescheidEventListener.CREATE_BESCHEID_ORDER).build(); + private final Command command = CommandTestFactory.createBuilder().order(BescheidEventListener.CREATE_BESCHEID_ORDER).build(); @Test void shouldCallService() { @@ -69,7 +72,7 @@ class BescheidEventListenerITCase { @Nested class TestDeleteBescheid { - private Command command = CommandTestFactory.createBuilder().order(BescheidEventListener.DELETE_BESCHEID_ORDER).build(); + private final Command command = CommandTestFactory.createBuilder().order(BescheidEventListener.DELETE_BESCHEID_ORDER).build(); @Test void shouldCallService() { @@ -89,7 +92,7 @@ class BescheidEventListenerITCase { @Nested class TestUpdateBescheid { - private Command command = CommandTestFactory.createBuilder().order(BescheidEventListener.UPDATE_BESCHEID_ORDER).build(); + private final Command command = CommandTestFactory.createBuilder().order(BescheidEventListener.UPDATE_BESCHEID_ORDER).build(); @Test void shouldCallService() { diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerTest.java index babf3dda4..dafbf73ec 100644 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerTest.java +++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerTest.java @@ -29,8 +29,9 @@ import de.ozgcloud.bescheid.attacheditem.AttachedItemService; import de.ozgcloud.bescheid.attacheditem.AttachedItemTestFactory; import de.ozgcloud.bescheid.binaryfile.BinaryFileService; import de.ozgcloud.bescheid.common.callcontext.CurrentUserService; -import de.ozgcloud.bescheid.common.callcontext.UserProfile; -import de.ozgcloud.bescheid.common.callcontext.UserProfileTestFactory; +import de.ozgcloud.bescheid.common.user.UserProfile; +import de.ozgcloud.bescheid.common.user.UserProfileService; +import de.ozgcloud.bescheid.common.user.UserProfileTestFactory; import de.ozgcloud.bescheid.nachricht.NachrichtService; import de.ozgcloud.bescheid.smartdocuments.SmartDocumentsProperties; import de.ozgcloud.command.Command; @@ -64,6 +65,8 @@ class BescheidEventListenerTest { private ApplicationEventPublisher eventPublisher; @Mock private CurrentUserService userService; + @Mock + private UserProfileService userProfileService; @Nested class TestOnCreateBescheidCommand { @@ -259,7 +262,7 @@ class BescheidEventListenerTest { @Test void shouldContainUserProfile() { UserProfile user = UserProfileTestFactory.create(); - when(userService.getUserProfile()).thenReturn(user); + when(userProfileService.getUserProfile()).thenReturn(user); var request = listener.createRequest(COMMAND); diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidRequestTestFactory.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidRequestTestFactory.java index adbf4523c..dbe4f9e43 100644 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidRequestTestFactory.java +++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidRequestTestFactory.java @@ -2,7 +2,7 @@ package de.ozgcloud.bescheid; import java.time.LocalDate; -import de.ozgcloud.bescheid.common.callcontext.UserProfileTestFactory; +import de.ozgcloud.bescheid.common.user.UserProfileTestFactory; import de.ozgcloud.bescheid.vorgang.VorgangId; import de.ozgcloud.bescheid.vorgang.VorgangTestFactory; diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidServiceTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidServiceTest.java index 1c7501843..5e7de1cb2 100644 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidServiceTest.java +++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidServiceTest.java @@ -26,8 +26,8 @@ import de.ozgcloud.bescheid.attacheditem.AttachedItem; import de.ozgcloud.bescheid.attacheditem.AttachedItemService; import de.ozgcloud.bescheid.attacheditem.AttachedItemTestFactory; import de.ozgcloud.bescheid.attributes.ClientAttributeService; -import de.ozgcloud.bescheid.common.callcontext.CurrentUserService; -import de.ozgcloud.bescheid.common.callcontext.UserProfile; +import de.ozgcloud.bescheid.common.user.UserProfile; +import de.ozgcloud.bescheid.common.user.UserProfileService; import de.ozgcloud.bescheid.nachricht.NachrichtService; import de.ozgcloud.bescheid.vorgang.ServiceKontoTestFactory; import de.ozgcloud.bescheid.vorgang.Vorgang; @@ -54,7 +54,7 @@ class BescheidServiceTest { @Mock private NachrichtService nachrichtService; @Mock - private CurrentUserService currentUserService; + private UserProfileService userProfileService; @Mock private UserProfile callContextUser; @Mock @@ -181,7 +181,7 @@ class BescheidServiceTest { doNothing().when(service).validateBescheidSendPostfach(any(), anyLong()); lenient().when(callContextUser.getId()).thenReturn(UserId.from("user-id")); - lenient().when(currentUserService.getUserProfile()).thenReturn(callContextUser); + lenient().when(userProfileService.getUserProfile()).thenReturn(callContextUser); } @Test @@ -358,7 +358,7 @@ class BescheidServiceTest { @BeforeEach void init() { when(callContextUser.getId()).thenReturn(UserId.from(CREATED_BY)); - when(currentUserService.getUserProfile()).thenReturn(callContextUser); + when(userProfileService.getUserProfile()).thenReturn(callContextUser); doReturn(FileId.from(DocumentTestFactory.DOCUMENT_FILE)).when(service).getBescheidFileId(any()); } @@ -417,7 +417,7 @@ class BescheidServiceTest { void shouldCallCurrentUserService() { buildBescheid(); - verify(currentUserService).getUserProfile(); + verify(userProfileService).getUserProfile(); } @Test diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidTestFactory.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidTestFactory.java index 12469cfc9..b1f74c30a 100644 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidTestFactory.java +++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidTestFactory.java @@ -7,7 +7,7 @@ import org.springframework.http.MediaType; import com.thedeanda.lorem.LoremIpsum; -import de.ozgcloud.bescheid.common.callcontext.UserProfileTestFactory; +import de.ozgcloud.bescheid.common.user.UserProfileTestFactory; import de.ozgcloud.bescheid.vorgang.ServiceKontoTestFactory; import de.ozgcloud.bescheid.vorgang.VorgangTestFactory; import de.ozgcloud.common.binaryfile.FileId; diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteServiceTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteServiceTest.java index 41ad8368a..5f97a1dec 100644 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteServiceTest.java +++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteServiceTest.java @@ -15,7 +15,7 @@ import org.mockito.Spy; import de.ozgcloud.bescheid.BescheidRequestTestFactory; import de.ozgcloud.bescheid.BescheidTestFactory; -import de.ozgcloud.bescheid.common.callcontext.UserProfileTestFactory; +import de.ozgcloud.bescheid.common.user.UserProfileTestFactory; import de.ozgcloud.bescheid.smartdocuments.SmartDocumentsRequest.CustomerData.UserData; import de.ozgcloud.bescheid.vorgang.VorgangTestFactory; import de.ozgcloud.common.binaryfile.TempFileUtils; diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java index e16d160e4..aaa96ef57 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerITCase.java @@ -264,11 +264,6 @@ class BescheidEventListenerITCase { private String vorgangId; private VorgangAttachedItem bescheidItem; - @AfterAll - static void cleanup() { - SecurityContextHolder.clearContext(); - } - @BeforeEach void init() { SecurityContextHolder.getContext().setAuthentication(CallContextAuthenticationTokenTestFactory.create()); @@ -277,6 +272,11 @@ class BescheidEventListenerITCase { bescheidItem = mongoOperations.save(createBescheidAttachedItemWithDocument(vorgangId, documentFileId)); } + @AfterAll + static void cleanup() { + SecurityContextHolder.clearContext(); + } + @Test void shouldSuccessfullyCompleteCommand() { commandService.createCommand(buildCreateCommandRequest(vorgangId, bescheidItem)); diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidGrpcServiceITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidGrpcServiceITCase.java index 4523bfa24..1dfd7f621 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidGrpcServiceITCase.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/bescheid/BescheidGrpcServiceITCase.java @@ -42,7 +42,8 @@ import de.ozgcloud.bescheid.BescheidServiceGrpc.BescheidServiceBlockingStub; import de.ozgcloud.bescheid.attacheditem.AttachedItemService; import de.ozgcloud.bescheid.common.callcontext.CallContextUser; import de.ozgcloud.bescheid.common.callcontext.CurrentUserService; -import de.ozgcloud.bescheid.common.callcontext.UserProfile; +import de.ozgcloud.bescheid.common.user.UserProfile; +import de.ozgcloud.bescheid.common.user.UserProfileService; import de.ozgcloud.common.test.DataITCase; import de.ozgcloud.vorgang.VorgangManagerServerApplication; import de.ozgcloud.vorgang.attached_item.VorgangAttachedItem; @@ -69,6 +70,8 @@ class BescheidGrpcServiceITCase { @MockBean private CurrentUserService currentUserService; + @MockBean + private UserProfileService userProfileService; @Mock private CallContextUser callContextUser; @Mock @@ -82,7 +85,7 @@ class BescheidGrpcServiceITCase { mongoOperations.dropCollection(VorgangAttachedItem.COLLECTION_NAME); mongoOperations.dropCollection(Vorgang.COLLECTION_NAME); when(currentUserService.getUser()).thenReturn(callContextUser); - when(currentUserService.getUserProfile()).thenReturn(userProfile); + when(userProfileService.getUserProfile()).thenReturn(userProfile); } @Test diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/document/DocumentEventListenerITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/document/DocumentEventListenerITCase.java index bdbcf04f6..5f4b31816 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/document/DocumentEventListenerITCase.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/document/DocumentEventListenerITCase.java @@ -30,22 +30,20 @@ import static org.mockito.Mockito.*; import java.util.Map; import java.util.concurrent.TimeUnit; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; import org.mockito.Captor; -import org.mockito.Mock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.boot.test.mock.mockito.SpyBean; import org.springframework.context.ApplicationEventPublisher; import org.springframework.data.mongodb.core.MongoOperations; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.test.annotation.DirtiesContext; import de.ozgcloud.apilib.common.command.grpc.CommandMapper; -import de.ozgcloud.bescheid.common.callcontext.CallContextUser; -import de.ozgcloud.bescheid.common.callcontext.CurrentUserService; import de.ozgcloud.command.Command; import de.ozgcloud.command.CommandCreatedEvent; import de.ozgcloud.command.CommandFailedEvent; @@ -53,6 +51,7 @@ import de.ozgcloud.common.test.DataITCase; import de.ozgcloud.vorgang.VorgangManagerServerApplication; import de.ozgcloud.vorgang.attached_item.VorgangAttachedItem; import de.ozgcloud.vorgang.attached_item.VorgangAttachedItemTestFactory; +import de.ozgcloud.vorgang.callcontext.CallContextAuthenticationTokenTestFactory; import de.ozgcloud.vorgang.command.CommandTestFactory; @SpringBootTest(classes = VorgangManagerServerApplication.class, properties = { @@ -76,20 +75,20 @@ class DocumentEventListenerITCase { @Autowired private MongoOperations mongoOperations; - @MockBean - private CurrentUserService currentUserService; - @Mock - private CallContextUser callContextUser; - @Captor private ArgumentCaptor<BescheidDocumentCreatedEvent> bescheidDocumentCreatedEventCaptor; @Captor private ArgumentCaptor<CommandFailedEvent> commandFailedEventCaptor; + @AfterAll + static void cleanup() { + SecurityContextHolder.clearContext(); + } + @BeforeEach void init() { + SecurityContextHolder.getContext().setAuthentication(CallContextAuthenticationTokenTestFactory.create()); mongoOperations.dropCollection(VorgangAttachedItem.COLLECTION_NAME); - when(currentUserService.getUser()).thenReturn(callContextUser); } @Test -- GitLab