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の完全なクラスを参照してください)。
後で受け取った CSRF トークンでログインできるように、ここで Cookie を取得しようとしましたが、cookies
配列が空です!
ただし、アプリケーションを実行して呼び出すと
curl -i http://localhost:8080/login/csrf
Set-Cookie ヘッダーを取得し、後でその Cookie (および CSRF トークン) を使用して認証できます。
問題は、MockMvc に Cookie を返してもらうにはどうすればよいかということです。