diff --git a/core/apps/accounts/tests/test_auth.py b/core/apps/accounts/tests/test_auth.py index 7b3411a..052a40a 100644 --- a/core/apps/accounts/tests/test_auth.py +++ b/core/apps/accounts/tests/test_auth.py @@ -9,6 +9,7 @@ from django_core.models import SmsConfirm from pydantic import BaseModel from rest_framework import status from rest_framework.test import APIClient +from django.utils import timezone class TokenModel(BaseModel): @@ -26,6 +27,8 @@ def test_user(db): phone = "998999999999" password = "password" user = get_user_model().objects.create_user(phone=phone, first_name="John", last_name="Doe", password=password) + user.validated_at = timezone.now() + user.save() return user @@ -40,9 +43,6 @@ def sms_code(test_user): def test_reg_view(api_client): data = { "phone": "998999999991", - "first_name": "John", - "last_name": "Doe", - "password": "password", } with patch.object(SmsService, "send_confirm", return_value=True): response = api_client.post(reverse("auth-register"), data=data) @@ -124,3 +124,37 @@ def test_me_update_view(api_client, test_user): data = {"first_name": "Updated"} response = api_client.patch(reverse("me-user-update"), data=data) assert response.status_code == status.HTTP_200_OK + + +@pytest.mark.django_db +def test_login_send_code(api_client, test_user): + data = {"phone": test_user.phone} + + with patch.object(SmsService, "send_confirm", return_value=True): + response = api_client.post(reverse("login-send-code"), data=data) + assert response.status_code == status.HTTP_202_ACCEPTED + assert response.data["data"]["detail"] == f"Sms {test_user.phone} raqamiga yuborildi" + + +@pytest.mark.django_db +def test_login_send_code_invalid_phone(api_client, test_user): + phone = f"{test_user.phone}1" + data = {"phone": phone} + with patch.object(SmsService, "send_confirm", return_value=True): + response = api_client.post(reverse("login-send-code"), data=data) + assert response.status_code == status.HTTP_400_BAD_REQUEST + assert response.data["data"]["phone"][0] == f"Phone Not Found" + + +@pytest.mark.django_db +def test_login_code_confirm_view(api_client, test_user, sms_code): + data = {"phone": test_user.phone, "code": sms_code} + response = api_client.post(reverse("login-send-confirm"), data=data) + assert response.status_code == status.HTTP_202_ACCEPTED + + +@pytest.mark.django_db +def test_login_code_confirm_invalid_code(api_client, test_user): + data = {"phone": test_user.phone, "code": "123456"} + response = api_client.post(reverse("login-send-confirm"), data=data) + assert response.status_code == status.HTTP_400_BAD_REQUEST