REST API'mda oturum açma ve güvenliği test etmeye çalışıyorum, bu yüzden gerçek yaşamdaki istek sıralarını mümkün olduğunca yaklaştırmaya çalışıyorum.Spring MockMvc sonucu neden bir çerez içermiyor?
Benim ilk isteği olacaktır:
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 tam sınıfına bakın).
Daha sonra alınan CSRF belirteci ile oturum açmak için çerez almak için deneyin, ancak cookies
dizisi boş! Benim uygulamayı çalıştırmak ve ararsanız
Ancak
curl -i http://localhost:8080/login/csrf
Ben Set-Cookie başlığı döneriz ve bu çerez (ve CSRF belirteci) kullanabilir sonradan kimliğini doğrulamak için.
Soru şu ki: MockMvc bana bir çerez döndürmek için nasıl alabilirim?
session=(MockHttpSession)result.getRequest().getSession();
Ve sonra doğrudan oturumu takmadan:
req.session(session);
Memnun değilim nedenini
Nasıl mı ayarladığınızda 'mockMvc'? –
@SotiriosDelimanolis Bunu gösterecek şekilde kodumu düzenledim. Zaman aldığımda, test sınıfının ilgili bitlerini buraya veya bir macun kovasına koyacağım. –
Test sınıfımın ilgili bölümleri pastebin'tir: http://pastebin.com/LiNeRFT0 –