feat: skip action logs for dropped Telegram updates

This commit is contained in:
3252a8
2026-06-05 11:24:03 +03:00
parent 2e4599d068
commit fd1edf38b5
4 changed files with 56 additions and 4 deletions
+41
View File
@@ -0,0 +1,41 @@
import unittest
from types import SimpleNamespace
from unittest.mock import AsyncMock, patch
from bot.middlewares.action_logger_middleware import ActionLoggerMiddleware
class ActionLoggerMiddlewareTests(unittest.IsolatedAsyncioTestCase):
async def test_skip_action_log_flag_suppresses_database_logging(self):
middleware = ActionLoggerMiddleware(
SimpleNamespace(ADMIN_IDS=[], LOG_ADMIN_ACTIONS=True)
)
event = SimpleNamespace(event_type="message")
data = {
"session": object(),
"event_from_user": SimpleNamespace(id=42, username="user", first_name="User"),
}
async def handler(_event, handler_data):
handler_data["skip_action_log"] = True
return "ok"
with (
patch(
"bot.middlewares.action_logger_middleware.user_dal.get_user_by_id",
AsyncMock(),
) as get_user,
patch(
"bot.middlewares.action_logger_middleware.message_log_dal.create_message_log_no_commit",
AsyncMock(),
) as create_log,
):
result = await middleware(handler, event, data)
self.assertEqual(result, "ok")
get_user.assert_not_awaited()
create_log.assert_not_awaited()
if __name__ == "__main__":
unittest.main()
+4 -1
View File
@@ -75,9 +75,12 @@ class UpdateAntiFloodMiddlewareTests(unittest.IsolatedAsyncioTestCase):
with patch("bot.middlewares.update_antiflood.get_redis", AsyncMock(return_value=None)):
self.assertEqual(await middleware(handler, event, {}), "ok")
self.assertEqual(await middleware(handler, event, {}), "ok")
self.assertIsNone(await middleware(handler, event, {}))
dropped_data = {}
self.assertIsNone(await middleware(handler, event, dropped_data))
self.assertEqual(handler.await_count, 2)
self.assertTrue(dropped_data["antiflood_dropped"])
self.assertTrue(dropped_data["skip_action_log"])
async def test_antiflood_can_be_disabled(self):
middleware = UpdateAntiFloodMiddleware(