feat(registry): add new endpoints for registers, exchange, and backups; update routing and configurations
Some checks failed
CI/CD Pipeline / Code Quality Checks (push) Failing after 3m10s
CI/CD Pipeline / Run Tests (push) Successful in 3m35s
CI/CD Pipeline / Telegram Notify Success (push) Has been skipped
CI/CD Pipeline / Code Quality Checks (pull_request) Failing after 2m26s
CI/CD Pipeline / Run Tests (pull_request) Successful in 2m46s
CI/CD Pipeline / Telegram Notify Success (pull_request) Has been skipped

This commit is contained in:
2026-03-04 15:36:57 +01:00
parent 052389d921
commit a91ed1f1ae
90 changed files with 5488 additions and 622 deletions

View File

@@ -2,13 +2,13 @@
from __future__ import annotations
from apps.user.admin import ProfileAdmin, UserAdmin
from apps.user.models import Profile, User
from django.contrib.admin.sites import AdminSite
from django.contrib.messages.storage.fallback import FallbackStorage
from django.core.files.uploadedfile import SimpleUploadedFile
from django.test import RequestFactory, TestCase
from apps.user.admin import ProfileAdmin, UserAdmin
from apps.user.models import Profile, User
from tests.utils.fixtures import fake
@@ -31,10 +31,16 @@ class UserAdminTest(TestCase):
def test_badges(self):
verified = User.objects.create_user(
email=fake.email(), username=fake.user_name(), password="pass", is_verified=True
email=fake.email(),
username=fake.user_name(),
password="pass",
is_verified=True,
)
unverified = User.objects.create_user(
email=fake.email(), username=fake.user_name(), password="pass", is_verified=False
email=fake.email(),
username=fake.user_name(),
password="pass",
is_verified=False,
)
self.assertIn("span", str(self.admin.is_verified_badge(verified)))
self.assertIn("span", str(self.admin.is_verified_badge(unverified)))

View File

@@ -191,7 +191,7 @@ class LoginSerializerTest(TestCase):
def setUp(self):
self.login_data = {
"email": fake.email(),
"username": fake.user_name(),
"password": fake.password(length=12, special_chars=False),
}
@@ -200,16 +200,16 @@ class LoginSerializerTest(TestCase):
serializer = LoginSerializer(data=self.login_data)
self.assertTrue(serializer.is_valid())
def test_missing_email(self):
"""Test validation fails without email"""
def test_missing_username(self):
"""Test validation fails without username"""
data = {"password": fake.password(length=12, special_chars=False)}
serializer = LoginSerializer(data=data)
self.assertFalse(serializer.is_valid())
self.assertIn("email", serializer.errors)
self.assertIn("username", serializer.errors)
def test_missing_password(self):
"""Test validation fails without password"""
data = {"email": fake.email()}
data = {"username": fake.user_name()}
serializer = LoginSerializer(data=data)
self.assertFalse(serializer.is_valid())
self.assertIn("password", serializer.errors)

View File

@@ -86,7 +86,7 @@ class LoginViewTest(APITestCase):
self.password = fake.password(length=12, special_chars=False)
self.user = UserFactory.create_user(password=self.password)
self.login_data = {"email": self.user.email, "password": self.password}
self.login_data = {"username": self.user.username, "password": self.password}
def test_login_success(self):
"""Test successful login"""
@@ -109,7 +109,7 @@ class LoginViewTest(APITestCase):
def test_login_nonexistent_user(self):
"""Test login fails for nonexistent user"""
data = {
"email": fake.unique.email(),
"username": fake.unique.user_name(),
"password": fake.password(length=12, special_chars=False),
}
@@ -302,14 +302,18 @@ class TokenRefreshViewTest(APITestCase):
response = self.client.post(self.refresh_url, data, format="json")
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
self.assertIn("error", response.data)
self.assertTrue(
"errors" in response.data
or "detail" in response.data
or "code" in response.data
)
def test_refresh_token_missing(self):
"""Test token refresh fails without refresh token"""
response = self.client.post(self.refresh_url, {}, format="json")
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertIn("error", response.data)
self.assertTrue("errors" in response.data or "detail" in response.data)
class ApiJwtOnlyAuthenticationTest(APITestCase):