diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/service/UserService.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/service/UserService.java index 1b0dc79..77b865e 100644 --- a/src/main/java/com/knecon/fforesight/tenantusermanagement/service/UserService.java +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/service/UserService.java @@ -73,6 +73,10 @@ public class UserService { @CacheEvict(value = "${commons.keycloak.userCache}", allEntries = true, beforeInvocation = true) public User createUser(CreateUserRequest user) { + if (StringUtils.isEmpty(user.getEmail())) { + throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Email address must be set"); + } + String username = StringUtils.isEmpty(user.getUsername()) ? user.getEmail() : user.getUsername(); if (!this.getTenantUsersResource().search(username).isEmpty()) { throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "User with this username already exists"); diff --git a/src/test/java/com/knecon/fforesight/tenantusermanagement/tests/UserTest.java b/src/test/java/com/knecon/fforesight/tenantusermanagement/tests/UserTest.java index ffd2030..e79d4ba 100644 --- a/src/test/java/com/knecon/fforesight/tenantusermanagement/tests/UserTest.java +++ b/src/test/java/com/knecon/fforesight/tenantusermanagement/tests/UserTest.java @@ -2,6 +2,8 @@ package com.knecon.fforesight.tenantusermanagement.tests; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.fail; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import java.util.HashSet; import java.util.List; @@ -133,5 +135,21 @@ public class UserTest extends AbstractTenantUserManagementIntegrationTest { } } + + @Test + public void testCreateUserWithoutMail() { + + TenantContext.setTenantId(AbstractTenantUserManagementIntegrationTest.TEST_TENANT_ID); + + CreateUserRequest createUserRequest = new CreateUserRequest(); + createUserRequest.setFirstName("Test"); + createUserRequest.setLastName("New User"); + createUserRequest.setUsername(createUserRequest.getEmail()); + createUserRequest.setRoles(tenantUserManagementProperties.getKcRoleMapping().getAllRoles()); + // Optionally, you can also check the status code of the exception + FeignException e = assertThrows(FeignException.class, () -> userClient.createUser(createUserRequest)); + assertEquals(400, e.status()); + + } }