From b1de709226550562da8f714043238619e1aa2621 Mon Sep 17 00:00:00 2001 From: Andrey Date: Tue, 9 Sep 2025 01:01:20 +0300 Subject: [PATCH] Implement user validation and creation in handle_deep_link function. Add logging for user creation and error handling for invalid Telegram IDs. Update unit tests to include user creation verification. --- handlers/start.py | 15 +++++++++++++++ tests/unit/handlers/test_start.py | 6 ++++++ 2 files changed, 21 insertions(+) diff --git a/handlers/start.py b/handlers/start.py index 8d9f6a3..a651932 100644 --- a/handlers/start.py +++ b/handlers/start.py @@ -136,6 +136,21 @@ async def handle_deep_link( ): """Обработка deep linking для анонимных вопросов""" try: + # Валидируем Telegram ID пользователя + user_id_validation = validator.validate_telegram_id(message.from_user.id) + if not user_id_validation: + logger.error(f"❌ Невалидный Telegram ID: {message.from_user.id}") + await message_service.send_message( + message, + "❌ Ошибка: недопустимый ID пользователя.", + get_main_keyboard_for_user(message.from_user.id) + ) + return + + # Создаем или обновляем пользователя (важно для любого /start) + current_user = await user_service.create_or_update_user(message.from_user, message.chat.id) + logger.info(f"✅ Пользователь создан/обновлен при deep link: {current_user.telegram_id}") + # Валидируем deep link validation_result = validator.validate_deep_link(ref_code) if not validation_result: diff --git a/tests/unit/handlers/test_start.py b/tests/unit/handlers/test_start.py index 97dbed3..d562841 100644 --- a/tests/unit/handlers/test_start.py +++ b/tests/unit/handlers/test_start.py @@ -53,6 +53,12 @@ class TestStartHandlers: # TODO: Реализовать тест pass + def test_handle_deep_link_creates_user(self): + """Тест что handle_deep_link создает пользователя""" + # TODO: Реализовать тест - проверить что при обработке deep link + # вызывается user_service.create_or_update_user + pass + def test_handle_deep_link_invalid(self): """Тест обработки невалидного deep link""" # TODO: Реализовать тест