• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

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

23.08.16 10:04 작성 23.08.16 10:55 수정 조회수 311

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 테스트 가능합니다!! 필터도 테스트할 수 있어요!!

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