Skip to content
Snippets Groups Projects
Commit fc5d5059 authored by OZGCloud's avatar OZGCloud
Browse files

Merge pull request 'OZG-3968 log warning when 400 on updating user resource'...

Merge pull request 'OZG-3968 log warning when 400 on updating user resource' (#65) from OZG-3968-log-level-anpassen-fuer-schreiben-in-keycloak into master

Reviewed-on: https://git.ozg-sh.de/mgm/user-manager/pulls/65
parents afc818d0 40d5b77d
Branches
Tags
No related merge requests found
...@@ -31,12 +31,14 @@ import java.util.stream.StreamSupport; ...@@ -31,12 +31,14 @@ import java.util.stream.StreamSupport;
import javax.enterprise.context.ApplicationScoped; import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject; import javax.inject.Inject;
import javax.ws.rs.BadRequestException;
import javax.ws.rs.ClientErrorException; import javax.ws.rs.ClientErrorException;
import javax.ws.rs.ProcessingException; import javax.ws.rs.ProcessingException;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.eclipse.microprofile.config.inject.ConfigProperty; import org.eclipse.microprofile.config.inject.ConfigProperty;
import org.keycloak.admin.client.resource.RealmResource; import org.keycloak.admin.client.resource.RealmResource;
import org.keycloak.admin.client.resource.UserResource;
import org.keycloak.representations.idm.UserRepresentation; import org.keycloak.representations.idm.UserRepresentation;
import de.itvsh.kop.common.logging.KopLogging; import de.itvsh.kop.common.logging.KopLogging;
...@@ -96,7 +98,15 @@ class KeycloakApiService { ...@@ -96,7 +98,15 @@ class KeycloakApiService {
var ozgCloudUserIdInKeycloak = userRepresentation.firstAttribute(attributeName); var ozgCloudUserIdInKeycloak = userRepresentation.firstAttribute(attributeName);
if (ObjectUtils.notEqual(ozgCloudUserIdInKeycloak, attributeValue)) { if (ObjectUtils.notEqual(ozgCloudUserIdInKeycloak, attributeValue)) {
userRepresentation.singleAttribute(attributeName, attributeValue); userRepresentation.singleAttribute(attributeName, attributeValue);
tryUpdateUserResource(userResource,userRepresentation, attributeName);
}
}
private void tryUpdateUserResource(UserResource userResource, UserRepresentation userRepresentation, String attributeName) {
try {
userResource.update(userRepresentation); userResource.update(userRepresentation);
} catch (BadRequestException e) {
LOG.warn("Could not update user attribute {} in Keycloak.", attributeName, e);
} }
} }
} }
\ No newline at end of file
...@@ -31,6 +31,7 @@ import static org.mockito.Mockito.*; ...@@ -31,6 +31,7 @@ import static org.mockito.Mockito.*;
import java.util.function.Supplier; import java.util.function.Supplier;
import java.util.stream.Stream; import java.util.stream.Stream;
import javax.ws.rs.BadRequestException;
import javax.ws.rs.ClientErrorException; import javax.ws.rs.ClientErrorException;
import javax.ws.rs.ProcessingException; import javax.ws.rs.ProcessingException;
...@@ -254,5 +255,14 @@ class KeycloakApiServiceTest { ...@@ -254,5 +255,14 @@ class KeycloakApiServiceTest {
verify(userRepresentation, never()).singleAttribute(ATTRIBUTE_NAME_USER_ID, ATTRIBUTE_VALUE_USER_ID); verify(userRepresentation, never()).singleAttribute(ATTRIBUTE_NAME_USER_ID, ATTRIBUTE_VALUE_USER_ID);
} }
@Test
void shouldCatchBadRequestException() {
when(userRepresentation.firstAttribute(ATTRIBUTE_NAME_USER_ID)).thenReturn(NEW_USER_ID);
doThrow(new BadRequestException("error message")).when(userResource).update(userRepresentation);
assertThatCode(
() -> service.updateAttribute(KEYCLOAK_USER_ID, ATTRIBUTE_NAME_USER_ID, ATTRIBUTE_VALUE_USER_ID)).doesNotThrowAnyException();
}
} }
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment