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 {
|
public enum Role {
|
||||||
ROLE_USER(USER_AUTHORITIES),
|
ROLE_USER(USER_AUTHORITIES),
|
||||||
ROlE_HR(HR_AUTHORITIES),
|
ROLE_HR(HR_AUTHORITIES),
|
||||||
ROlE_MANAGER(MANAGER_AUTHORITIES),
|
ROLE_MANAGER(MANAGER_AUTHORITIES),
|
||||||
ROlE_ADMIN(ADMIN_AUTHORITIES),
|
ROLE_ADMIN(ADMIN_AUTHORITIES),
|
||||||
ROlE_SUPER_ADMIN(SUPER_ADMIN_AUTHORITIES);
|
ROLE_SUPER_ADMIN(SUPER_ADMIN_AUTHORITIES);
|
||||||
|
|
||||||
|
|
||||||
private String[] authorities;
|
private String[] authorities;
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package net.shyshkin.study.fullstack.supportportal.backend.common;
|
|||||||
|
|
||||||
import com.github.javafaker.Faker;
|
import com.github.javafaker.Faker;
|
||||||
import net.shyshkin.study.fullstack.supportportal.backend.domain.User;
|
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 net.shyshkin.study.fullstack.supportportal.backend.repository.UserRepository;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
@ -39,4 +40,17 @@ public abstract class BaseUserTest {
|
|||||||
.authorities(new String[]{"user:delete", "user:read"})
|
.authorities(new String[]{"user:delete", "user:read"})
|
||||||
.build();
|
.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 lombok.extern.slf4j.Slf4j;
|
||||||
import net.shyshkin.study.fullstack.supportportal.backend.common.BaseUserTest;
|
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.User;
|
||||||
|
import net.shyshkin.study.fullstack.supportportal.backend.domain.dto.UserDto;
|
||||||
import org.assertj.core.api.ThrowableAssert;
|
import org.assertj.core.api.ThrowableAssert;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -61,4 +62,46 @@ class UserServiceTest extends BaseUserTest {
|
|||||||
.isInstanceOf(UsernameNotFoundException.class)
|
.isInstanceOf(UsernameNotFoundException.class)
|
||||||
.hasMessage("User with username `" + username + "` not found");
|
.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