使用Spring Security测试Spring Boot时获取http 404

时间:2017-07-23 11:34:16

标签: spring-boot spring-security spring-boot-test spring-cloud-contract

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请求,虽然我希望401被rt,但会返回404

ResponseOptions response = given().spec(request.post("/api/login");

为什么找不到/api/login

1 个答案:

答案 0 :(得分:0)

我认为你需要在基类基本认证数据中放心。 E.g。

Data1