""" web admin test auth file """ from datetime import datetime from django.utils import timezone from django.urls import reverse from django.contrib.auth import get_user_model from rest_framework.test import APITestCase, APIClient from rest_framework import status from account.models import UserEmailOtp from base.constants import USER_TYPE from guardian.tasks import generate_otp from web_admin.tests.test_set_up import BaseSetUp User = get_user_model() class AdminOTPTestCase(BaseSetUp): """ """ def setUp(self): """ inherit data here :return: """ super(AdminOTPTestCase, self).setUp() def test_admin_otp_for_valid_email(self): """ :return: """ url = reverse('web_admin:admin-otp') data = { 'email': 'admin@example.com' } response = self.client.post(url, data, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(UserEmailOtp.objects.count(), 1) def test_admin_otp_for_invalid_email(self): """ :return: """ url = reverse('web_admin:admin-otp') data = { 'email': 'notadmin@example.com' } response = self.client.post(url, data, format='json') self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) class AdminVerifyOTPTestCase(BaseSetUp): """ """ def setUp(self): """ inherit data here :return: """ super(AdminVerifyOTPTestCase, self).setUp() self.verification_code = generate_otp() expiry = timezone.now() + timezone.timedelta(days=1) self.user_email_otp = UserEmailOtp.objects.create(email='admin@example.com', otp=self.verification_code, expired_at=expiry, user_type=dict(USER_TYPE).get('3'), ) def test_admin_verify_otp_with_valid_otp(self): url = reverse('web_admin:admin-verify-otp') data = { 'email': 'admin@example.com', "otp": self.verification_code } response = self.client.post(url, data) self.user_email_otp.refresh_from_db() self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(self.user_email_otp.is_verified, True) def test_admin_verify_otp_with_invalid_otp(self): url = reverse('web_admin:admin-verify-otp') data = { 'email': 'admin@example.com', "otp": generate_otp() } response = self.client.post(url, data) self.user_email_otp.refresh_from_db() self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertEqual(self.user_email_otp.is_verified, False)