我正在尝试测试其中一项的访问,该访问@RestController由定制的Spring Security配置保护。我的用例如下:HTTP GETto/someEndpoint通过身份验证得到保护,但是POST对同一终结点的HTTP请求却不被保护。当我启动应用程序并用我的前端或邮递员对其进行测试时,它工作正常。现在,我正在尝试MockMvc使用安全性配置编写测试。我已经在StackOverflow上通过很多答案获得了成功,但是没有任何帮助。我的测试设置如下所示:@RunWith(SpringRunner.class)@WebMvcTest(controllers = MyController.class)@WebAppConfiguration@ContextConfigurationpublic class AssessmentControllerTest { private MockMvc mockMvc; @Autowired private WebApplicationContext webApplicationContext; @Before public void init() throws Exception { this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext) .alwaysDo(print()) .apply(SecurityMockMvcConfigurers.springSecurity()) .build(); } // some test methods}通过此设置,我所有的端点都得到了保护,甚至HTTPPOST都返回401而不是201。我还启用了调试日志以提高安全性,并且在调试日志中指出测试使用,default configure(HttpSecurity)但在日志中找不到我的任何AntMatchers:2018-07-04 19:20:02.829 DEBUG 2237 --- [ main] s.s.c.a.w.c.WebSecurityConfigurerAdapter : Using default configure(HttpSecurity). If subclassed this will potentially override subclass configure(HttpSecurity).2018-07-04 19:20:03.097 DEBUG 2237 --- [ main] edFilterInvocationSecurityMetadataSource : Adding web access control expression 'authenticated', for org.springframework.security.web.util.matcher.AnyRequestMatcher@12018-07-04 19:20:03.127 DEBUG 2237 --- [ main] o.s.s.w.a.i.FilterSecurityInterceptor : Validated configuration attributes2018-07-04 19:20:03.130 DEBUG 2237 --- [ main] o.s.s.w.a.i.FilterSecurityInterceptor : Validated configuration attributes2018-07-04 19:20:03.161 INFO 2237 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: 通常可以在MockMvc测试期间使用我的具体Spring Security配置,还是必须在测试期间使用引导整个Spring上下文@SpringBootTest?我正在使用(带有Java 1.8的Spring Boot 2.0.3.RELEASE)
添加回答
举报
0/150
提交
取消