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
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:
@@ -3,13 +3,13 @@
|
||||
from datetime import timedelta
|
||||
from unittest.mock import patch
|
||||
|
||||
from apps.core.admin import BackgroundJobAdmin
|
||||
from apps.core.models import BackgroundJob
|
||||
from django.contrib.admin.sites import AdminSite
|
||||
from django.contrib.messages.storage.fallback import FallbackStorage
|
||||
from django.test import RequestFactory, TestCase
|
||||
from django.utils import timezone
|
||||
|
||||
from apps.core.admin import BackgroundJobAdmin
|
||||
from apps.core.models import BackgroundJob
|
||||
from tests.apps.user.factories import UserFactory
|
||||
from tests.utils.fixtures import fake
|
||||
|
||||
|
||||
@@ -253,6 +253,7 @@ class BackgroundJobServiceTest(TestCase):
|
||||
|
||||
def test_cleanup_old_jobs(self):
|
||||
from datetime import timedelta
|
||||
|
||||
from django.utils import timezone
|
||||
|
||||
old_job = BackgroundJobService.create_job(
|
||||
|
||||
@@ -3,12 +3,13 @@
|
||||
from apps.core.cache import (
|
||||
CacheManager,
|
||||
_build_cache_key,
|
||||
invalidate_cache,
|
||||
cache_method,
|
||||
cache_result,
|
||||
invalidate_cache,
|
||||
)
|
||||
from django.core.cache import cache
|
||||
from django.test import TestCase
|
||||
|
||||
from tests.utils.fixtures import fake
|
||||
|
||||
|
||||
@@ -262,6 +263,7 @@ class BuildCacheKeyTest(TestCase):
|
||||
|
||||
def test_build_cache_key_handles_circular(self):
|
||||
"""Test circular references fallback to str."""
|
||||
|
||||
def my_function():
|
||||
pass
|
||||
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
"""Tests for custom exception handler."""
|
||||
|
||||
from apps.core.exception_handler import custom_exception_handler
|
||||
from apps.core.exceptions import BaseAPIException
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.http import Http404
|
||||
from django.test import SimpleTestCase
|
||||
from rest_framework.exceptions import APIException, ValidationError
|
||||
|
||||
from apps.core.exception_handler import custom_exception_handler
|
||||
from apps.core.exceptions import BaseAPIException
|
||||
|
||||
|
||||
class CustomExceptionHandlerTest(SimpleTestCase):
|
||||
def _context(self):
|
||||
|
||||
@@ -12,8 +12,7 @@ from apps.core.logging import (
|
||||
)
|
||||
from apps.core.middleware import RequestIDMiddleware, get_request_id
|
||||
from django.http import HttpResponse
|
||||
from django.test import RequestFactory
|
||||
from django.test import TestCase
|
||||
from django.test import RequestFactory, TestCase
|
||||
|
||||
|
||||
class JSONFormatterTest(TestCase):
|
||||
|
||||
@@ -148,9 +148,7 @@ class BaseAppCommandTest(TestCase):
|
||||
|
||||
from apps.core.models import BackgroundJob
|
||||
|
||||
self.assertTrue(
|
||||
BackgroundJob.objects.filter(task_id="persist-task").exists()
|
||||
)
|
||||
self.assertTrue(BackgroundJob.objects.filter(task_id="persist-task").exists())
|
||||
|
||||
def test_progress_iter_without_total(self):
|
||||
cmd = BaseAppCommand()
|
||||
|
||||
@@ -3,7 +3,11 @@
|
||||
import logging
|
||||
from io import StringIO
|
||||
|
||||
from apps.core.middleware import RequestIDMiddleware, RequestLoggingMiddleware, get_request_id
|
||||
from apps.core.middleware import (
|
||||
RequestIDMiddleware,
|
||||
RequestLoggingMiddleware,
|
||||
get_request_id,
|
||||
)
|
||||
from django.http import HttpResponse
|
||||
from django.test import RequestFactory
|
||||
from django.urls import reverse
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
"""Тесты для Model Mixins."""
|
||||
|
||||
from django.db import connection, models
|
||||
from django.test import TestCase, TransactionTestCase
|
||||
from django.test.utils import isolate_apps
|
||||
|
||||
from apps.core.mixins import (
|
||||
AuditMixin,
|
||||
OrderableMixin,
|
||||
@@ -12,6 +8,10 @@ from apps.core.mixins import (
|
||||
StatusMixin,
|
||||
TimestampMixin,
|
||||
)
|
||||
from django.db import connection, models
|
||||
from django.test import TestCase, TransactionTestCase
|
||||
from django.test.utils import isolate_apps
|
||||
|
||||
from tests.apps.user.factories import UserFactory
|
||||
|
||||
|
||||
|
||||
@@ -2,12 +2,11 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from apps.core.openapi import _get_status_description, api_docs, swagger_tag
|
||||
from django.test import SimpleTestCase, override_settings
|
||||
from drf_yasg import openapi
|
||||
from rest_framework import serializers
|
||||
|
||||
from apps.core.openapi import _get_status_description, api_docs, swagger_tag
|
||||
|
||||
|
||||
class DummySerializer(serializers.Serializer):
|
||||
name = serializers.CharField()
|
||||
|
||||
@@ -2,10 +2,6 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.db.models.signals import post_save
|
||||
from django.test import TestCase
|
||||
|
||||
from apps.core.signals import (
|
||||
SignalDispatcher,
|
||||
on_post_delete,
|
||||
@@ -14,6 +10,10 @@ from apps.core.signals import (
|
||||
on_pre_save,
|
||||
signal_dispatcher,
|
||||
)
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.db.models.signals import post_save
|
||||
from django.test import TestCase
|
||||
|
||||
from tests.utils.fixtures import fake
|
||||
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ def idempotent_task(self, marker: str):
|
||||
BackgroundJob.objects.create(task_id=marker, task_name="test.idem")
|
||||
return marker
|
||||
|
||||
|
||||
@celery_app.task(base=TimedTask, bind=True)
|
||||
def timed_task(self, marker: str):
|
||||
return marker
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
"""Tests for core views (health checks)"""
|
||||
|
||||
from django.urls import reverse
|
||||
from rest_framework import status
|
||||
from rest_framework.test import APITestCase, APIRequestFactory
|
||||
import sys
|
||||
import types
|
||||
from datetime import timedelta
|
||||
|
||||
from apps.core import views as core_views
|
||||
from apps.core.views import HealthCheckView
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
from rest_framework import status
|
||||
from rest_framework.test import APIRequestFactory, APITestCase
|
||||
|
||||
from tests.apps.user.factories import UserFactory
|
||||
from tests.utils.fixtures import fake
|
||||
from django.utils import timezone
|
||||
from apps.core.views import HealthCheckView
|
||||
from apps.core import views as core_views
|
||||
import sys
|
||||
import types
|
||||
|
||||
|
||||
class HealthCheckViewTest(APITestCase):
|
||||
@@ -51,7 +52,9 @@ class HealthCheckViewTest(APITestCase):
|
||||
url = reverse("core:health")
|
||||
response = self.client.get(url)
|
||||
self.assertIn("redis", response.data["checks"])
|
||||
self.assertIn(response.data["checks"]["redis"]["status"], ["up", "down", "skipped"])
|
||||
self.assertIn(
|
||||
response.data["checks"]["redis"]["status"], ["up", "down", "skipped"]
|
||||
)
|
||||
|
||||
|
||||
class HealthCheckStatusCombinationsTest(APITestCase):
|
||||
@@ -322,7 +325,9 @@ class BackgroundJobsViewTest(APITestCase):
|
||||
)
|
||||
|
||||
def test_job_status_for_owner(self):
|
||||
job = self._create_job(task_id="job-owner", user_id=self.user.id, status="success")
|
||||
job = self._create_job(
|
||||
task_id="job-owner", user_id=self.user.id, status="success"
|
||||
)
|
||||
self.client.force_authenticate(self.user)
|
||||
url = reverse("api_v1:jobs:job-status", kwargs={"task_id": job.task_id})
|
||||
response = self.client.get(url)
|
||||
@@ -330,14 +335,18 @@ class BackgroundJobsViewTest(APITestCase):
|
||||
self.assertEqual(response.data["task_id"], job.task_id)
|
||||
|
||||
def test_job_status_forbidden_for_other_user(self):
|
||||
job = self._create_job(task_id="job-forbidden", user_id=self.user.id, status="success")
|
||||
job = self._create_job(
|
||||
task_id="job-forbidden", user_id=self.user.id, status="success"
|
||||
)
|
||||
self.client.force_authenticate(self.other)
|
||||
url = reverse("api_v1:jobs:job-status", kwargs={"task_id": job.task_id})
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
|
||||
def test_job_status_for_admin(self):
|
||||
job = self._create_job(task_id="job-admin", user_id=self.user.id, status="success")
|
||||
job = self._create_job(
|
||||
task_id="job-admin", user_id=self.user.id, status="success"
|
||||
)
|
||||
self.client.force_authenticate(self.admin)
|
||||
url = reverse("api_v1:jobs:job-status", kwargs={"task_id": job.task_id})
|
||||
response = self.client.get(url)
|
||||
@@ -364,3 +373,10 @@ class BackgroundJobsViewTest(APITestCase):
|
||||
response = self.client.get(url, {"limit": 2})
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertLessEqual(len(response.data), 2)
|
||||
|
||||
def test_job_list_invalid_limit_returns_400(self):
|
||||
self._create_job(task_id="job-invalid-limit", user_id=self.user.id, status="success")
|
||||
self.client.force_authenticate(self.user)
|
||||
url = reverse("api_v1:jobs:job-list")
|
||||
response = self.client.get(url, {"limit": "abc"})
|
||||
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
@@ -189,7 +189,9 @@ router.register(
|
||||
basename="profile-owner-public",
|
||||
)
|
||||
router.register("bulk-proxies", BulkProxyViewSet, basename="bulk-proxy")
|
||||
router.register("bulk-proxies-write", BulkWritableProxyViewSet, basename="bulk-proxy-write")
|
||||
router.register(
|
||||
"bulk-proxies-write", BulkWritableProxyViewSet, basename="bulk-proxy-write"
|
||||
)
|
||||
|
||||
urlpatterns = [path("", include(router.urls))]
|
||||
|
||||
@@ -283,9 +285,7 @@ class BaseViewSetIntegrationTest(APITestCase):
|
||||
self.assertTrue(response.data["success"])
|
||||
self.assertEqual(len(response.data["data"]), 2)
|
||||
self.assertIn("pagination", response.data["meta"])
|
||||
self.assertSetEqual(
|
||||
set(response.data["data"][0].keys()), {"id", "address"}
|
||||
)
|
||||
self.assertSetEqual(set(response.data["data"][0].keys()), {"id", "address"})
|
||||
|
||||
def test_list_without_pagination(self):
|
||||
ProxyFactory.create_batch(2)
|
||||
@@ -451,7 +451,9 @@ class BulkMixinIntegrationTest(APITestCase):
|
||||
self.assertEqual(response.data["errors"][0]["code"], "missing_ids")
|
||||
|
||||
def test_bulk_update_empty_items(self):
|
||||
response = self.client.patch("/bulk-proxies-write/bulk_update/", {}, format="json")
|
||||
response = self.client.patch(
|
||||
"/bulk-proxies-write/bulk_update/", {}, format="json"
|
||||
)
|
||||
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||
self.assertFalse(response.data["success"])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user