package com.pollex.pam.service.mapper; import static org.assertj.core.api.Assertions.assertThat; import com.pollex.pam.domain.User; import com.pollex.pam.service.dto.AdminUserDTO; import com.pollex.pam.service.dto.UserDTO; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.apache.commons.lang3.RandomStringUtils; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; /** * Unit tests for {@link UserMapper}. */ class UserMapperTest { private static final String DEFAULT_LOGIN = "johndoe"; private static final Long DEFAULT_ID = 1L; private UserMapper userMapper; private User user; private AdminUserDTO userDto; @BeforeEach public void init() { userMapper = new UserMapper(); user = new User(); user.setLogin(DEFAULT_LOGIN); user.setPassword(RandomStringUtils.random(60)); user.setActivated(true); user.setEmail("johndoe@localhost"); user.setFirstName("john"); user.setLastName("doe"); user.setImageUrl("image_url"); user.setLangKey("en"); userDto = new AdminUserDTO(user); } @Test void usersToUserDTOsShouldMapOnlyNonNullUsers() { List users = new ArrayList<>(); users.add(user); users.add(null); List userDTOS = userMapper.usersToUserDTOs(users); assertThat(userDTOS).isNotEmpty().size().isEqualTo(1); } @Test void userDTOsToUsersShouldMapOnlyNonNullUsers() { List usersDto = new ArrayList<>(); usersDto.add(userDto); usersDto.add(null); List users = userMapper.userDTOsToUsers(usersDto); assertThat(users).isNotEmpty().size().isEqualTo(1); } @Test void userDTOsToUsersWithAuthoritiesStringShouldMapToUsersWithAuthoritiesDomain() { Set authoritiesAsString = new HashSet<>(); authoritiesAsString.add("ADMIN"); userDto.setAuthorities(authoritiesAsString); List usersDto = new ArrayList<>(); usersDto.add(userDto); List users = userMapper.userDTOsToUsers(usersDto); assertThat(users).isNotEmpty().size().isEqualTo(1); assertThat(users.get(0).getAuthorities()).isNotNull(); assertThat(users.get(0).getAuthorities()).isNotEmpty(); assertThat(users.get(0).getAuthorities().iterator().next().getName()).isEqualTo("ADMIN"); } @Test void userDTOsToUsersMapWithNullAuthoritiesStringShouldReturnUserWithEmptyAuthorities() { userDto.setAuthorities(null); List usersDto = new ArrayList<>(); usersDto.add(userDto); List users = userMapper.userDTOsToUsers(usersDto); assertThat(users).isNotEmpty().size().isEqualTo(1); assertThat(users.get(0).getAuthorities()).isNotNull(); assertThat(users.get(0).getAuthorities()).isEmpty(); } @Test void userDTOToUserMapWithAuthoritiesStringShouldReturnUserWithAuthorities() { Set authoritiesAsString = new HashSet<>(); authoritiesAsString.add("ADMIN"); userDto.setAuthorities(authoritiesAsString); User user = userMapper.userDTOToUser(userDto); assertThat(user).isNotNull(); assertThat(user.getAuthorities()).isNotNull(); assertThat(user.getAuthorities()).isNotEmpty(); assertThat(user.getAuthorities().iterator().next().getName()).isEqualTo("ADMIN"); } @Test void userDTOToUserMapWithNullAuthoritiesStringShouldReturnUserWithEmptyAuthorities() { userDto.setAuthorities(null); User user = userMapper.userDTOToUser(userDto); assertThat(user).isNotNull(); assertThat(user.getAuthorities()).isNotNull(); assertThat(user.getAuthorities()).isEmpty(); } @Test void userDTOToUserMapWithNullUserShouldReturnNull() { assertThat(userMapper.userDTOToUser(null)).isNull(); } @Test void testUserFromId() { assertThat(userMapper.userFromId(DEFAULT_ID).getId()).isEqualTo(DEFAULT_ID); assertThat(userMapper.userFromId(null)).isNull(); } }