loadUserByUsername

@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
	
	List<UserDetailsProjection> result = repository.searchUserAndRolesByEmail(username);
	if (result.size() == 0) {
		throw new UsernameNotFoundException("Email not found");
	}
	
	User user = new User();
	user.setEmail(result.get(0).getUsername());
	user.setPassword(result.get(0).getPassword());
	for (UserDetailsProjection projection : result) {
		user.addRole(new Role(projection.getRoleId(), projection.getAuthority()));
	}
	
	return user;
}

Podemos criar um existingUsername e nonExistingUsername e um User.

Como o método usa uma List, também criaremos uma! Iniciar tudo no setUp (pode criar um UserFactory btw).

Atualizado