Django를 API서버로만 이용할 때, 외부 사용자들에게 header를 통해 인증정보를 받아야 할 경우가 있다.
이때, Test코드에서도 이를 처리해야 하는데,
TestCase의 client에서 요청을 보낼때,
def test_user_profile_success(self):
token = RefreshToken.for_user(User.objects.get(id =1))
header = {"HTTP_access": str(token.access_token),'HTTP_refresh' : str(token)}
response = client.get('/users/profile/', **header, content_type='application/json')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json(),
[
{
'id': 1,
'uid': '123123123',
'username': 'test',
'email': 'test@gmail.com',
'picture': 'https://ifh.123123/g/ElNIU1.jpg',
'last_login': None,
'rank_set': [{'correct_answer': 0, 'total_time': 0, 'quiz_passed': 0, 'attempt': 0}]
}
]
)
header에 위와같은 형식으로 보내지게 된다. HTTP_ 라고 시작하는 key를 HTTP_를 떼고 header에 실어서 보내기 때문에,
반드시 앞에 HTTP_를 붙여서 요청해야 한다.