Хотя это не Grails, это SpringBoot 2.0.
Если failHandler выставлен как бин, можно просто шпионить за ним.
@SpyBean
AuthenticationFailureHandler failureHandler;
и просто убедитесь, что сгенерировано исключение
Mockito.verify(failureHandler).onAuthenticationFailure(
any(),
any(),
any(AccountExpiredException.class)
);
Простой тест может выглядеть так:
@Test
public void accountExpired() throws Exception {
doReturn(user
.username("expired")
.accountExpired(true)
.build()
).when(userDetailsService).loadUserByUsername(any(String.class));
mvc.perform(
MockMvcRequestBuilders.post("/login")
.param("username", "expired")
.param("password", "password")
)
.andExpect(status().is4xxClientError())
.andExpect(unauthenticated())
;
Mockito.verify(failureHandler).onAuthenticationFailure(
any(),
any(),
any(AccountExpiredException.class)
);
}
Все образцы в https://github.com/fhanik/spring-security-community/