В тестах JUnit с помощью Spring MockMVC существует два метода аутентификации в качестве пользователя безопасности Spring: @WithMockUser создает фиктивного пользователя с предоставленными учетными данными, @WithUserDetails принимает имя пользователя и решает его правильную реализацию UserDetails с пользовательским UserDetailsService (UserDetailsServiceImpl).
В моем случае, UserDetailsService загружает пользователя из базы данных. Пользователь, которого я хочу использовать, был вставлен в метод @Before тестового набора.
Однако мой UserDetailsServiceImpl не находит пользователя.
В моем @Before я вставляю пользователя следующим образом:
User u = new User();
u.setEMail("[email protected]");
u = userRepository.save(u);
И в UserDetailsServiceImpl:
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = this.userRepository.findOneByEMail(username);
if (user == null)
throw new UsernameNotFoundException(String.format("No user found with username '%s'.", username));
return user;
}
Как я могу использовать учетную запись, созданную в @Before, с помощью @WithUserDetails?