DRF 5-14 로그인 안 했을 때 글 작성 테스트

Grace Goh·2022년 11월 16일
0

Django Rest Framework

목록 보기
30/36

로그인 안 한 상태에서 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)가 발생한다.

profile
Español, Inglés, Coreano y Python

0개의 댓글