From dab4e26f1c22962870f6906df256d9bc352c789e Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 14 May 2022 17:15:31 +0300 Subject: [PATCH] #901 Fixed false-positive coercing of Union types in API methods --- CHANGES/901.bugfix.rst | 1 + aiogram/methods/base.py | 1 + tests/test_api/test_methods/test_send_message.py | 7 ++++++- 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 CHANGES/901.bugfix.rst diff --git a/CHANGES/901.bugfix.rst b/CHANGES/901.bugfix.rst new file mode 100644 index 00000000..e920c152 --- /dev/null +++ b/CHANGES/901.bugfix.rst @@ -0,0 +1 @@ +Fixed false-positive coercing of Union types in API methods diff --git a/aiogram/methods/base.py b/aiogram/methods/base.py index 4d787a7b..2a42bd09 100644 --- a/aiogram/methods/base.py +++ b/aiogram/methods/base.py @@ -46,6 +46,7 @@ class TelegramMethod(abc.ABC, BaseModel, Generic[TelegramType]): allow_population_by_field_name = True arbitrary_types_allowed = True orm_mode = True + smart_union = True # https://github.com/aiogram/aiogram/issues/901 @root_validator(pre=True) def remove_unset(cls, values: Dict[str, Any]) -> Dict[str, Any]: diff --git a/tests/test_api/test_methods/test_send_message.py b/tests/test_api/test_methods/test_send_message.py index c2da672e..35324f34 100644 --- a/tests/test_api/test_methods/test_send_message.py +++ b/tests/test_api/test_methods/test_send_message.py @@ -3,7 +3,7 @@ import datetime import pytest from aiogram.methods import Request, SendMessage -from aiogram.types import Chat, Message +from aiogram.types import Chat, ForceReply, Message from tests.mocked_bot import MockedBot pytestmark = pytest.mark.asyncio @@ -43,3 +43,8 @@ class TestSendMessage: request: Request = bot.get_request() assert request.method == "sendMessage" assert response == prepare_result.result + + async def test_force_reply(self): + # https://github.com/aiogram/aiogram/issues/901 + method = SendMessage(text="test", chat_id=42, reply_markup=ForceReply()) + assert isinstance(method.reply_markup, ForceReply)