TLDR: spring boot test 找不到使用 spring security 定义的 url 端点
很长的故事:
我的 SpringBoot 应用程序使用 Spring Security。
在其安全上下文中,它定义:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf()
.disable()
.authorizeRequests()
.antMatchers("/api/login").permitAll()
.and()
.formLogin()
.permitAll()
.loginProcessingUrl("/api/login")
.antMatchers(POST, "/api/**")
.hasAuthority(ADMIN)
}
}
我的测试代码被初始化为 SpringBoot 测试:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MySpringBootApplication.class)
public class ContractVerifierBase {
@Autowired
private WebApplicationContext context;
@Before
public void setUp() throws Exception {
RestAssuredMockMvc.webAppContextSetup(context);
}
}
我的测试向 /api/login 发送 POST 请求,虽然我希望 a被返回401
,但 a404
被返回。
ResponseOptions response = given().spec(request.post("/api/login");
为什么找不到/api/login
?