72.3 User service implementation - addNewUser Testing (#8)

This commit is contained in:
Art
2021-09-09 14:43:42 +03:00
parent 8fd99f43ce
commit 4d9fae3b4e
3 changed files with 61 additions and 4 deletions

View File

@ -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;

View File

@ -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();
}
}

View File

@ -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");
}
}