W testach JUnit ze Spring MockMVC istnieją dwie metody uwierzytelniania jako użytkownik Spring Security: @WithMockUser
tworzy fałszywego użytkownika z dostarczonymi poświadczeniami, @WithUserDetails
przyjmuje nazwę użytkownika i rozwiązuje go we właściwej implementacji niestandardowej z niestandardowym UserDetailsService
(UserDetailsServiceImpl
).Spring Security, JUnit: @WithUserDetails dla użytkownika utworzonego w @Before
W moim przypadku UserDetailsService
ładuje użytkownika z bazy danych. Użytkownik, którego chcę użyć, został wstawiony do metody testowej pakietu @Before
.
Jednak mój UserDetailsServiceImpl
nie znajduje użytkownika.
W moim @Before
, wstawić użytkownikowi takiego:
User u = new User();
u.setEMail("[email protected]");
u = userRepository.save(u);
A w 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;
}
Jak mogę korzystać z konta utworzonego w @Before
z @WithUserDetails
?