我有一个我用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