From 4d9fae3b4e55e74a14803e138ae4822775ffc68d Mon Sep 17 00:00:00 2001 From: Art Date: Thu, 9 Sep 2021 14:43:42 +0300 Subject: [PATCH] 72.3 User service implementation - addNewUser Testing (#8) --- .../supportportal/backend/domain/Role.java | 8 ++-- .../backend/common/BaseUserTest.java | 14 ++++++ .../backend/service/UserServiceTest.java | 43 +++++++++++++++++++ 3 files changed, 61 insertions(+), 4 deletions(-) diff --git a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/domain/Role.java b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/domain/Role.java index 2d667e1..a5752f9 100644 --- a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/domain/Role.java +++ b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/domain/Role.java @@ -4,10 +4,10 @@ import static net.shyshkin.study.fullstack.supportportal.backend.constant.Author public enum Role { ROLE_USER(USER_AUTHORITIES), - ROlE_HR(HR_AUTHORITIES), - ROlE_MANAGER(MANAGER_AUTHORITIES), - ROlE_ADMIN(ADMIN_AUTHORITIES), - ROlE_SUPER_ADMIN(SUPER_ADMIN_AUTHORITIES); + ROLE_HR(HR_AUTHORITIES), + ROLE_MANAGER(MANAGER_AUTHORITIES), + ROLE_ADMIN(ADMIN_AUTHORITIES), + ROLE_SUPER_ADMIN(SUPER_ADMIN_AUTHORITIES); private String[] authorities; diff --git a/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/common/BaseUserTest.java b/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/common/BaseUserTest.java index f373769..58285b6 100644 --- a/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/common/BaseUserTest.java +++ b/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/common/BaseUserTest.java @@ -2,6 +2,7 @@ package net.shyshkin.study.fullstack.supportportal.backend.common; import com.github.javafaker.Faker; import net.shyshkin.study.fullstack.supportportal.backend.domain.User; +import net.shyshkin.study.fullstack.supportportal.backend.domain.dto.UserDto; import net.shyshkin.study.fullstack.supportportal.backend.repository.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -39,4 +40,17 @@ public abstract class BaseUserTest { .authorities(new String[]{"user:delete", "user:read"}) .build(); } + + protected UserDto createRandomUserDto() { + return UserDto.builder() + .email(FAKER.bothify("????##@example.com")) + .firstName(FAKER.name().firstName()) + .lastName(FAKER.name().lastName()) + .username(FAKER.name().username()) + .isActive(true) + .isNonLocked(true) + .role("ROLE_ADMIN") + .build(); + } + } \ No newline at end of file diff --git a/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceTest.java b/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceTest.java index 2789a9b..47b06ab 100644 --- a/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceTest.java +++ b/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceTest.java @@ -3,6 +3,7 @@ package net.shyshkin.study.fullstack.supportportal.backend.service; import lombok.extern.slf4j.Slf4j; import net.shyshkin.study.fullstack.supportportal.backend.common.BaseUserTest; import net.shyshkin.study.fullstack.supportportal.backend.domain.User; +import net.shyshkin.study.fullstack.supportportal.backend.domain.dto.UserDto; import org.assertj.core.api.ThrowableAssert; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -61,4 +62,46 @@ class UserServiceTest extends BaseUserTest { .isInstanceOf(UsernameNotFoundException.class) .hasMessage("User with username `" + username + "` not found"); } + + @Test + void addNewUser_correct() { + + //given + UserDto randomUserDto = createRandomUserDto(); + + //when + User newUser = userService.addNewUser(randomUserDto); + + //then + log.debug("Added new user: {}", newUser); + assertThat(newUser) + .isNotNull() + .hasNoNullFieldsOrPropertiesExcept("lastLoginDate", "lastLoginDateDisplay") + .hasFieldOrPropertyWithValue("username", randomUserDto.getUsername()) + .hasFieldOrPropertyWithValue("email", randomUserDto.getEmail()) + .hasFieldOrPropertyWithValue("firstName", randomUserDto.getFirstName()) + .hasFieldOrPropertyWithValue("lastName", randomUserDto.getLastName()) + .hasFieldOrPropertyWithValue("isActive", randomUserDto.isActive()) + .hasFieldOrPropertyWithValue("isNotLocked", randomUserDto.isNonLocked()) + .hasFieldOrPropertyWithValue("role", "ROLE_ADMIN") + ; + } + + @Test + void addNewUser_incorrectRole() { + + //given + UserDto randomUserDto = createRandomUserDto(); + randomUserDto.setRole("FAKE_ROLE"); + + //when + ThrowableAssert.ThrowingCallable execution = () -> { + User user = userService.addNewUser(randomUserDto); + }; + + //then + assertThatThrownBy(execution) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("No enum constant net.shyshkin.study.fullstack.supportportal.backend.domain.Role.FAKE_ROLE"); + } } \ No newline at end of file