我正在尝试编写一个用于通过Spring Security和JWT进行身份验证的集成测试。我的问题是,在身份验证过滤器的身份验证过程中,它检查用户在外部系统中是否有效。我该如何模拟在测试过程中调用外部系统的类?
这是一个安全配置:
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
private final AuthService authService;
public WebSecurityConfig(AuthService authService) {
this.authService = authService;
}
@Bean
public AuthentificationTokenFilter authenticationTokenFilter() {
return new AuthentificationTokenFilter(authService);
}
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
}
}
我需要在AuthService
内部模拟AuthentificationTokenFilter
,在该地方实际进行身份验证,但是我没有直接与其进行交互和安全配置。我仅尝试向RestController
发出休息请求,如果身份验证正确,则此请求应返回200
代码。
答案 0 :(得分:1)
您真的需要使用Mockito对其进行模拟吗?利用Spring profiles和注释@Profile
的优势来区分AuthService
和其他环境的test
接口实现。
@Service
@Profile("test")
public class MockAuthService implements AuthService {
// ... the mock implementation
}