티스토리 뷰

IT/JAVA 및 Spring

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

주인장 진빼이

크롬을 켜서 실제 테스트로 진행하면 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
«   2024/05   »
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 31
글 보관함