2525from collections .abc import Coroutine
2626from http import HTTPStatus
2727from typing import Any , Callable , Optional
28+ from unittest .mock import MagicMock
2829
2930import aiohttp
3031import multidict
3132import pytest
3233import yarl
33- from telegram import InputFile
34- from telegram ._utils .defaultvalue import DEFAULT_NONE
35- from telegram ._utils .strings import TextEncoding
36- from telegram ._utils .types import ODVInput
3734from telegram .error import (
3835 BadRequest ,
3936 ChatMigrated ,
4542 TelegramError ,
4643 TimedOut ,
4744)
48- from telegram .request import RequestData
49- from telegram .request ._requestparameter import RequestParameter
45+ from telegram .request import BaseRequest , RequestData
5046
5147from ptbcontrib .aiohttp_request import AiohttpRequest
5248
@@ -70,10 +66,10 @@ async def _request_wrapper(
7066 method : str ,
7167 url : str ,
7268 request_data : Optional [RequestData ] = None ,
73- read_timeout : ODVInput [float ] = DEFAULT_NONE ,
74- connect_timeout : ODVInput [float ] = DEFAULT_NONE ,
75- write_timeout : ODVInput [float ] = DEFAULT_NONE ,
76- pool_timeout : ODVInput [float ] = DEFAULT_NONE ,
69+ read_timeout : Optional [float ] = BaseRequest . DEFAULT_NONE ,
70+ connect_timeout : Optional [float ] = BaseRequest . DEFAULT_NONE ,
71+ write_timeout : Optional [float ] = BaseRequest . DEFAULT_NONE ,
72+ pool_timeout : Optional [float ] = BaseRequest . DEFAULT_NONE ,
7773 ) -> bytes :
7874 try :
7975 return await super ()._request_wrapper (
@@ -203,10 +199,15 @@ async def test_illegal_json_response(
203199
204200 await aiohttp_request .shutdown ()
205201
206- assert len (caplog .records ) == 1
207- record = caplog .records [0 ]
208- assert record .name == "telegram.request.BaseRequest"
209- assert record .getMessage ().endswith (f'invalid JSON data: "{ server_response .decode ()} "' )
202+ assert len (caplog .records ) >= 1
203+ found = False
204+ for record in caplog .records :
205+ if record .name == "telegram.request.BaseRequest" :
206+ assert record .getMessage ().endswith (
207+ f'invalid JSON data: "{ server_response .decode ()} "'
208+ )
209+ found = True
210+ assert found , "Expected log message not found"
210211
211212 async def test_chat_migrated (self , monkeypatch , aiohttp_request : AiohttpRequest ):
212213 server_response = b'{"ok": "False", "parameters": {"migrate_to_chat_id": 123}}'
@@ -222,17 +223,19 @@ async def test_chat_migrated(self, monkeypatch, aiohttp_request: AiohttpRequest)
222223
223224 assert exc_info .value .new_chat_id == 123
224225
225- async def test_retry_after (self , monkeypatch , aiohttp_request : AiohttpRequest ):
226+ async def test_retry_after (self , monkeypatch ):
226227 server_response = b'{"ok": "False", "parameters": {"retry_after": 42}}'
228+ aiohttp_request = AiohttpRequest ()
227229
228230 monkeypatch .setattr (
229231 aiohttp_request ,
230232 "do_request" ,
231233 mocker_factory (response = server_response , return_code = HTTPStatus .BAD_REQUEST ),
232234 )
233235
234- with pytest .raises (RetryAfter , match = "Retry in 42" ) as exc_info :
235- await aiohttp_request .post (None , None , None )
236+ async with aiohttp_request :
237+ with pytest .raises (RetryAfter , match = "Retry in 42" ) as exc_info :
238+ await aiohttp_request .post (None , None , None )
236239
237240 assert exc_info .value .retry_after == 42
238241
@@ -262,7 +265,7 @@ async def test_error_description(
262265 else :
263266 match = "Unknown HTTPError"
264267
265- server_response = json .dumps (response_data ).encode (TextEncoding . UTF_8 )
268+ server_response = json .dumps (response_data ).encode ("utf-8" )
266269
267270 monkeypatch .setattr (
268271 aiohttp_request ,
@@ -364,7 +367,12 @@ async def make_assertion(*args, **kwargs):
364367 monkeypatch .setattr (aiohttp_request , "do_request" , make_assertion )
365368
366369 await aiohttp_request .post ("url" , None )
367- assert self .test_flag == (DEFAULT_NONE , DEFAULT_NONE , DEFAULT_NONE , DEFAULT_NONE )
370+ assert self .test_flag == (
371+ BaseRequest .DEFAULT_NONE ,
372+ BaseRequest .DEFAULT_NONE ,
373+ BaseRequest .DEFAULT_NONE ,
374+ BaseRequest .DEFAULT_NONE ,
375+ )
368376
369377 await aiohttp_request .post (
370378 "url" , None , read_timeout = 1 , connect_timeout = 2 , write_timeout = 3 , pool_timeout = 4
@@ -527,12 +535,10 @@ async def make_assertion(self, **kwargs):
527535 assert code == HTTPStatus .OK
528536
529537 async def test_do_request_params_with_data (self , monkeypatch , aiohttp_request ):
530- mixed_rqs = RequestData (
531- [
532- RequestParameter ("name" , "value" , [InputFile (obj = "data" , attach = True )]),
533- RequestParameter ("second_name" , "second_value" , []),
534- ]
535- )
538+ mixed_rqs = MagicMock ()
539+ mixed_rqs .contains_files = True
540+ mixed_rqs .json_parameters = {"name" : "value" , "second_name" : "second_value" }
541+ mixed_rqs .multipart_data = {"attachment" : ("data" , b"content" , "application/octet-stream" )}
536542
537543 async def make_assertion (self , ** kwargs ):
538544 method_assertion = kwargs .get ("method" ) == "method"
0 commit comments