강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

진짜 잘하고싶다님의 프로필 이미지
진짜 잘하고싶다

작성한 질문수

스프링부트 시큐리티 & JWT 강의

스프링부트 시큐리티 4강 - 시큐리티 로그인

안녕하세요 강사님 로그인 질문있씁니다!

작성

·

480

·

수정됨

0

public class LoginFilter extends UsernamePasswordAuthenticationFilter

이 작업을 통해서 login으로 들어오는 것을

@Override
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
    try {
        User user = objectMapper.readValue(request.getInputStream(), User.class);

        UsernamePasswordAuthenticationToken authenticationToken =
                new UsernamePasswordAuthenticationToken(user.getUsername(), user.getPassword());

        return authenticationManager.authenticate(authenticationToken);
    } catch (IOException e) {
        log.error("{}", e);
    }
    return super.attemptAuthentication(request, response);
}

이 작업을 통해서 로그인 하는 걸로 알고있는데,

이러한 경우에 컨트롤러 테스트 코드를 어떻게 작성할 수 있는 건지 궁금합니다.

 

api가 아니라 자꾸 에러가 발생하는데

혹시 이러한 경우에 api 테스트 코드 작성 팁좀 가르쳐주실 수 있나요?

 

 

이러한 예외가 발생합니다.

이유를 모르겠습니다. Postman으로 할 때는 잘 동작합니다 ㅜㅜ

그냥 /api/login 이라는 api를 생성해서 테스트해야 될까요?

답변 2

정말 감사합니다 강사님

0

최주호님의 프로필 이미지
최주호
지식공유자

이거 테스트 하려면, 전체적인 개념 정리가 되어있어야 합니다.!!

설명할 부분이 너무 많습니다.

부분 적으로 찝어서 질문을 해주시면, 그 부분에 대한 답변을 해드리고,

그게 아니라면, Junit 강의를 한번 보는 것을 추천드려요.

이게 api를 호출하는 것이 아닌

시큐리티 내부에 구현되어있는 그런 환경에서 로그인 되는 거 같은데

스프링 이전에 필터에서 로그인 진행하는 것이기 때문에 (attemptAuthentication 메서드로)

api테스트가 불가능한 부분이라고 생각해서 여쭤봤습니다.

제가 생각했을 때 /login은 api가 아니기 때문에 SpringBootTest가 불가능하다고 생각하는데

틀린 부분 지적 부탁드립니다!

 

최주호님의 프로필 이미지
최주호
지식공유자

API 테스트 가능합니다!! 필터도 테스트할 수 있어요!!

도저히 감을 못잡겠는데 혹시 강사님 깃헙에 예제같은게 있을까요?

진짜 잘하고싶다님의 프로필 이미지
진짜 잘하고싶다

작성한 질문수

질문하기