이번 시간은 로그인 이후 토큰 생성을 위한 API를 만들어 볼텐데요.
테스트는 4개 만들어 볼게요.
test_user_api.py
파일에 상수를 만들게요.
TOKEN_URL = reverse('user':'token')
HTTP POST요청시 생성할 토큰 URL이에요
정상적으로 가입했을때 200 OK SIGN이 뜨게 만들게요.
payload 변수를 만들고 헬퍼 펑션을 이용해서 페이로드를 인자로 넣어 테스트디비에 후딱 데이터를 저장합니다.
그리고 클라이언트객테에서 포스트를 날리는데요. 이때 TOKEN_URL, payload를 인자로 넣고 res를 다시 객체변수로 받아요.
마무리로 assertIn
메서드를 통해서 HTTP request이후 response body에 (res.data
)에 token키가 있는지 없는지 확인하겠습니다.
또한 status_code역시 assertEqual를 통해서 200이 떳는지 안떳는지 assertEqual을 통해서 비교합니당~
def test_create_token_for_user(self):
"""Test that a token is created for the user"""
payload = {'email': 'test@testtest.com', 'password': 'testpass'}
create_user(**payload)
res = self.client.post(TOKEN_URL, payload)
self.assertIn('token', res.data)
self.assertEqual(res.status_code, status.HTTP_200_OK)
오류 테스트가 상대적으로 비교하자면 더~중요하겠조?
아래와 같이 다시 작성해요.
def test_create_token_invailid_credentials(self):
"""Test that token is not created if invalid credentials are given"""
create_user(email='test@testtest.com', password='testpass')
payload = {'email': 'test@testtest.com', 'password': 'wrong'}
res = self.client.post(TOKEN_URL, payload)
self.assertNotIn('token', res.data)
self.assertEqual(res.status_code, status.HTTP_400_BAD_REQUEST)
def test_create_token_no_user(self):
"""Test that token is not created if user doesn't exist"""
payload = {'email': 'test@testtest.com', 'password': 'testpass'}
res = self.client.post(TOKEN_URL, payload)
self.assertNotIn('token', res.data)
self.assertEqual(res.status_code, status.HTTP_400_BAD_REQUEST)
def test_create_token_missing_field(self):
"""Test that email and password are required"""
payload = {'email': 'one', 'password': ''}
res = self.client.post(TOKEN_URL, payload)
self.assertNotIn('token', res.data)
self.assertEqual(res.status_code, status.HTTP_400_BAD_REQUEST)
이외에도 다른 테스트가 생각나거나 필요하다면 추가해서 validation 테스트를 할 수 있어요.