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 <jroot.junior@gmail.com>
This commit is contained in:
Martin Winks 2021-01-25 04:00:06 +05:00 committed by GitHub
parent 85265a34cd
commit 566b7ff282
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 3 deletions

View file

@ -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:

View file

@ -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"},