티스토리 뷰

IT/JAVA 및 Spring

[Junit] 유닛 테스트에서 응답코드가 401로 뜨는 경우 해결방법

주인장 진빼이 2022. 11

크롬을 켜서 실제 테스트로 진행하면 200 http response code가 뜨지만

유닛 테스트를 돌려서 테스트를 진행하면 401 오류가 발생하는 경우가 있다.

java.lang.AssertionError: Status expected:<200> but was:<401>
필요:200
실제   :401

MockHttpServletResponse:
           Status = 401
    Error message = Unauthorized
          Headers = [WWW-Authenticate:"Basic realm="Realm"", X-Content-Type-Options:"nosniff", X-XSS-Protection:"0", Cache-Control:"no-cache, no-store, max-age=0, must-revalidate", Pragma:"no-cache", Expires:"0", X-Frame-Options:"DENY"]
     Content type = null
             Body = 
    Forwarded URL = null
   Redirected URL = null
          Cookies = []

이런식으로 401 응답 코드만 뜨는 경우 사용자 권한이 부족해서 그런데

보통 Spring-Security가 적용되어 있고, 별도 권한 작업을 하지 않은 경우 테스트 진행이 어렵다.

 

그러므로 해당 테스트 메소드에 기존 @Test 어노테이션 아랫줄에 @WithMockUser(roles = "USER") 어노테이션을 추가로 입력하여

이미 권한을 받은 유저(Mock User)로 인식시킨 후 유닛 테스트를 진행해야 한다.

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함