feat: Implement MFA authentication, add ride statistics model, and update various services, APIs, and tests across the application.

This commit is contained in:
pacnpal
2025-12-28 17:32:53 -05:00
parent aa56c46c27
commit c95f99ca10
452 changed files with 7948 additions and 6073 deletions

View File

@@ -4,29 +4,26 @@ Tests for Account serializers.
Following Django styleguide pattern: test__<context>__<action>__<expected_outcome>
"""
from unittest.mock import Mock, patch
import pytest
from unittest.mock import Mock, patch, MagicMock
from django.test import TestCase, RequestFactory
from django.test import RequestFactory, TestCase
from apps.accounts.serializers import (
UserSerializer,
LoginSerializer,
SignupSerializer,
PasswordResetSerializer,
PasswordChangeSerializer,
PasswordResetSerializer,
SignupSerializer,
SocialProviderSerializer,
UserSerializer,
)
from apps.api.v1.accounts.serializers import (
UserProfileCreateInputSerializer,
UserProfileUpdateInputSerializer,
UserProfileOutputSerializer,
UserProfileUpdateInputSerializer,
)
from tests.factories import (
UserFactory,
StaffUserFactory,
)
@@ -169,7 +166,7 @@ class TestSignupSerializer(TestCase):
def test__validate_email__duplicate_email__returns_error(self):
"""Test validation fails with duplicate email."""
existing_user = UserFactory(email="existing@example.com")
UserFactory(email="existing@example.com")
data = {
"username": "newuser",
"email": "existing@example.com",
@@ -185,7 +182,7 @@ class TestSignupSerializer(TestCase):
def test__validate_email__case_insensitive__returns_error(self):
"""Test email validation is case insensitive."""
existing_user = UserFactory(email="existing@example.com")
UserFactory(email="existing@example.com")
data = {
"username": "newuser",
"email": "EXISTING@EXAMPLE.COM",
@@ -201,7 +198,7 @@ class TestSignupSerializer(TestCase):
def test__validate_username__duplicate_username__returns_error(self):
"""Test validation fails with duplicate username."""
existing_user = UserFactory(username="existinguser")
UserFactory(username="existinguser")
data = {
"username": "existinguser",
"email": "new@example.com",
@@ -262,7 +259,7 @@ class TestPasswordResetSerializer(TestCase):
def test__validate__valid_email__returns_normalized_email(self):
"""Test validation normalizes email."""
user = UserFactory(email="test@example.com")
UserFactory(email="test@example.com")
data = {"email": " TEST@EXAMPLE.COM "}
serializer = PasswordResetSerializer(data=data)
@@ -302,7 +299,7 @@ class TestPasswordResetSerializer(TestCase):
@patch("apps.accounts.serializers.EmailService.send_email")
def test__save__existing_user__sends_email(self, mock_send_email):
"""Test save sends email for existing user."""
user = UserFactory(email="reset@example.com")
UserFactory(email="reset@example.com")
data = {"email": "reset@example.com"}
factory = RequestFactory()