코딩하는 털보

21.10.12 TIL 본문

Diary/Today I Learned

21.10.12 TIL

이정인 2021. 11. 1. 16:30

정말 오랜만에 작성하는 TIL...
프로젝트 시작하니깐 너무 바빠서 쓸 생각도 못하겠다.

오늘 삽질한걸 돌아보자.


MVC Unit 테스트에서 'JwtTokenProvider'를 찾을 수 없다는 에러가 발생했다.
JwtTokenProvider 빈이 등록되어 있는 Configuration 클래스를 테스트에서 사용할 수 있도록 등록해주면 해결되었다.

@ContextConfiguration(classes = WebConfig.class)

난 단순히 게시글 API 단위 테스트를 하려고 하는데 얘가 왜 필요할까 생각해봤는데,
아마 라이브러리에 스프링 시큐리티 테스트가 있어서 그런건 아닐까 했는데 그건 아니었다.

어쩌면 @WebMvcTest는 어플리케이션 컨텍스트에 등록된 필터들 까지 동작시키는 걸지도 모른다. 아마 이게 맞을거라고 제일 예상된다.
그래서 등록된 JwtAuthenticationFilter를 거치면서 JwtAuthenticationFilter에서 의존하는 JwtTokenProvider를 찾은 것 일지도?

@RequiredArgsConstructor
public class JwtAuthenticationFilter extends GenericFilterBean {

    private final JwtTokenProvider jwtTokenProvider;

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        String token = jwtTokenProvider.resolveToken((HttpServletRequest) request);
        if (token != null && jwtTokenProvider.validateToken(token)) {
            Authentication authentication = jwtTokenProvider.getAuthentication(token);
            SecurityContextHolder.getContext().setAuthentication(authentication);
        }
        chain.doFilter(request, response);
    }
}

아니면 애초에 WebSecurityConfig에서도 의존하고 있으니...여기서 걸리는 것일지도...음...

public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    private final JwtTokenProvider jwtTokenProvider;

Comments