TIL

손성수·2023년 6월 20일
0

테스트 코드

class EmailVerificationAndLoginTest(APITestCase):
    """
    이메일 인증, 로그인 테스트
    """

    @classmethod
    def setUpTestData(cls):
        """
        테스트 클래스 오브젝트 생성
        setUpTestData : 클래스에서 한 번만 실행되고 정의
        """
        # 테스트 유저
        cls.user_data = {'email': 'test@naver.com', "nickanme": "testUser", 'password': 'Test123456!'}
        cls.user = users.models.User.objects.create_user('test@naver.com', "testUser", 'Test123456!')
        cls.user = users.models.User.objects.get(pk=cls.user.pk)


    def setUp(self):
        """
        이메일 인증 코드 발급 받기
        setUp : 메서드가 실행될 때 마다 한 번씩 실행
        """

        url = reverse("email_verification_code")
        email = self.user_data.get('email')
        request = {
            "email": email
        }
        response = self.client.put(url, request)
        self.assertEqual(response.status_code, 200)

    def email_verification(self, request, status_code):
        """
        이메일 인증 테스트
        """

        url = reverse("user_view")
        response = self.client.put(url, request)
        self.assertEqual(response.status_code, status_code)



    def test_email_verification(self):
        """
        이메일 인증 성공, 실패  테스트
        """

        test_cases = [
            ({"email": self.user.email, "verification_code": self.user.email_verification.verification_code}, 200),
            # 이메일 인증 성공 테스트
            .... 테스트 케이스들 작성
        ]
        for information, stats_code in test_cases:
            self.email_verification(information, stats_code)

    def test_email_verification_code_expired(self):
        """
        인증 코드 유효 기간 초과된 사용자가 인증을 시도할 경우
        """

        now = timezone.now() + timedelta(minutes=10)
        with patch('django.utils.timezone.now', return_value=now) as mock_now:
            request = {
                "email": self.user.email,
                "verification_code": self.user.email_verification.verification_code
            }
            self.email_verification(request, 400)
profile
더 노력하겠습니다

0개의 댓글