使用Spring MVC测试框架测试安全的REST端点

时间:2018-08-29 20:51:11

标签: spring-mvc kotlin spring-test-mvc spring-security-rest

我正在尝试使用Spring MVC Test Framework.

测试一种安全的REST方法
  val result = this.mockMvc!!
     .perform(get("/ping").with(SecurityMockMvcRequestPostProcessors.user("user")))
                .andDo(MockMvcResultHandlers.print())
                .andReturn()

  assertThat(result.response.contentAsString).contains("pong")

问题在于,在此请求上,模拟服务器正在响应302代码,以重定向到安全通道。结果永远不会是2xx代码,永远是302代码。我想遵循此重定向,或者第一次在安全通道上执行请求。

如何执行此测试以直接在模拟的安全通道上进行?

1 个答案:

答案 0 :(得分:1)

最后,我找到了解决方案。我需要在模拟的secure(true)上调用get("/")。令我惊讶的是,它不在文档中,而仅在javadocs中:

  val result = this.mockMvc!!
     .perform(get("/ping").secure(true).with(SecurityMockMvcRequestPostProcessors.user("user")))
                .andDo(MockMvcResultHandlers.print())
                .andReturn()

  assertThat(result.response.contentAsString).contains("pong")