
ref : Spring Security 추가로 인한 Test Code refactoring
이번 프로젝트에서 처음으로 Spring-security를 도입하면서...
Webmvc테스트 도중 401에러와 403에러가 무수히 발생했다...!!!

왜 이런 에러가 날까?
이유1. @Webmvc 테스트는 기본적으로 spring seucirty 관련 컴포넌트를 스캔하게 된다...!!
따라서 해당 필터를 exclude해준다...!!
코드
@WebMvcTest(
excludeFilters = {
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = SecurityConfig.class)
}
)
@Import({Slf4jRestControllerAdvice.class, ControllerAdviceTest.TestController.class})
public class ControllerAdviceTest {
... 생략
}
이유2. csrf token검사가 기본값이라서 이를 해제하지 않으면 에러가 발생한다.
TestConfiguration을 추가적으로 만들어준다.
코드
@WebMvcTest(
excludeFilters = {
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = SecurityConfig.class)
}
)
@Import({Slf4jRestControllerAdvice.class, ControllerAdviceTest.TestController.class})
public class ControllerAdviceTest {
... 생략
@TestConfiguration
static class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
// CSRF 보호 비활성화
http
.csrf((auth) -> auth.disable());
return http.build();
}
}
}
Language : JAVA 21, JDK21
Framework : spring-boot 3.4.1
IDE : intellij