使用RequestPostProcessor与注释进行Spring MVC测试

时间:2015-05-19 16:17:55

标签: spring-mvc spring-security jhipster spring-mvc-test spring-security-test

我有一个我用JHipster创建的应用程序。我生成了一个Blog实体,然后修改了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的{​​{1}}方法有以下内容。

findAllForCurrentUser()

为了测试这一点,我能够使用Spring Security的@Query("select blog from Blog blog where blog.user.login = ?#{principal.username}") List<Blog> findAllForCurrentUser();

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

0 个答案:

没有答案