[英]Spring transfer SecurityContext for Integration testing
我想測試我的REST端點。 在我的REST方法中,有一些基於SecurityContext的過濾器。 當我在測試類中設置SecurityContext並調用其余方法時,SecurityContext被刪除。 僅當我在REST方法中創建SecurityContext時,它才起作用。 是否有可能傳遞上下文?
SecurityContext securityContext = new SecurityContextImpl();
securityContext.setAuthentication(authentication);
SecurityContextHolder.setContext(securityContext);
// is here User ...
.mockMvc.perform(get("/test"...)
RestController:
public ResponseEntity<...> getTest(){
// is now anonymus
SecurityContextHolder.getContext().getAuthentication().getPrincipal();
}
謝謝
您可以使用defaultRequest
方法設置對同一測試類中的所有測試重新使用的身份驗證:
@BeforeClass
public void setUp()
{
mockMvc = MockMvcBuilders.webAppContextSetup(wac).defaultRequest(get("/").with(authentication(authentication))).apply(springSecurity()).build();
}
您需要的靜態導入為:
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.authentication;
import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.