테스트 코드
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)