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
반응형
'Java Spring > Security' 카테고리의 다른 글
SessionId 사용하여 로그인한 회원이 작성한 글 DB에 저장하기 (4) | 2022.08.15 |
---|---|
JWT란? JWT 생성과 사용 방법 알아보기 (0) | 2022.08.05 |
Authorization(인가)-인가 내부 절차 & 권한 설정하기 (0) | 2022.08.01 |
Authentication(인증) (2) - 로그인 절차 & 코드구현 (0) | 2022.07.30 |
Authentication(인증) (1) - 사용자 정보 저장하기 & 비밀번호 암호화하여 저장하기(DelegatingPasswordEncoder는 무엇인가?) (1) | 2022.07.29 |