diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/UserRepository.java b/user-manager-server/src/main/java/de/ozgcloud/user/UserRepository.java index 7c6767505343751dc8d1bb4b9b106a08ab2bace5..144e7442f231872758457754f968e097f3ec91d6 100644 --- a/user-manager-server/src/main/java/de/ozgcloud/user/UserRepository.java +++ b/user-manager-server/src/main/java/de/ozgcloud/user/UserRepository.java @@ -55,8 +55,9 @@ class UserRepository implements PanacheMongoRepository<User> { EMAIL_FIELD + " like " + param(PARAM_NAME_SEARCH_BY); private static final String AND_DELETED = " and deleted = " + param(PARAM_NAME_DELETED); - private static final String AND_ORGANISATIONS_EINHEIT_ID_IN = " and " + ORGANISATIONS_EINHEIT_IDS_FIELD + " in " + param( + private static final String ORGANISATIONS_EINHEIT_ID_IN_QUERY = ORGANISATIONS_EINHEIT_IDS_FIELD + " in " + param( PARAM_NAME_ORGANISATIONS_EINHEIT_ID); + private static final String AND_ORGANISATIONS_EINHEIT_ID_IN = " and " + ORGANISATIONS_EINHEIT_ID_IN_QUERY; static final String UPDATE_UNSYNCED_USER_QUERY = LAST_SYNC_TIMESTAMP_FIELD + " < " + param(PARAM_NAME_TIMESTAMP); private static String param(String paramName) { @@ -128,8 +129,11 @@ class UserRepository implements PanacheMongoRepository<User> { return find(DELETED_FIELD, true).project(UserIdProjection.class).stream().map(UserIdProjection::getAsString); } - public Stream<User> findAllByOrganisationsEinheitId(String organisationsEinheitId) { - return stream(ORGANISATIONS_EINHEIT_IDS_FIELD, organisationsEinheitId); + public Stream<User> findAllActiveByOrganisationsEinheitId(String organisationsEinheitId) { + var params = Parameters.with(PARAM_NAME_ORGANISATIONS_EINHEIT_ID, organisationsEinheitId) + .and(PARAM_NAME_DELETED, false); + + return find(ORGANISATIONS_EINHEIT_ID_IN_QUERY + AND_DELETED, params).stream(); } public void deleteById(String id) { diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/UserService.java b/user-manager-server/src/main/java/de/ozgcloud/user/UserService.java index b795174f565cc05876638619dabe7b2578fcbc49..b3ec71cd83f23369acf075fcb09e087bad98e5f8 100644 --- a/user-manager-server/src/main/java/de/ozgcloud/user/UserService.java +++ b/user-manager-server/src/main/java/de/ozgcloud/user/UserService.java @@ -149,10 +149,10 @@ public class UserService { } } - public Stream<User> findAllUsersOfOrganisationsEinheit(String organisationsEinheitId) { + public Stream<User> findAllActiveUsersOfOrganisationsEinheit(String organisationsEinheitId) { if (StringUtils.isEmpty(organisationsEinheitId)) { throw new FunctionalException(() -> String.format(MISSING_ORGANISATIONS_EINHEIT_ID_MESSAGE_TEMPLATE, organisationsEinheitId)); } - return repository.findAllByOrganisationsEinheitId(organisationsEinheitId); + return repository.findAllActiveByOrganisationsEinheitId(organisationsEinheitId); } } \ No newline at end of file diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/userprofile/UserProfileGrpcService.java b/user-manager-server/src/main/java/de/ozgcloud/user/userprofile/UserProfileGrpcService.java index b41ec61d533b1a085fd738d96497588ba2147d93..23a0782f7e5dce49a04331efbe233670dd53f440 100644 --- a/user-manager-server/src/main/java/de/ozgcloud/user/userprofile/UserProfileGrpcService.java +++ b/user-manager-server/src/main/java/de/ozgcloud/user/userprofile/UserProfileGrpcService.java @@ -64,7 +64,7 @@ public class UserProfileGrpcService extends UserProfileServiceImplBase { public void getAllByOrganisationsEinheitId(GrpcGetAllByOrganisationsEinheitIdRequest request, StreamObserver<GrpcGetAllByOrganisationsEinheitIdResponse> responseObserver) { - var userProfiles = service.findAllUsersOfOrganisationsEinheit(request.getOrganisationsEinheitId()); + var userProfiles = service.findAllActiveUsersOfOrganisationsEinheit(request.getOrganisationsEinheitId()); responseObserver.onNext(buildGrpcGetAllByOrganisationsEinheitIdResponse(userProfiles)); responseObserver.onCompleted(); diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/UserRepositoryITCase.java b/user-manager-server/src/test/java/de/ozgcloud/user/UserRepositoryITCase.java index b8bcd5e53438f537497048b95bfda7e07bcb95c4..f8a02a481fec06ac1a4e0931bd3d54f44e814b64 100644 --- a/user-manager-server/src/test/java/de/ozgcloud/user/UserRepositoryITCase.java +++ b/user-manager-server/src/test/java/de/ozgcloud/user/UserRepositoryITCase.java @@ -571,7 +571,7 @@ class UserRepositoryITCase { } @Nested - class TestFindAllByOrganisationsEinheitId { + class TestFindAllActiveByOrganisationsEinheitId { private static final String ORGANISATIONSEINHEIT_ID_1 = UUID.randomUUID().toString(); private static final String ORGANISATIONSEINHEIT_ID_2 = UUID.randomUUID().toString(); @@ -591,18 +591,22 @@ class UserRepositoryITCase { .clearOrganisationsEinheitIds() .organisationsEinheitId(ORGANISATIONSEINHEIT_ID_2) .build(); + private final User deletedUser = UserTestFactory.createBuilder() + .id(null) + .clearOrganisationsEinheitIds() + .organisationsEinheitId(ORGANISATIONSEINHEIT_ID_1) + .deleted(true) + .build(); @BeforeEach void init() { repository.deleteAll(); - repository.persist(user1); - repository.persist(user2); - repository.persist(user3); + repository.persist(user1, user2, user3, deletedUser); } @Test - void shouldFindUsersByOrganisationsEinheitId() { - var users = repository.findAllByOrganisationsEinheitId(ORGANISATIONSEINHEIT_ID_1); + void shouldFindActiveUsersByOrganisationsEinheitId() { + var users = repository.findAllActiveByOrganisationsEinheitId(ORGANISATIONSEINHEIT_ID_1); assertThat(users).usingRecursiveFieldByFieldElementComparator().containsExactlyInAnyOrder(user1, user2); } diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/UserRepositoryTest.java b/user-manager-server/src/test/java/de/ozgcloud/user/UserRepositoryTest.java index 635aaf22ff03e8245854c6bd3e6c2efb57049a2b..6a27221abb6084f64343aef9ffdd5d7da2ce8093 100644 --- a/user-manager-server/src/test/java/de/ozgcloud/user/UserRepositoryTest.java +++ b/user-manager-server/src/test/java/de/ozgcloud/user/UserRepositoryTest.java @@ -204,18 +204,12 @@ class UserRepositoryTest { } @Nested - class TestFindAllByOrganisationsEinheitId { + class TestFindAllActiveByOrganisationsEinheitId { @BeforeEach void mock() { - doReturn(Stream.of(user)).when(userRepository).stream(User.ORGANISATIONS_EINHEIT_IDS_FIELD, UserTestFactory.ORGANISTATIONSEINHEITEN_ID); - } - - @Test - void shouldFindUsers() { - callRepository(); - - verify(userRepository).stream(User.ORGANISATIONS_EINHEIT_IDS_FIELD, UserTestFactory.ORGANISTATIONSEINHEITEN_ID); + doReturn(Stream.of(user)).when(panacheQuery).stream(); + doReturn(panacheQuery).when(userRepository).find(anyString(), any(Parameters.class)); } @Test @@ -226,7 +220,7 @@ class UserRepositoryTest { } private Stream<User> callRepository() { - return userRepository.findAllByOrganisationsEinheitId(UserTestFactory.ORGANISTATIONSEINHEITEN_ID); + return userRepository.findAllActiveByOrganisationsEinheitId(UserTestFactory.ORGANISTATIONSEINHEITEN_ID); } } } diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/UserServiceTest.java b/user-manager-server/src/test/java/de/ozgcloud/user/UserServiceTest.java index 447bd4c95368619cd26a69609d7feea5dd91d400..46c00810022af11bf87e562826c55c9d8b544044 100644 --- a/user-manager-server/src/test/java/de/ozgcloud/user/UserServiceTest.java +++ b/user-manager-server/src/test/java/de/ozgcloud/user/UserServiceTest.java @@ -413,13 +413,13 @@ class UserServiceTest { void shouldCallRepository() { callService(); - verify(repository).findAllByOrganisationsEinheitId(UserTestFactory.ORGANISTATIONSEINHEITEN_ID); + verify(repository).findAllActiveByOrganisationsEinheitId(UserTestFactory.ORGANISTATIONSEINHEITEN_ID); } @Test void shouldReturnFoundUsers() { var users = Stream.of(UserTestFactory.create()); - when(repository.findAllByOrganisationsEinheitId(UserTestFactory.ORGANISTATIONSEINHEITEN_ID)).thenReturn(users); + when(repository.findAllActiveByOrganisationsEinheitId(UserTestFactory.ORGANISTATIONSEINHEITEN_ID)).thenReturn(users); var returnedUsers = callService(); @@ -427,7 +427,7 @@ class UserServiceTest { } private Stream<User> callService() { - return service.findAllUsersOfOrganisationsEinheit(UserTestFactory.ORGANISTATIONSEINHEITEN_ID); + return service.findAllActiveUsersOfOrganisationsEinheit(UserTestFactory.ORGANISTATIONSEINHEITEN_ID); } @ParameterizedTest @@ -436,7 +436,7 @@ class UserServiceTest { var expectedMessage = String.format(EXPECTED_EXCEPTION_MESSAGE_TEMPLATE, organisationsEinheitId); assertThatExceptionOfType(FunctionalException.class) - .isThrownBy(() -> service.findAllUsersOfOrganisationsEinheit(organisationsEinheitId)) + .isThrownBy(() -> service.findAllActiveUsersOfOrganisationsEinheit(organisationsEinheitId)) .withMessageStartingWith(expectedMessage); } } diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/UserProfileGrpcServiceTest.java b/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/UserProfileGrpcServiceTest.java index 330f65ac02198bc54e67fe32f8dcad60969a51ce..1ec9cebe168d65bec3d444b61033826752159912 100644 --- a/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/UserProfileGrpcServiceTest.java +++ b/user-manager-server/src/test/java/de/ozgcloud/user/userprofile/UserProfileGrpcServiceTest.java @@ -168,7 +168,7 @@ class UserProfileGrpcServiceTest { @BeforeEach void mock() { - when(userService.findAllUsersOfOrganisationsEinheit(UserTestFactory.ORGANISTATIONSEINHEITEN_ID)).thenReturn(users); + when(userService.findAllActiveUsersOfOrganisationsEinheit(UserTestFactory.ORGANISTATIONSEINHEITEN_ID)).thenReturn(users); doReturn(response).when(grpcService).buildGrpcGetAllByOrganisationsEinheitIdResponse(users); } @@ -176,7 +176,7 @@ class UserProfileGrpcServiceTest { void shouldCallUserService() { callService(); - verify(userService).findAllUsersOfOrganisationsEinheit(UserTestFactory.ORGANISTATIONSEINHEITEN_ID); + verify(userService).findAllActiveUsersOfOrganisationsEinheit(UserTestFactory.ORGANISTATIONSEINHEITEN_ID); } @Test