feat: expand platform APIs, sources, and test coverage
Some checks failed
CI/CD Pipeline / Run Tests (pull_request) Successful in 1m53s
CI/CD Pipeline / Telegram Notify Success (push) Has been cancelled
CI/CD Pipeline / Run Tests (push) Has been cancelled
CI/CD Pipeline / Code Quality Checks (push) Has been cancelled
CI/CD Pipeline / Code Quality Checks (pull_request) Failing after 2m54s
CI/CD Pipeline / Telegram Notify Success (pull_request) Has been skipped

This commit is contained in:
2026-03-17 12:56:48 +01:00
parent b505c67968
commit 3d298ce352
101 changed files with 8387 additions and 292 deletions

View File

@@ -1,8 +1,11 @@
"""Tests for user serializers"""
from apps.user.serializers import (
AdminUserCreateSerializer,
AdminUserUpdateSerializer,
LoginSerializer,
PasswordChangeSerializer,
PasswordResetConfirmSerializer,
ProfileUpdateSerializer,
TokenSerializer,
UserRegistrationSerializer,
@@ -110,6 +113,9 @@ class UserSerializerTest(TestCase):
self.assertEqual(data["email"], self.user.email)
self.assertEqual(data["username"], self.user.username)
self.assertEqual(data["phone"], self.user.phone)
self.assertEqual(data["role"], "user")
self.assertEqual(data["role_label"], "Пользователь")
self.assertIn("capabilities", data)
self.assertEqual(data["is_verified"], self.user.is_verified)
self.assertIn("profile", data)
self.assertIn("created_at", data)
@@ -117,7 +123,16 @@ class UserSerializerTest(TestCase):
def test_read_only_fields(self):
"""Test that read-only fields are not writable"""
read_only_fields = ["id", "is_verified", "created_at", "updated_at"]
read_only_fields = [
"id",
"is_active",
"is_verified",
"role",
"role_label",
"capabilities",
"created_at",
"updated_at",
]
serializer = UserSerializer()
for field_name in read_only_fields:
@@ -152,6 +167,45 @@ class UserUpdateSerializerTest(TestCase):
self.assertEqual(set(serializer.Meta.fields), set(allowed_fields))
class AdminUserCreateSerializerTest(TestCase):
"""Tests for AdminUserCreateSerializer."""
def test_valid_admin_user_create_data(self):
serializer = AdminUserCreateSerializer(
data={
"email": fake.unique.email(),
"username": fake.unique.user_name(),
"phone": f"+7{fake.numerify('##########')}",
"password": fake.password(length=12, special_chars=False),
"role": "user",
"is_active": True,
"is_verified": False,
"first_name": fake.first_name(),
"last_name": fake.last_name(),
}
)
self.assertTrue(serializer.is_valid(), serializer.errors)
class AdminUserUpdateSerializerTest(TestCase):
"""Tests for AdminUserUpdateSerializer."""
def setUp(self):
self.user = UserFactory.create_user()
def test_valid_admin_user_update_data(self):
serializer = AdminUserUpdateSerializer(
self.user,
data={
"role": "admin",
"is_active": False,
"first_name": fake.first_name(),
},
partial=True,
)
self.assertTrue(serializer.is_valid(), serializer.errors)
class ProfileUpdateSerializerTest(TestCase):
"""Tests for ProfileUpdateSerializer"""
@@ -289,3 +343,31 @@ class PasswordChangeSerializerTest(TestCase):
serializer = PasswordChangeSerializer(data=data)
self.assertFalse(serializer.is_valid())
self.assertIn("old_password", serializer.errors)
class PasswordResetConfirmSerializerTest(TestCase):
"""Tests for PasswordResetConfirmSerializer."""
def test_valid_payload(self):
new_password = fake.password(length=12, special_chars=False)
serializer = PasswordResetConfirmSerializer(
data={
"token": fake.sha1(raw_output=False),
"new_password": new_password,
"new_password_confirm": new_password,
}
)
self.assertTrue(serializer.is_valid(), serializer.errors)
def test_passwords_must_match(self):
serializer = PasswordResetConfirmSerializer(
data={
"token": fake.sha1(raw_output=False),
"new_password": fake.password(length=12, special_chars=False),
"new_password_confirm": fake.password(length=12, special_chars=False),
}
)
self.assertFalse(serializer.is_valid())
self.assertIn("non_field_errors", serializer.errors)