Advertisement
Guest User

Untitled

a guest
Jan 8th, 2018
360
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.05 KB | None | 0 0
  1. package com.capgemini.capcup.services;
  2.  
  3. import com.capgemini.capcup.common.mappers.UserMapper;
  4. import com.capgemini.capcup.common.to.UserTO;
  5. import com.capgemini.capcup.common.to.android.RegisterRequestTO;
  6. import com.capgemini.capcup.common.types.RoleName;
  7. import com.capgemini.capcup.persistence.model.RegisterConfirmationEntity;
  8. import com.capgemini.capcup.persistence.model.RoleEntity;
  9. import com.capgemini.capcup.persistence.model.UserEntity;
  10. import com.capgemini.capcup.persistence.repositories.RoleRepository;
  11. import com.capgemini.capcup.persistence.repositories.UserRepository;
  12. import com.capgemini.capcup.services.scores.ScoreAllocationService;
  13. import org.junit.Test;
  14. import org.junit.runner.RunWith;
  15. import org.mockito.Mockito;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.boot.test.context.TestConfiguration;
  18. import org.springframework.boot.test.mock.mockito.MockBean;
  19. import org.springframework.context.annotation.Bean;
  20. import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
  21. import org.springframework.test.annotation.DirtiesContext;
  22. import org.springframework.test.context.junit4.SpringRunner;
  23.  
  24. import java.util.*;
  25.  
  26. import static org.assertj.core.api.Java6Assertions.assertThat;
  27. import static org.mockito.Matchers.any;
  28. import static org.mockito.Matchers.eq;
  29. import static org.mockito.Mockito.verify;
  30. import static org.mockito.Mockito.when;
  31.  
  32. @RunWith(SpringRunner.class)
  33. @DirtiesContext
  34. public class UserServiceTest {
  35.  
  36. @Autowired
  37. private UserService userService;
  38.  
  39. @Test
  40. public void shouldUserServiceCreateNewUserTest() throws Exception {
  41. // given
  42. final RegisterRequestTO request = registerRequestTO();
  43. final UserEntity userEntity = userEntity(false);
  44. final RoleEntity userRole = userRole();
  45. final RegisterConfirmationEntity confirmation = registerConfirmationEntity(userEntity);
  46.  
  47. when(UserServiceTestContextConfiguration.userMapper.map(request, UserEntity.class))
  48. .thenReturn(userEntity);
  49.  
  50. when(UserServiceTestContextConfiguration.roleRepository.findByName(Mockito.eq(RoleName.ROLE_USER)))
  51. .thenReturn(userRole);
  52.  
  53. when(UserServiceTestContextConfiguration.encoder.encode(userEntity.getPassword()))
  54. .thenReturn(new String());
  55.  
  56. userEntity.setConfirmation(confirmation);
  57.  
  58. when(UserServiceTestContextConfiguration.userRepository.save(Mockito.any(UserEntity.class)))
  59. .thenReturn(userEntity);
  60.  
  61. // when
  62. final UserEntity created = userService.createUser(request);
  63.  
  64. // then
  65. assertThat(created).isEqualTo(userEntity);
  66.  
  67. verify(UserServiceTestContextConfiguration.userMapper).map(request, UserEntity.class);
  68. verify(UserServiceTestContextConfiguration.roleRepository).findByName(Mockito.eq(RoleName.ROLE_USER));
  69. verify(UserServiceTestContextConfiguration.encoder).encode(Mockito.any());
  70. verify(UserServiceTestContextConfiguration.userRepository).save(Mockito.any(UserEntity.class));
  71. }
  72.  
  73. @Test
  74. public void shouldReturn2UsersTest() throws Exception {
  75. // given
  76. final RoleEntity userRole = userRole();
  77. final RoleEntity adminRole = adminRole();
  78.  
  79. final UserEntity user = userEntity(true);
  80. user.getRoles().add(userRole);
  81. userRole.getUsers().add(user);
  82.  
  83. final UserEntity admin = userEntity(true);
  84. admin.getRoles().add(userRole);
  85. userRole.getUsers().add(admin);
  86. admin.getRoles().add(adminRole);
  87. adminRole.getUsers().add(admin);
  88.  
  89. final List<UserEntity> users = Arrays.asList(user, admin);
  90.  
  91. final UserTO userTO = userTO();
  92. userTO.getRoles().add("ROLE_USER");
  93.  
  94. final UserTO adminTO = userTO();
  95. adminTO.getRoles().addAll(Arrays.asList("ROLE_USER", "ROLE_ADMIN"));
  96.  
  97. final List<UserTO> userTOList = Arrays.asList(userTO, adminTO);
  98.  
  99. when(UserServiceTestContextConfiguration.userRepository.findAll())
  100. .thenReturn(users);
  101.  
  102. when(UserServiceTestContextConfiguration.userMapper.map(eq(user), eq(UserTO.class)))
  103. .thenReturn(userTO);
  104.  
  105. when(UserServiceTestContextConfiguration.userMapper.map(eq(admin), eq(UserTO.class)))
  106. .thenReturn(adminTO);
  107.  
  108. // when
  109. final List<UserTO> result = userService.findAllUsers();
  110.  
  111. // then
  112. assertThat(result).isEqualTo(userTOList);
  113.  
  114. verify(UserServiceTestContextConfiguration.userRepository).findAll();
  115. verify(UserServiceTestContextConfiguration.userMapper).map(eq(user), eq(UserTO.class));
  116. verify(UserServiceTestContextConfiguration.userMapper).map(eq(admin), eq(UserTO.class));
  117. }
  118.  
  119. @Test
  120. public void shouldFind2RolesTest() throws Exception {
  121. // given
  122. final List<RoleEntity> roles = Arrays.asList(userRole(), adminRole());
  123. final List<String> rolesTO = Arrays.asList("ROLE_USER", "ROLE_ADMIN");
  124.  
  125. when(UserServiceTestContextConfiguration.roleRepository.findAll())
  126. .thenReturn(roles);
  127.  
  128. // when
  129. final List<String> result = userService.findAllRoles();
  130.  
  131. // then
  132. assertThat(result).isEqualTo(rolesTO);
  133.  
  134. verify(UserServiceTestContextConfiguration.roleRepository)
  135. .findAll();
  136. }
  137.  
  138. @Test
  139. public void shouldReturnNullCollectionTest() throws Exception {
  140. // given
  141. when(UserServiceTestContextConfiguration.roleRepository.findAll())
  142. .thenReturn(null);
  143.  
  144. // when
  145. final List<String> result = userService.findAllRoles();
  146.  
  147. // then
  148. assertThat(result).isEqualTo(Collections.emptyList());
  149.  
  150. verify(UserServiceTestContextConfiguration.roleRepository).findAll();
  151. }
  152.  
  153. private UserEntity userEntity(boolean enable) {
  154. return new UserEntity(
  155. 1L,
  156. "userek",
  157. "userek@email.com",
  158. "pass",
  159. new ArrayList<>(),
  160. new HashSet<>(),
  161. enable,
  162. null
  163. );
  164. }
  165.  
  166. private RegisterConfirmationEntity registerConfirmationEntity(UserEntity userEntity) {
  167. return new RegisterConfirmationEntity(
  168. userEntity.getId(),
  169. userEntity,
  170. UUID.randomUUID(),
  171. userEntity.getEnabled()
  172. );
  173. }
  174.  
  175. private UserTO userTO() {
  176. return new UserTO(
  177. "userek",
  178. "userek@email.com",
  179. "pass"
  180. );
  181. }
  182.  
  183. private RegisterRequestTO registerRequestTO() {
  184. return new RegisterRequestTO(
  185. "userek",
  186. "userek@email.com",
  187. "pass"
  188. );
  189. }
  190.  
  191. private RoleEntity userRole() {
  192. return new RoleEntity(
  193. 1L,
  194. RoleName.ROLE_USER,
  195. new HashSet<>()
  196. );
  197. }
  198.  
  199. private RoleEntity adminRole() {
  200. return new RoleEntity(
  201. 2L,
  202. RoleName.ROLE_ADMIN,
  203. new HashSet<>()
  204. );
  205. }
  206.  
  207. @TestConfiguration
  208. static class UserServiceTestContextConfiguration {
  209.  
  210. @MockBean
  211. private static UserRepository userRepository;
  212.  
  213. @MockBean
  214. private static RoleRepository roleRepository;
  215.  
  216. @MockBean
  217. private static UserMapper userMapper;
  218.  
  219. @MockBean
  220. private static BCryptPasswordEncoder encoder;
  221.  
  222. @MockBean
  223. private static PasswordRestoreService passwordRestoreService;
  224.  
  225. @MockBean
  226. private static ScoreAllocationService scoreAllocationService;
  227.  
  228. @Bean
  229. UserService userService() {
  230. return new UserServiceImpl(
  231. userRepository,
  232. roleRepository,
  233. userMapper,
  234. encoder,
  235. passwordRestoreService,
  236. scoreAllocationService
  237. );
  238. }
  239. }
  240. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement