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.
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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: Реализовать тест
|
||||
|
||||
Reference in New Issue
Block a user