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 a5bfbeb..6ea260b 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/tests/UserTest.java b/src/test/java/com/knecon/fforesight/tests/UserTest.java index aa59134..b05faad 100644 --- a/src/test/java/com/knecon/fforesight/tests/UserTest.java +++ b/src/test/java/com/knecon/fforesight/tests/UserTest.java @@ -133,5 +133,23 @@ 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()); + try { + userClient.createUser(createUserRequest); + } catch (FeignException e) { + assertThat(e.status()).isEqualTo(400); + } + + } }