1

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

4

1 回答 1

0

I think you need to pass to rest assured in the base class basic authentication data. E.g.

@Before
    public void setup() {
        RestAssuredMockMvc.authentication =
                RestAssuredMockMvc.basic("sk_test_BQokikJOvBiI2HlWgH4olfQ2", "");
    }
于 2018-04-26T20:46:00.240 回答