로그인 안 한 상태에서 post를 요청하면
error(401)가 제대로 발생하는지 테스트하기.
setUp은 아래 2가지 방법 중 택1하면 된다.
# articles/test.py
from django.urls import reverse
from rest_framework.test import APITestCase
from rest_framework import status
from users.models import User
class ArticleCreateTest(APITestCase):
# setUp을 classmethod 사용해서 바꿔보기
@classmethod
def setUpTestData(cls):
cls.user_data = {'email':'hp@gmail.com', 'password':'hp'}
cls.article_data = {'title':'hp', 'content':'hp is hp'}
cls.user = User.objects.create_user('hp@gmail.com', 'hp')
def setUp(self):
self.access_token = self.client.post(reverse('token_obtain_pair'), self.user_data).data['access']
# 각 메서드를 실행할 때 토큰을 받아오는 식으로 하게 된다.
# def setUp(self):
# # 회원가입
# self.user_data = {'email':'hp@gmail.com', 'password':'hp'}
# self.article_data = {'title':'hp', 'content':'hp is hp'}
# self.user = User.objects.create_user('hp@gmail.com', 'hp')
# self.access_token = self.client.post(reverse('token_obtain_pair'), self.user_data).data['access']
# django manage.py test 실행하려면 파일명, 함수명 앞에 test 있어야 한다.
def test_fail_if_not_logged_in(self):
url = reverse("article_view") # url 받아오기 (name으로)
response = self.client.post(url, self.article_data) # url로 article_data 보내기
# 클래스에 만든 것이 instance에 만들어지며 가져와졌기 때문에 이렇게 보낼 수 있다.
self.assertEqual(response.status_code, 401)
python manage.py test articles
status_code가 401인 것이 확인되었다.
> 로그인 안 된 유저가 post를 시도하면 에러(401)가 발생한다.