fix(intents): isolate alarm context lookup and sanitize alarm failure logs
Co-authored-by: genichin <4282227+genichin@users.noreply.github.com>
This commit is contained in:
co-authored by
genichin
parent
5dd3d57f86
commit
1ca9e60c98
@@ -15,6 +15,7 @@ import pytest
|
||||
|
||||
from trex_core.adapters.messaging.in_memory import InMemoryTransport
|
||||
from trex_core.application.alarm_emitter import AlarmEmitter
|
||||
from trex_core.application.messaging import TransportUnavailableError
|
||||
|
||||
# ------------------------------------------------------------------ helpers
|
||||
|
||||
@@ -154,3 +155,40 @@ def test_alarm_emitter_no_telegram_reference():
|
||||
source = inspect.getsource(ae_mod)
|
||||
assert "TELEGRAM" not in source, "alarm_emitter must not reference TELEGRAM_*"
|
||||
assert "telegram" not in source.lower(), "alarm_emitter must not reference telegram"
|
||||
|
||||
|
||||
def test_publish_alarm_transport_unavailable_log_is_sanitized(
|
||||
caplog: pytest.LogCaptureFixture,
|
||||
):
|
||||
class UnavailableTransport:
|
||||
def publish_alarm_event(self, routing_key, payload):
|
||||
raise TransportUnavailableError("secret-token-value")
|
||||
|
||||
def health(self):
|
||||
from trex_core.application.messaging import TransportHealth
|
||||
return TransportHealth.DISCONNECTED
|
||||
|
||||
emitter = AlarmEmitter(UnavailableTransport()) # type: ignore[arg-type]
|
||||
with caplog.at_level(logging.ERROR, logger="trex_core.application.alarm_emitter"):
|
||||
emitter.publish_alarm("strategy_intent_rejected", "alarm title")
|
||||
|
||||
assert any("transport unavailable" in r.message for r in caplog.records)
|
||||
assert "secret-token-value" not in caplog.text
|
||||
|
||||
|
||||
def test_publish_alarm_generic_exception_log_is_sanitized(caplog: pytest.LogCaptureFixture):
|
||||
class BrokenTransport:
|
||||
def publish_alarm_event(self, routing_key, payload):
|
||||
raise RuntimeError("******")
|
||||
|
||||
def health(self):
|
||||
from trex_core.application.messaging import TransportHealth
|
||||
return TransportHealth.CONNECTED
|
||||
|
||||
emitter = AlarmEmitter(BrokenTransport()) # type: ignore[arg-type]
|
||||
with caplog.at_level(logging.ERROR, logger="trex_core.application.alarm_emitter"):
|
||||
emitter.publish_alarm("strategy_intent_rejected", "alarm title")
|
||||
|
||||
assert any("alarm publish failed" in r.message for r in caplog.records)
|
||||
assert "RuntimeError" in caplog.text
|
||||
assert "******" not in caplog.text
|
||||
|
||||
Reference in New Issue
Block a user