feat: export state corp package from backup endpoint
Some checks failed
CI/CD Pipeline / Quality Gate (push) Successful in 33s
CI/CD Pipeline / Build and Push Images (push) Successful in 10s
CI/CD Pipeline / Internal Notify (push) Successful in 0s
CI/CD Pipeline / Deploy Dev in Dokploy (push) Failing after 9s

This commit is contained in:
2026-05-12 15:12:56 +02:00
parent 15360a3c8e
commit 75c1d4cf1a
11 changed files with 925 additions and 301 deletions

View File

@@ -9,7 +9,6 @@ from tempfile import TemporaryDirectory
from types import SimpleNamespace
from unittest.mock import patch
from apps.backups.models import BackupExportJob
from apps.core.models import BackgroundJob
from apps.exchange.models import ExchangeConnection
from apps.parsers.models import (
@@ -708,19 +707,29 @@ class BackupsApiInventoryE2ETest(AuthenticatedApiMixin, APITestCase):
def setUp(self):
self.admin = UserFactory.create_superuser()
@patch("apps.backups.services.BackupExportJobService._enqueue_backup_task")
def test_backup_export_endpoint(self, enqueue_mock):
@patch("apps.backups.views.StateCorpExchangeService.build_package")
def test_backup_export_endpoint(self, build_package_mock):
self.authenticate(self.admin)
today = timezone.localdate()
build_package_mock.return_value = SimpleNamespace(
package_id="package-1",
archive_name="state_corp_exchange.zip",
bin_name="state_corp_exchange.bin",
archive_bytes=b"zip-bytes",
payload_counts={"organizations": 1},
produced_at="2026-05-12T10:00:00+00:00",
)
with self.captureOnCommitCallbacks(execute=True):
response = self.client.post(
reverse("api_v1:backups:export"),
{"actual_date": today.isoformat()},
format="json",
)
response = self.client.post(
reverse("api_v1:backups:export"),
{"actual_date": today.isoformat()},
format="json",
)
self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED)
self.assertEqual(response.data["status"], "started")
self.assertTrue(BackupExportJob.objects.filter(actual_date=today).exists())
enqueue_mock.assert_called_once()
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.content, b"zip-bytes")
self.assertIn(
'attachment; filename="state_corp_exchange.zip"',
response["Content-Disposition"],
)
build_package_mock.assert_called_once_with(actual_date=today)