В тестах 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
?