Spring MVC测试由于安全异常而失败,而不是返回401

时间:2018-08-23 14:36:24

标签: spring spring-boot spring-security

我有考试

@Test
public void testGetGrandSlamTokenRaw() throws Exception {

    this.mockMvc
           .perform(get("/some/url"))
           .andDo(print())
           .andExpect(status().isOk());
}

我有一个自定义的身份验证提供程序,它抛出AuthenticationException,并确认它与调试器一起运行。

我有一个自定义身份验证过滤器,该过滤器扩展了AbstractPreAuthenticatedProcessingFilter,并且我们将continueFilterChainOnUnsuccessfulAuthentication设置为false。

我有一个正在运行的自定义故障处理程序(已通过调试器确认)

    @Override
    public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException {

        ...
        response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
        response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
    }

所以我希望测试失败并显示401状态,因为我没有在测试设置中添加用户。但是,除了我声明状态为OK之外,没有导致测试失败,而是测试发生了错误,但我的自定义身份验证提供程序抛出了异常。

如果我将continueFilterChainOnUnsuccessfulAuthentication设置为true(默认值),则不会发生这种情况,并且测试确实会返回401而不是出错。

0 个答案:

没有答案