import pytest from src.services import converged_alert_recurrence_notifier as notifier class _FakeRedis: def __init__(self, result): self.result = result self.calls = [] async def set(self, key, value, *, ex=None, nx=None): self.calls.append({"key": key, "value": value, "ex": ex, "nx": nx}) return self.result class _FakeGateway: alert_chat_id = "group-chat" def __init__(self): self.primary_messages = [] self.private_messages = [] async def send_alert_notification(self, text): self.primary_messages.append(text) return {"ok": True} async def send_notification(self, text, *, chat_id=None): self.private_messages.append({"text": text, "chat_id": chat_id}) return {"ok": True} def test_converged_recurrence_message_escapes_html(): text = notifier.format_converged_alert_recurrence_message( source="alertmanager", alertname="Disk", severity="critical", namespace="prod&ops", target_resource="api