본문 바로가기
Java Spring/Security

RestController 테스트 시 JWT 생성하기

by GGShin 2022. 9. 20.

Spring Security dependency가 적용된 상태에서는 unit test를 할 때도 security 관련 처리를 해주어야 합니다.

즉, 회원 인증 절차를 포함해주어야 합니다. (인증된 유저가 서비스를 이용한다는 가정)

 

만약에 인증 과정을 거치지 않으면 아래처럼 Unauthorized 에러가 발생합니다.

 

어떠한 방법으로 해결하면 되는지 찾아보니 @WithMockUser를 사용하면 된다는 것을 알게 되었습니다.

 

문서에 상세하게 사용법이 나와있는데, 

기본적으로는 test하고자 하는 메서드 테스트 코드에 @WithMockUser만 붙여주면 된다고 합니다. 

 

 

사용해보니 테스트 통과가 되더라구요.

 

하지만 특정한 username이나 password를 사용해서 인증을 하고 싶은 경우 혹은 권한을 달리하여 인증을 하고 싶은 경우에는 

@WithMockUser(username="username1", password="password1", roles="USER") 와 같이 커스터마이징 해서 사용할 수도 있습니다.

 

 

https://docs.spring.io/spring-security/site/docs/5.0.x/reference/html/test-method.html

 

11. Testing Method Security

This section demonstrates how to use Spring Security’s Test support to test method based security. We first introduce a MessageService that requires the user to be authenticated in order to access it. The result of getMessage is a String saying "Hello" t

docs.spring.io

 

반응형