Как правильно в 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. Понимаю, что надо мокнуть секьюрити, а как не пойму