Publish curated ITWorx-ModelForge source from 990401737f96c8d46a9f7b0d84994516cadcb6a0
This commit is contained in:
1 parent
7082ab955a
commit
848f0d8f8a
434 files changed
+67298
-4315
No files matched your search
@@ -2,6 +2,7 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import uuid
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
@@ -33,6 +34,7 @@ RECOVERY_ROUTES = (
|
||||
("GET", "/api/v1/admin/recovery/restore-operations"),
|
||||
("GET", "/api/v1/admin/recovery/artifact-recoveries"),
|
||||
("GET", "/api/v1/admin/recovery/fingerprint"),
|
||||
("GET", "/api/v1/admin/recovery/retention/preview"),
|
||||
("POST", "/api/v1/admin/recovery/retention/run"),
|
||||
)
|
||||
|
||||
@@ -105,6 +107,34 @@ def test_dashboard_reports_measured_state_and_never_invents_a_backup(recovery: A
|
||||
assert payload["verified_backup_count"] == 0
|
||||
|
||||
|
||||
def test_retention_preview_returns_exact_ids_without_backup_or_secret_metadata(
|
||||
recovery: Any, tmp_path: Path
|
||||
) -> None:
|
||||
session, _service, _settings = recovery
|
||||
_subject, record = seed_backup(
|
||||
session, tmp_path, backup_id="m15-retention-api-preview"
|
||||
)
|
||||
|
||||
response = client.get("/api/v1/admin/recovery/retention/preview", headers=ADMIN)
|
||||
|
||||
assert response.status_code == 200
|
||||
payload = response.json()
|
||||
assert payload["policy_key"] == "control-plane.database"
|
||||
assert payload["minimum_verified_backups"] == 2
|
||||
assert payload["retained_backup_ids"] == [record.backup_id]
|
||||
assert payload["expiring_backup_ids"] == []
|
||||
assert len(payload["decisions"]) == 1
|
||||
assert payload["decisions"][0]["backup_id"] == record.backup_id
|
||||
assert payload["decisions"][0]["current_state"] == "CREATED"
|
||||
assert payload["decisions"][0]["decision"] == "RETAIN"
|
||||
assert payload["decisions"][0]["reason"] == "RETENTION_NOT_REACHED"
|
||||
assert payload["decisions"][0]["expires_at"] is not None
|
||||
serialized = json.dumps(payload).lower()
|
||||
assert "destination_root" not in payload
|
||||
assert "encryption_key_id" not in payload
|
||||
assert "secret" not in serialized
|
||||
|
||||
|
||||
def test_policies_and_assets_expose_the_full_classification(recovery: Any) -> None:
|
||||
policies = client.get("/api/v1/admin/recovery/policies", headers=ADMIN).json()
|
||||
assert {item["key"] for item in policies} >= {
|
||||
|
||||
Reference in new issue
Block a user