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 7e1bd7661be10bdd1f8a32999d862bc07630b25b..e32cdab3dc4d01a9733df08d49e930d0882cbe23 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 @@ -27,8 +27,6 @@ import java.util.Objects; import java.util.Optional; import java.util.stream.Stream; -import jakarta.enterprise.context.ApplicationScoped; - import org.apache.commons.lang3.StringUtils; import de.ozgcloud.user.common.errorhandling.FunctionalException; @@ -37,8 +35,7 @@ import de.ozgcloud.user.common.errorhandling.TechnicalException; import de.ozgcloud.user.common.logging.OzgCloudLogging; import de.ozgcloud.user.keycloak.KeycloakUserRemoteService; import de.ozgcloud.user.settings.UserSettings; -import io.smallrye.mutiny.Uni; -import io.smallrye.mutiny.infrastructure.Infrastructure; +import jakarta.enterprise.context.ApplicationScoped; import lombok.RequiredArgsConstructor; @ApplicationScoped @@ -120,17 +117,7 @@ public class UserService { } private Optional<User> findInKeycloakAndSave(String externalId) { - return keycloakUserRemoteService.findUserById(externalId).map(this::saveAndSync); - } - - public User saveAndSync(User user) { - var saved = save(user); - Uni.createFrom() - .item(user) - .runSubscriptionOn(Infrastructure.getDefaultWorkerPool()) - .subscribe() - .with(u -> keycloakUserRemoteService.updateOzgCloudUserId(saved)); - return saved; + return keycloakUserRemoteService.findUserById(externalId).map(this::save); } public Stream<String> findAllInactiveUserIds() { diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/keycloak/KeycloakApiService.java b/user-manager-server/src/main/java/de/ozgcloud/user/keycloak/KeycloakApiService.java index ce3d7471dabc9db2573454eaec4034de5e1442d7..d70695d6cf069664040630ad42df12f392710f8d 100644 --- a/user-manager-server/src/main/java/de/ozgcloud/user/keycloak/KeycloakApiService.java +++ b/user-manager-server/src/main/java/de/ozgcloud/user/keycloak/KeycloakApiService.java @@ -29,17 +29,8 @@ import java.util.function.Supplier; import java.util.stream.Stream; import java.util.stream.StreamSupport; -import jakarta.enterprise.context.ApplicationScoped; -import jakarta.inject.Inject; -import jakarta.ws.rs.BadRequestException; -import jakarta.ws.rs.ClientErrorException; -import jakarta.ws.rs.NotFoundException; -import jakarta.ws.rs.ProcessingException; - -import org.apache.commons.lang3.ObjectUtils; import org.eclipse.microprofile.config.inject.ConfigProperty; import org.keycloak.admin.client.resource.RealmResource; -import org.keycloak.admin.client.resource.UserResource; import org.keycloak.representations.idm.UserRepresentation; import de.ozgcloud.user.RemoteUserIterator; @@ -47,6 +38,11 @@ import de.ozgcloud.user.User; import de.ozgcloud.user.UserResourceMapper; import de.ozgcloud.user.common.errorhandling.KeycloakUnavailableException; import de.ozgcloud.user.common.logging.OzgCloudLogging; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import jakarta.ws.rs.ClientErrorException; +import jakarta.ws.rs.NotFoundException; +import jakarta.ws.rs.ProcessingException; import lombok.extern.log4j.Log4j2; @ApplicationScoped @@ -96,23 +92,4 @@ class KeycloakApiService { throw new KeycloakUnavailableException(properties.user(), properties.realm(), keycloakUrl, e); } } - - public void updateAttribute(String keycloakUserId, String attributeName, String attributeValue) { - var userResource = realmResource.users().get(keycloakUserId); - var userRepresentation = userResource.toRepresentation(); - var ozgCloudUserIdInKeycloak = userRepresentation.firstAttribute(attributeName); - if (ObjectUtils.notEqual(ozgCloudUserIdInKeycloak, attributeValue)) { - userRepresentation.singleAttribute(attributeName, attributeValue); - tryUpdateUserResource(userResource, userRepresentation, attributeName); - } - } - - void tryUpdateUserResource(UserResource userResource, UserRepresentation userRepresentation, String attributeName) { - try { - userResource.update(userRepresentation); - } catch (BadRequestException e) { - LOG.warn("Could not update user attribute {} in Keycloak.", attributeName, e); - } - } - } \ No newline at end of file diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/keycloak/KeycloakUserRemoteService.java b/user-manager-server/src/main/java/de/ozgcloud/user/keycloak/KeycloakUserRemoteService.java index ed7610ad3f8c03e229477a411a98067dc24f1593..b9d520aa220b6891cb8d270eaa10b35fd3926760 100644 --- a/user-manager-server/src/main/java/de/ozgcloud/user/keycloak/KeycloakUserRemoteService.java +++ b/user-manager-server/src/main/java/de/ozgcloud/user/keycloak/KeycloakUserRemoteService.java @@ -26,18 +26,15 @@ package de.ozgcloud.user.keycloak; import java.util.Optional; import java.util.stream.Stream; -import jakarta.enterprise.context.ApplicationScoped; -import jakarta.inject.Inject; - import de.ozgcloud.user.User; import de.ozgcloud.user.common.logging.OzgCloudLogging; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; @ApplicationScoped @OzgCloudLogging public class KeycloakUserRemoteService { - public static final String ATTRIBUTE_NAME_OZG_CLOUD_USER_ID = "ozgCloudUserId"; - @Inject KeycloakApiService apiService; @@ -45,10 +42,6 @@ public class KeycloakUserRemoteService { return apiService.findAllUser(); } - public void updateOzgCloudUserId(User user) { - apiService.updateAttribute(user.getKeycloakUserId(), ATTRIBUTE_NAME_OZG_CLOUD_USER_ID, user.getId().toString()); - } - public Optional<User> findUserById(String id) { return apiService.findUserById(id); } diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/sync/SyncService.java b/user-manager-server/src/main/java/de/ozgcloud/user/sync/SyncService.java index 006cd983a77d172fb2616b98ac269252768f57d0..11fe3eb99d1c80b9ce9b4f9043f306bd10dea275 100644 --- a/user-manager-server/src/main/java/de/ozgcloud/user/sync/SyncService.java +++ b/user-manager-server/src/main/java/de/ozgcloud/user/sync/SyncService.java @@ -25,15 +25,14 @@ package de.ozgcloud.user.sync; import java.util.function.Predicate; -import jakarta.enterprise.context.ApplicationScoped; -import jakarta.inject.Inject; - import org.apache.commons.collections4.CollectionUtils; import de.ozgcloud.user.User; import de.ozgcloud.user.UserService; import de.ozgcloud.user.common.logging.OzgCloudLogging; import de.ozgcloud.user.keycloak.KeycloakUserRemoteService; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; @ApplicationScoped @OzgCloudLogging @@ -49,7 +48,7 @@ class SyncService { void sync(long syncTimestamp) { keycloakService.getAllUsers() .filter(HAS_ANY_ROLE) - .forEach(user -> userService.saveAndSync(addLastSyncTimestamp(user, syncTimestamp))); + .forEach(user -> userService.save(addLastSyncTimestamp(user, syncTimestamp))); userService.markUnsyncedUsersAsDeleted(syncTimestamp); } 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 ee6c7fc84091ad2fbb53b764158c994ec80050ed..9a24a9dbf8018b41f388585528396170457ce77d 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 @@ -182,7 +182,7 @@ class UserServiceTest { void shouldCallKeycloakRemoteService() { var user = UserTestFactory.create(); when(keycloakRemoteService.findUserById(anyString())).thenReturn(Optional.of(user)); - when(service.saveAndSync(user)).thenReturn(user); + when(service.save(user)).thenReturn(user); service.findByExternalId(EXTERNAL_ID); @@ -190,14 +190,14 @@ class UserServiceTest { } @Test - void shouldCallSaveAndSync() { + void shouldCallSave() { var user = UserTestFactory.create(); when(keycloakRemoteService.findUserById(anyString())).thenReturn(Optional.of(user)); - doReturn(user).when(service).saveAndSync(user); + doReturn(user).when(service).save(user); service.findByExternalId(EXTERNAL_ID); - verify(service).saveAndSync(user); + verify(service).save(user); } @Test @@ -206,28 +206,6 @@ class UserServiceTest { } } - @Nested - class TestSaveAndSync { - - @Test - void shouldSaveUser() { - var user = UserTestFactory.create(); - - service.saveAndSync(user); - - verify(service).save(user); - } - - @Test - void shouldSyncUser() { - var user = UserTestFactory.create(); - - var saved = service.saveAndSync(user); - - verify(keycloakRemoteService, timeout(1000)).updateOzgCloudUserId(saved); - } - } - @Nested class TestFindActiveUsers { diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/keycloak/KeycloakApiServiceTest.java b/user-manager-server/src/test/java/de/ozgcloud/user/keycloak/KeycloakApiServiceTest.java index dd502aafc722e39fa631ecb4d5d2cf148d66bfb7..bbd5196f6965938b2d3c2abb0e7a8d7652a92948 100644 --- a/user-manager-server/src/test/java/de/ozgcloud/user/keycloak/KeycloakApiServiceTest.java +++ b/user-manager-server/src/test/java/de/ozgcloud/user/keycloak/KeycloakApiServiceTest.java @@ -31,11 +31,6 @@ import static org.mockito.Mockito.*; import java.util.function.Supplier; import java.util.stream.Stream; -import jakarta.ws.rs.BadRequestException; -import jakarta.ws.rs.ClientErrorException; -import jakarta.ws.rs.NotFoundException; -import jakarta.ws.rs.ProcessingException; - import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -44,8 +39,6 @@ import org.keycloak.admin.client.resource.RealmResource; import org.keycloak.admin.client.resource.UserResource; import org.keycloak.admin.client.resource.UsersResource; import org.keycloak.representations.idm.UserRepresentation; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; @@ -56,6 +49,9 @@ import de.ozgcloud.user.UserRepresentationTestFactory; import de.ozgcloud.user.UserResourceMapper; import de.ozgcloud.user.UserTestFactory; import de.ozgcloud.user.common.errorhandling.KeycloakUnavailableException; +import jakarta.ws.rs.ClientErrorException; +import jakarta.ws.rs.NotFoundException; +import jakarta.ws.rs.ProcessingException; class KeycloakApiServiceTest { @@ -191,123 +187,4 @@ class KeycloakApiServiceTest { return service.handlingKeycloakException(runnable); } } - - @DisplayName("Set user attribute") - @Nested - class TestUpdateUserAttribute { - - private static final String KEYCLOAK_USER_ID = "1ae2-b123"; - private static final String ATTRIBUTE_NAME_USER_ID = "userId"; - private static final String ATTRIBUTE_VALUE_USER_ID = "10"; - private static final String NEW_USER_ID = "1010"; - - @Mock - private UsersResource usersResource; - @Mock - private UserResource userResource; - @Mock - private UserRepresentation userRepresentation; - - @BeforeEach - void beforeEach() { - when(realmResource.users()).thenReturn(usersResource); - when(usersResource.get(KEYCLOAK_USER_ID)).thenReturn(userResource); - when(userResource.toRepresentation()).thenReturn(userRepresentation); - when(userRepresentation.firstAttribute(ATTRIBUTE_NAME_USER_ID)).thenReturn(ATTRIBUTE_VALUE_USER_ID); - } - - @Test - void shouldGetUsersResource() { - service.updateAttribute(KEYCLOAK_USER_ID, ATTRIBUTE_NAME_USER_ID, ATTRIBUTE_VALUE_USER_ID); - - verify(realmResource).users(); - } - - @Test - void shouldGetUserResource() { - service.updateAttribute(KEYCLOAK_USER_ID, ATTRIBUTE_NAME_USER_ID, ATTRIBUTE_VALUE_USER_ID); - - verify(usersResource).get(KEYCLOAK_USER_ID); - } - - @Test - void shouldGetUserRepresentation() { - service.updateAttribute(KEYCLOAK_USER_ID, ATTRIBUTE_NAME_USER_ID, ATTRIBUTE_VALUE_USER_ID); - - verify(userResource).toRepresentation(); - } - - @Test - void shouldUpdateAttributeIfNotExist() { - when(userRepresentation.firstAttribute(ATTRIBUTE_NAME_USER_ID)).thenReturn(null); - - service.updateAttribute(KEYCLOAK_USER_ID, ATTRIBUTE_NAME_USER_ID, ATTRIBUTE_VALUE_USER_ID); - - verify(userRepresentation).singleAttribute(ATTRIBUTE_NAME_USER_ID, ATTRIBUTE_VALUE_USER_ID); - verify(service).tryUpdateUserResource(userResource, userRepresentation, ATTRIBUTE_NAME_USER_ID); - } - - @Test - void shouldUpdateAttributeIfExistsWithDifferentValue() { - when(userRepresentation.firstAttribute(ATTRIBUTE_NAME_USER_ID)).thenReturn(NEW_USER_ID); - - service.updateAttribute(KEYCLOAK_USER_ID, ATTRIBUTE_NAME_USER_ID, ATTRIBUTE_VALUE_USER_ID); - - verify(userRepresentation).singleAttribute(ATTRIBUTE_NAME_USER_ID, ATTRIBUTE_VALUE_USER_ID); - verify(service).tryUpdateUserResource(userResource, userRepresentation, ATTRIBUTE_NAME_USER_ID); - } - - @Test - void shouldUpdateAttributeIfNewOneGiven() { - service.updateAttribute(KEYCLOAK_USER_ID, ATTRIBUTE_NAME_USER_ID, NEW_USER_ID); - - verify(userRepresentation).singleAttribute(ATTRIBUTE_NAME_USER_ID, NEW_USER_ID); - verify(service).tryUpdateUserResource(userResource, userRepresentation, ATTRIBUTE_NAME_USER_ID); - } - - @Test - void shouldNotSetAttributeIfExistsWithSameValue() { - service.updateAttribute(KEYCLOAK_USER_ID, ATTRIBUTE_NAME_USER_ID, ATTRIBUTE_VALUE_USER_ID); - - verify(userRepresentation, never()).singleAttribute(ATTRIBUTE_NAME_USER_ID, ATTRIBUTE_VALUE_USER_ID); - verify(service, never()).tryUpdateUserResource(userResource, userRepresentation, ATTRIBUTE_NAME_USER_ID); - } - - @Test - void shouldCatchBadRequestException() { - when(userRepresentation.firstAttribute(ATTRIBUTE_NAME_USER_ID)).thenReturn(NEW_USER_ID); - doThrow(new BadRequestException("error message")).when(userResource).update(any(UserRepresentation.class)); - - assertThatCode( - () -> service.updateAttribute(KEYCLOAK_USER_ID, ATTRIBUTE_NAME_USER_ID, ATTRIBUTE_VALUE_USER_ID)).doesNotThrowAnyException(); - } - } - - @Nested - class TestTryUpdateUserResource { - - private static final String ATTRIBUTE_NAME_USER_ID = "userId"; - - @Captor - private ArgumentCaptor<UserRepresentation> userRepresentationArgumentCaptor; - - @Mock - private UserRepresentation userRepresentation; - - @Test - void shouldUpdateUserResource() { - service.tryUpdateUserResource(userResource, userRepresentation, ATTRIBUTE_NAME_USER_ID); - - verify(userResource).update(any(UserRepresentation.class)); - } - - @Test - void shouldCreateOlderUserRepresentation() { - service.tryUpdateUserResource(userResource, UserRepresentationTestFactory.create(), ATTRIBUTE_NAME_USER_ID); - - verify(userResource).update(userRepresentationArgumentCaptor.capture()); - assertThat(userRepresentationArgumentCaptor.getValue()).usingRecursiveComparison().isEqualTo(UserRepresentationTestFactory.create()); - } - - } } \ No newline at end of file diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/keycloak/KeycloakUserRemoteServiceITCase.java b/user-manager-server/src/test/java/de/ozgcloud/user/keycloak/KeycloakUserRemoteServiceITCase.java deleted file mode 100644 index a1c3fc8a3c1e428e489bb8627ae6debe8df3045e..0000000000000000000000000000000000000000 --- a/user-manager-server/src/test/java/de/ozgcloud/user/keycloak/KeycloakUserRemoteServiceITCase.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (C) 2023 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.user.keycloak; - -import static de.ozgcloud.user.keycloak.KeycloakUserRemoteService.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.util.List; - -import jakarta.inject.Inject; - -import org.bson.types.ObjectId; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.MethodOrderer; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestMethodOrder; -import org.keycloak.admin.client.resource.RealmResource; - -import de.ozgcloud.user.User; -import de.ozgcloud.user.UserTestFactory; -import io.quarkus.test.junit.QuarkusTest; -import io.quarkus.test.junit.TestProfile; -import io.quarkus.test.junit.mockito.InjectSpy; - -@QuarkusTest -@TestProfile(KeycloakTestProfile.class) -class KeycloakUserRemoteServiceITCase { - - @InjectSpy - KeycloakUserRemoteService service; - @InjectSpy - KeycloakApiService apiService; - @Inject - RealmResource realmResource; - - @Test - void shouldCallGetAllUsers() { - service.getAllUsers(); - - verify(apiService).findAllUser(); - } - - @Nested - @TestMethodOrder(MethodOrderer.OrderAnnotation.class) - class TestUpdateOzgCloudUserId { - - private static final String KEYCLOAK_USER_ID = "90748555-7894-4854-8292-1f6106826962"; - - @DisplayName("Set ozgCloudUserId attribute in keycloak on new user") - @Test - @Order(1) - void shouldSetOzgCloudUserId() { - User user = prepareUser(); - service.updateOzgCloudUserId(user); - - var ozgCloudUserId = getOzgCloudUserIdFromKeycloak(); - - assertThat(user.getId().toString()).isEqualTo(ozgCloudUserId); - } - - @DisplayName("Update ozgCloudUserId attribute in keycloak on existing user") - @Test - @Order(2) - void shouldUpdateOzgCloudUserId() { - var oldCloudUserId = getOzgCloudUserIdFromKeycloak(); - service.updateOzgCloudUserId(prepareUser()); - - var newCloudUserId = getOzgCloudUserIdFromKeycloak(); - - assertThat(oldCloudUserId).isNotEqualTo(newCloudUserId); - } - - private User prepareUser() { - return UserTestFactory.createBuilder() - .id(new ObjectId()) - .externalId(KEYCLOAK_USER_ID) - .keycloakUserId(KEYCLOAK_USER_ID) - .email("dorothea@test.local") - .firstName("Dorothea") - .lastName("Doe") - .fullName("Dorothea Doe") - .fullNameReversed("Doe Dorothea") - .username("dorothea") - .organisationsEinheitIds(List.of("248240886", "9030229", "10363455")) - .build(); - } - - private String getOzgCloudUserIdFromKeycloak() { - var userResource = realmResource.users().get(KEYCLOAK_USER_ID); - return userResource.toRepresentation().getAttributes().get(ATTRIBUTE_NAME_OZG_CLOUD_USER_ID).getFirst(); - } - - } - -} \ No newline at end of file diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/keycloak/KeycloakUserRemoteServiceTest.java b/user-manager-server/src/test/java/de/ozgcloud/user/keycloak/KeycloakUserRemoteServiceTest.java index d52a814ea299242c879cbee10c396fe2b36da901..bea58008d452f1a9107e1a19b8a1ae86e59e8f34 100644 --- a/user-manager-server/src/test/java/de/ozgcloud/user/keycloak/KeycloakUserRemoteServiceTest.java +++ b/user-manager-server/src/test/java/de/ozgcloud/user/keycloak/KeycloakUserRemoteServiceTest.java @@ -54,21 +54,6 @@ class KeycloakUserRemoteServiceTest { } } - @DisplayName("Update ozgCloudUserId attribute in keycloak") - @Nested - class TestUpdateOzgCloudUserId { - - @Test - void shouldCallApiService() { - remoteService.updateOzgCloudUserId(UserTestFactory.create()); - - verify(apiService).updateAttribute( - UserTestFactory.KEYCLOAK_USER_ID, - KeycloakUserRemoteService.ATTRIBUTE_NAME_OZG_CLOUD_USER_ID, - UserTestFactory.ID.toString()); - } - } - @Nested @DisplayName("Get user by id") class TestGetUser { diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/sync/SyncServiceTest.java b/user-manager-server/src/test/java/de/ozgcloud/user/sync/SyncServiceTest.java index ef53ee7ba5cf3849418dd2d1c7967cbf533621ba..8cb3273d0ac4f88ec08aeed75469ae41978c9d89 100644 --- a/user-manager-server/src/test/java/de/ozgcloud/user/sync/SyncServiceTest.java +++ b/user-manager-server/src/test/java/de/ozgcloud/user/sync/SyncServiceTest.java @@ -76,7 +76,7 @@ class SyncServiceTest { } @Test - void shouldCallSaveAndSync() { + void shouldCallSave() { var syncTimestamp = Instant.now().toEpochMilli(); var updatedUser = UserTestFactory.createBuilder().lastSyncTimestamp(syncTimestamp).build(); when(keycloakService.getAllUsers()).thenReturn(Stream.of(user, user)); @@ -84,19 +84,19 @@ class SyncServiceTest { service.sync(syncTimestamp); - verify(userService, times(2)).saveAndSync(updatedUser); + verify(userService, times(2)).save(updatedUser); } @Test void shouldAddLasSyncToUser() { when(keycloakService.getAllUsers()).thenReturn(Stream.of(user)); - when(userService.saveAndSync(any())).thenReturn(user); + when(userService.save(any())).thenReturn(user); var timestamp = Instant.now().toEpochMilli(); service.sync(timestamp); - verify(userService).saveAndSync(userCaptor.capture()); + verify(userService).save(userCaptor.capture()); assertThat(userCaptor.getValue().getLastSyncTimestamp()).isEqualTo(timestamp); } diff --git a/user-manager-server/src/test/resources/keycloak/realm-export.json b/user-manager-server/src/test/resources/keycloak/realm-export.json index 570206097ccd6e220f94da720c8d35cce979873f..bbe911983d224d5d3a20df1a7c76f4c28d32946d 100755 --- a/user-manager-server/src/test/resources/keycloak/realm-export.json +++ b/user-manager-server/src/test/resources/keycloak/realm-export.json @@ -811,22 +811,6 @@ "jsonType.label": "int" } }, - { - "id": "e068b24d-9731-4b81-a49a-8107e3053daa", - "name": "ozgCloudUserId", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "aggregate.attrs": "false", - "multivalued": "false", - "userinfo.token.claim": "true", - "user.attribute": "ozgCloudUserId", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "ozgCloudUserId" - } - }, { "id": "9ed930aa-7dfd-441b-b4c1-829c8abc060e", "name": "organisationseinheitIdMapper", @@ -1003,22 +987,6 @@ "claim.name": "resource_access.${client_id}.roles", "multivalued": "true" } - }, - { - "id": "14117f93-bf7a-4c20-a8cf-b46d96598c57", - "name": "ozgCloudUserId", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "aggregate.attrs": "false", - "multivalued": "false", - "userinfo.token.claim": "true", - "user.attribute": "ozgCloudUserId", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "ozgCloudUserId" - } } ], "defaultClientScopes": [