41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
"""Admin 存储快照的配额、回收站与物理合计口径。"""
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
import unittest
|
|
from datetime import datetime, timezone
|
|
from pathlib import Path
|
|
from unittest.mock import MagicMock, patch
|
|
from uuid import uuid4
|
|
|
|
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
|
|
|
|
from web.admin import _storage_page
|
|
|
|
|
|
class AdminStorageTests(unittest.TestCase):
|
|
def test_storage_page_exposes_trash_and_physical_total(self) -> None:
|
|
uid = uuid4()
|
|
scanned = datetime(2026, 8, 28, tzinfo=timezone.utc)
|
|
total_result = MagicMock()
|
|
total_result.scalar_one.return_value = 1
|
|
rows_result = MagicMock()
|
|
rows_result.all.return_value = [
|
|
(uid, "user@example.com", "测试用户", "tester", 100, 2, 40, 1, scanned)
|
|
]
|
|
session = MagicMock()
|
|
session.execute.side_effect = [total_result, rows_result]
|
|
|
|
with patch("core.agent_builder.load_config", return_value={"quotas": {}}):
|
|
page = _storage_page(session, 0, 20)
|
|
|
|
row = page["rows"][0]
|
|
self.assertEqual(row["bytes_used"], 100)
|
|
self.assertEqual(row["trash_bytes"], 40)
|
|
self.assertEqual(row["trash_file_count"], 1)
|
|
self.assertEqual(row["physical_bytes"], 140)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|