Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
작업 내용
문제 상황
실제 배포 환경에서는 토큰이 생성되어 헤더에 발급되지 않는 문제가 발생했습니다.
이를 검증하는 기존 테스트는 여전히 통과하고 있었으나, 로컬에서 실행하여 포스트맨 요청을 보냈을 때에도 토큰은 발급되지 않았습니다.
기존 로직은 다음과 같습니다.
@Prehandle
)@PostHandle
)하지만 이때에 응답 헤더에 토큰이 전해지지 않았고, 디버깅한 결과 요청 헤더에 토큰이 존재하지 않는 것은 정상적으로 인터셉터 되는 것으로 확인되었습니다.
PostHandle도 정상적으로 실행되나, 내부의
isCommit()
에 걸려 응답이 수정되지 않았습니다. 해당 메서드에 대해서 아직 파악된 것은 많이 없지만,@PostHandle
에서는 HttpServletResponse의 헤더를 수정할 수 없다는 것으로 생각되어요....해결 방법
따라서
@PreHandle
에서 response에 토큰을 추가하는 로직까지 추가해 주었습니다.따라서
@PostHandle
메서드는 삭제되었으며,현재 테스트도 실제 서블릿 컨테이너의 동작을 검증하는 역할을 하지 못하기 때문에 테스트로서의 역할을 하지 못한다고 판단, 삭제하게 되었습니다.
실제 서블릿 컨테이너의 동작을 검증하고 싶어서 기존의 mockMvc가 아닌 RestAssured를 시도하였으나 똑같이 실패해야하는 토큰 생성 테스트가 성공하였고, TestRestTemplate, RestTemplate의 사용도 전부 의도와 다르게 동작(실패해야 하는 테스트가 성공)하였기 때문에... 이부분은 이슈로 등록 후 해결해보아요
고민 지점과 리뷰 포인트
테스트에 대해 아는 것이 있거나 알아본 것이 있다면 공유해주세요!!ㅜㅜ
제가 시도할 것을 공유하자면 테스트에 관련하여
isCommit()
지점에 디버깅을 건 후 테스트를 실행시키며 테스트 디버깅을 해보겠습니다..😭+) 추가로, 기존의 코드와 테스트는
protect/token-generate-test
브랜치를 생성하여 기록해두었습니다~!