72.3 User service implementation - addNewUser Testing (#8)
This commit is contained in:
@ -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;
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@ -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");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user