我想在我的REST API中单元测试登录和安全性,所以我尽量模拟真实请求序列。为什么Spring MockMvc结果不包含cookie?
我的第一个要求是:
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'? – 2014-10-01 14:28:22
@SotiriosDelimanolis我在问题中编辑了我的代码以表明这一点。当我获得时间时,我会把测试班的相关位放在这里或一个pastebin。 – 2014-10-01 15:48:58
我的测试课的相关部分位于pastebin:http://pastebin.com/LiNeRFT0 – 2014-10-02 12:38:02