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

标签 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 代码,以重定向到安全 channel 。结果永远不会2xx代码,始终是 302代码。我想关注这个重定向,或者第一时间在安全 channel 上执行请求。

如何直接在模拟的安全 channel 上执行此测试?

最佳答案

最后,我找到了解决方案。我需要调用secure(true)在 mock 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")

关于spring-mvc - 使用 Spring MVC 测试框架测试安全的 REST 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52085897/

相关文章:

class - 如何检查两个对象在 Kotlin 中是否具有相同的类?

spring - 如何将 Bootstrap 模态映射到 Spring MVC Controller

spring-mvc - Spring不注入(inject)ServletContext

java - JPA和Hibernate注解的关系

java - 在 oAuth2 资源服务器应用程序中使用@WithMockUser(与@SpringBootTest)

java - 当集合设置时如何测试 json api

spring-mvc - 如何测试POST spring mvc

java - 如何使用spring mvc将json反序列化为复杂对象?

kotlin - 在 lambda 中使用接收器的中缀函数(对于 DSL)

kotlin - Reactor-加载分页API的所有页面