Как правильно в Spring написать тест на метод, требующий авторизацию?

Хочу написать тест для данного метода:

public JsonNode getMyStatistics() throws Exception {
User currentUser = getCurrentUser();
ObjectMapper mapper = new ObjectMapper();
ObjectNode object = mapper.createObjectNode();
List<Post> myPosts = postRepository.findAllMyPosts(0, (int) postRepository.count(),
    "ACCEPTED", currentUser.getId());
List<ResponsePostApi> postList = myPosts.stream().map(p -> postMapper.postToResponsePostApi(p))
    .collect(Collectors.toList());
object.put("postsCount", myPosts.size());

int likesCount = postList.stream().mapToInt(p -> p.getLikeCount()).sum();
object.put("likesCount", likesCount);

int dislikesCount = postList.stream().mapToInt(p -> p.getDislikeCount()).sum();
object.put("dislikesCount", dislikesCount);

int viewsCount = postList.stream().mapToInt(p -> p.getViewCount()).sum();
object.put("viewsCount", viewsCount);

LocalDateTime firstPublication = postRepository.findFirstMyPublication(currentUser.getId());

ZonedDateTime timeZoned = firstPublication.atZone(ZoneId.systemDefault());
ZonedDateTime utcZoned = timeZoned.withZoneSameInstant(ZoneId.of("UTC"));

object.put("firstPublication", utcZoned.toInstant().getEpochSecond());
return object;
}

Как мне заглушить getCurrentUser()?

код этого метода:

  public User getCurrentUser() throws Exception {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();

if (null == auth) {
  throw new NotFoundException("");
}

Object obj = auth.getPrincipal();
String username = "";

if (obj instanceof UserDetails) {
  username = ((UserDetails) obj).getUsername();
} else {
  username = obj.toString();
}

User user = userRepository.findByEmail(username).get();
return user;
}

использую mockito-core 3.4.6. Понимаю, что надо мокнуть секьюрити, а как не пойму


Ответы (0 шт):