Spring MVC Test с RequestPostProcessor против аннотаций

У меня есть приложение, которое я создал с помощью JHipster. Я создал объект блога, а затем изменил BlogResource класс так его getAll() Метод возвращает блог только для текущего пользователя.

/**
 * GET  /blogs -> get all the blogs.
 */
@RequestMapping(value = "/blogs",
        method = RequestMethod.GET,
        produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public List<Blog> getAll() {
    log.debug("REST request to get all Blogs");
    return blogRepository.findAllForCurrentUser();
}

BlogRepository имеет следующее для его findAllForCurrentUser() метод.

@Query("select blog from Blog blog where blog.user.login = ?#{principal.username}")
List<Blog> findAllForCurrentUser();

Чтобы проверить это, я смог использовать Spring Security RequestPostProcessor:

@Test
@Transactional
public void getAllBlogs() throws Exception {
    restBlogMockMvc = MockMvcBuilders.webAppContextSetup(context).apply(springSecurity()).build();

    // Initialize the database
    blog.setUser(userRepository.findOneByLogin("user").get());
    blogRepository.saveAndFlush(blog);

    // Get all the blogs
    restBlogMockMvc.perform(get("/api/blogs").with(user("user")))
        //.andDo(print())
        .andExpect(status().isOk())
        .andExpect(content().contentType(MediaType.APPLICATION_JSON))
        .andExpect(jsonPath("$.[*].id").value(hasItem(blog.getId().intValue())))
        .andExpect(jsonPath("$.[*].name").value(hasItem(DEFAULT_NAME.toString())))
        .andExpect(jsonPath("$.[*].handle").value(hasItem(DEFAULT_HANDLE.toString())));
}

Мне любопытно узнать, почему с помощью аннотаций, таких как @WithMockUser а также @WithUserDetails не будет работать для этого. Если я изменю его на использование аннотаций, я получу следующую ошибку:

[DEBUG] org.jhipster.app.security.Http401UnauthorizedEntryPoint - Pre-authenticated entry point called. Rejecting access

java.lang.AssertionError: Status 
Expected :200
Actual   :401

0 ответов

Другие вопросы по тегам