fix(telegram): sanitize failover alert errors
All checks were successful
Code Review / ai-code-review (push) Successful in 10s
CD Pipeline / tests (push) Successful in 1m5s
CD Pipeline / build-and-deploy (push) Successful in 3m25s
CD Pipeline / post-deploy-checks (push) Successful in 1m16s

This commit is contained in:
Your Name
2026-05-06 16:45:29 +08:00
parent a94435f143
commit 8f715fd3f2
5 changed files with 101 additions and 11 deletions

View File

@@ -19,6 +19,8 @@ from src.services.failover_alerter import (
DEDUP_TTL_SEC,
QUOTA_DEDUP_TTL_SEC,
FailoverAlerter,
_lines_from_list,
_sanitize_telegram_error,
configure_alerter,
get_failover_alerter,
reset_failover_alerter,
@@ -231,3 +233,19 @@ async def test_memory_dedup_max_size_gc():
# GC 後999 個 stale entry 被清除,只剩 fresh:key + trigger:gc:key
assert len(alerter._memory_dedup) <= 3 # fresh + trigger + 可能有邊界差1
def test_lines_from_list_escapes_markdown_v2_numbered_periods() -> None:
rendered = _lines_from_list(["修復 node-exporter-110"])
assert "1\\." in rendered
assert "node\\-exporter\\-110" in rendered
def test_sanitize_telegram_error_redacts_bot_token_url() -> None:
raw = "HTTP error for https://api.telegram.org/bot123456:SECRET/sendMessage"
sanitized = _sanitize_telegram_error(raw)
assert "SECRET" not in sanitized
assert "bot<redacted>" in sanitized

View File

@@ -0,0 +1,12 @@
from __future__ import annotations
from src.services.telegram_gateway import _sanitize_telegram_error
def test_telegram_gateway_sanitizes_bot_token_url() -> None:
raw = "Client error for https://api.telegram.org/bot123456:SECRET/sendMessage"
sanitized = _sanitize_telegram_error(raw)
assert "SECRET" not in sanitized
assert "bot<redacted>" in sanitized