@@ -79,11 +79,13 @@ def test_session_check_endpoint_is_disabled_without_explicit_http_gate(monkeypat
7979
8080def test_session_check_endpoint_calls_service_when_gate_enabled (monkeypatch ):
8181 monkeypatch .setenv ("FIRSTRADE_RUN_SESSION_CHECK_ON_HTTP" , "true" )
82+ sent_messages = []
8283 monkeypatch .setattr (
8384 main ,
8485 "run_session_check" ,
8586 lambda : {"ok" : True , "session_reused" : True , "snapshot_persisted" : True },
8687 )
88+ monkeypatch .setattr (main , "build_sender" , lambda * _args , ** _kwargs : sent_messages .append )
8789 client = main .app .test_client ()
8890
8991 response = client .post ("/session-check" )
@@ -94,6 +96,40 @@ def test_session_check_endpoint_calls_service_when_gate_enabled(monkeypatch):
9496 "session_reused" : True ,
9597 "snapshot_persisted" : True ,
9698 }
99+ assert sent_messages == []
100+
101+
102+ def test_session_check_endpoint_notifies_only_on_error (monkeypatch ):
103+ monkeypatch .setenv ("FIRSTRADE_RUN_SESSION_CHECK_ON_HTTP" , "true" )
104+ monkeypatch .setenv ("TELEGRAM_TOKEN" , "token-1" )
105+ monkeypatch .setenv ("GLOBAL_TELEGRAM_CHAT_ID" , "chat-1" )
106+ monkeypatch .setattr (
107+ main ,
108+ "run_session_check" ,
109+ lambda : (_ for _ in ()).throw (RuntimeError ("session denied" )),
110+ )
111+ sent_messages = []
112+
113+ def fake_build_sender (token , chat_id ):
114+ def send (message ):
115+ sent_messages .append ((token , chat_id , message ))
116+
117+ return send
118+
119+ monkeypatch .setattr (main , "build_sender" , fake_build_sender )
120+ client = main .app .test_client ()
121+
122+ response = client .post ("/session-check" )
123+
124+ assert response .status_code == 500
125+ payload = response .get_json ()
126+ assert payload ["ok" ] is False
127+ assert payload ["runtime_error_notification_attempted" ] is True
128+ assert len (sent_messages ) == 1
129+ assert sent_messages [0 ][0 ] == "token-1"
130+ assert sent_messages [0 ][1 ] == "chat-1"
131+ assert "Firstrade health check failed" in sent_messages [0 ][2 ]
132+ assert "RuntimeError: session denied" in sent_messages [0 ][2 ]
97133
98134
99135def test_root_post_calls_strategy_cycle_when_gate_enabled (monkeypatch ):
0 commit comments