【发布时间】:2014-11-26 08:50:26
【问题描述】:
我正在尝试在我的 REST API 中对登录和安全性进行单元测试,因此我尝试尽可能接近地模拟现实生活中的请求序列。
我的第一个要求是:
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).
addFilters(springSecurityFilterChain).build();
this.mapper = new ObjectMapper();
....
MvcResult result=mockMvc.perform(get("/login/csrf")).andExpect(status().is(200)).andReturn();
Cookie[] cookies = result.getResponse().getCookies();
(在pastebin 上查看完整课程)。
我尝试在此处获取 cookie,以便稍后能够使用收到的 CSRF 令牌登录,但 cookies 数组为空!
但是,如果我运行我的应用程序并调用
curl -i http://localhost:8080/login/csrf
我确实得到了一个 Set-Cookie 标头,以后可以使用该 cookie(和 CSRF 令牌)进行身份验证。
所以问题是:如何让 MockMvc 向我返回一个 cookie?
【问题讨论】:
-
你是如何设置你的
mockMvc的? -
@SotiriosDelimanolis 我在问题中编辑了我的代码以显示这一点。当我有时间时,我会将测试类的相关位放到这里或一个 pastebin 中。
-
我的测试类的相关部分在pastebin上:pastebin.com/LiNeRFT0
标签: java spring cookies spring-security mockmvc