fix: quarantine failed product cleanups in failed_cleanup state

This commit is contained in:
2026-09-12 15:00:33 +08:00
parent b3ab1bfc52
commit bd78eef161
7 changed files with 149 additions and 19 deletions
+29
View File
@@ -3,6 +3,7 @@ import hashlib
import sqlite3
import sys
import shutil
from datetime import datetime
from io import BytesIO
from pathlib import Path
from types import SimpleNamespace
@@ -327,6 +328,34 @@ def test_product_routes_require_orders_auth(product_archive_client):
assert [response.status_code for response in requests] == [403] * 6
def test_archive_version_rejects_failed_cleanup_product_and_status_is_visible(
product_archive_client,
):
product = create_product(product_archive_client)
deleted = product_archive_client.delete(
f"/api/products/{product['product_id']}", headers=orders_auth_header()
).json()
store = product_archive_client.product_store
purge_after = datetime.fromisoformat(deleted["purge_after"])
store.claim_product_purge(deleted["product_id"], purge_after)
store.fail_product_purge(deleted["product_id"])
listed = product_archive_client.get(
f"/api/products/{deleted['product_id']}", headers=orders_auth_header()
).json()
assert listed["status"] == "failed_cleanup"
response = archive_product_version(
product_archive_client, deleted["product_id"], {"elements": []}
)
assert response.status_code == 409
restored = product_archive_client.post(
f"/api/products/{deleted['product_id']}/restore", headers=orders_auth_header()
).json()
assert restored["status"] == "active"
def test_archive_failure_during_final_move_removes_staging_files(product_archive_client, prepared_wordcloud_job, monkeypatch):
product = create_product(product_archive_client)
service = service_app._product_archive_service()