From 566b7ff282c88a3907ba117c81760f4461fe9f57 Mon Sep 17 00:00:00 2001 From: Martin Winks Date: Mon, 25 Jan 2021 04:00:06 +0500 Subject: [PATCH] fix(aiohttp-session): respect UNSET sentinel (#387) * fix(aiohttp-session): respect UNSET sentinel check if value is `UNSET` while building http request. * Cover UNSET by tests Co-authored-by: Alex Root Junior --- aiogram/api/client/session/aiohttp.py | 4 ++-- .../test_api/test_client/test_session/test_aiohttp_session.py | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/aiogram/api/client/session/aiohttp.py b/aiogram/api/client/session/aiohttp.py index 1fda8bbf..adb8a987 100644 --- a/aiogram/api/client/session/aiohttp.py +++ b/aiogram/api/client/session/aiohttp.py @@ -19,7 +19,7 @@ from aiohttp import BasicAuth, ClientSession, FormData, TCPConnector from aiogram.api.methods import Request, TelegramMethod -from .base import BaseSession +from .base import BaseSession, UNSET if TYPE_CHECKING: # pragma: no cover from ..bot import Bot @@ -121,7 +121,7 @@ class AiohttpSession(BaseSession): def build_form_data(self, request: Request) -> FormData: form = FormData(quote_fields=False) for key, value in request.data.items(): - if value is None: + if value is None or value is UNSET: continue form.add_field(key, self.prepare_value(value)) if request.files: diff --git a/tests/test_api/test_client/test_session/test_aiohttp_session.py b/tests/test_api/test_client/test_session/test_aiohttp_session.py index bb89e888..4e982c1b 100644 --- a/tests/test_api/test_client/test_session/test_aiohttp_session.py +++ b/tests/test_api/test_client/test_session/test_aiohttp_session.py @@ -8,7 +8,7 @@ from aresponses import ResponsesMockServer from aiogram import Bot from aiogram.api.client.session.aiohttp import AiohttpSession from aiogram.api.methods import Request, TelegramMethod -from aiogram.api.types import InputFile +from aiogram.api.types import InputFile, UNSET from tests.mocked_bot import MockedBot try: @@ -117,6 +117,7 @@ class TestAiohttpSession: "str": "value", "int": 42, "bool": True, + "unset": UNSET, "null": None, "list": ["foo"], "dict": {"bar": "baz"},