this is a push

This commit is contained in:
2026-08-13 15:03:34 +08:00
parent 0f55259fff
commit ca61c132f2
109 changed files with 44036 additions and 198 deletions

56
test/test_alerting.py Normal file
View File

@@ -0,0 +1,56 @@
from __future__ import annotations
import unittest
from unittest.mock import patch
from backend.alerting import AlertManager
class AlertManagerRobotTests(unittest.TestCase):
def test_channel_status_does_not_expose_webhook(self) -> None:
manager = AlertManager(
wechat_webhook_url="https://example.test/wechat-secret",
feishu_webhook_url="https://example.test/feishu-secret",
feishu_secret="signing-secret",
)
statuses = {item["id"]: item for item in manager.channel_status}
self.assertTrue(statuses["wechat"]["configured"])
self.assertTrue(statuses["feishu"]["configured"])
self.assertTrue(statuses["feishu"]["signed"])
self.assertNotIn("webhook", repr(statuses).lower())
self.assertNotIn("example.test", repr(statuses))
@patch("backend.alerting.post_json", return_value={})
def test_wechat_connection_test_updates_delivery_stats(
self,
mocked_post_json,
) -> None:
manager = AlertManager(
wechat_webhook_url="https://example.test/hook"
)
result = manager.test_channel("wechat")
self.assertEqual(result["last_status"], "success")
self.assertEqual(result["delivered"], 1)
self.assertEqual(result["tests"], 1)
self.assertIsNotNone(result["last_test_at"])
mocked_post_json.assert_called_once()
def test_unconfigured_channel_cannot_send_test(self) -> None:
manager = AlertManager()
with self.assertRaisesRegex(ValueError, "尚未配置"):
manager.test_channel("wechat")
def test_unknown_channel_is_rejected(self) -> None:
manager = AlertManager()
with self.assertRaisesRegex(ValueError, "Unsupported"):
manager.test_channel("unknown")
if __name__ == "__main__":
unittest.main()