Merge pull request #318 from aiogram/dev-3.x-refactor-sessions

Dev 3.x refactor sessions
This commit is contained in:
Alex Root Junior 2020-05-09 23:49:54 +03:00 committed by GitHub
commit 05dd42712d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 151 additions and 44 deletions

View file

@ -83,6 +83,22 @@ class TestAiohttpSession:
aiohttp_session = await session.create_session()
assert isinstance(aiohttp_session.connector, aiohttp_socks.ChainProxyConnector)
@pytest.mark.asyncio
async def test_reset_connector(self):
session = AiohttpSession()
assert session._should_reset_connector
await session.create_session()
assert session._should_reset_connector is False
await session.close()
assert session._should_reset_connector is False
assert session.proxy is None
session.proxy = "socks5://auth:auth@proxy.url/"
assert session._should_reset_connector
await session.create_session()
assert session._should_reset_connector is False
await session.close()
@pytest.mark.asyncio
async def test_close_session(self):
session = AiohttpSession()

View file

@ -1,4 +1,5 @@
import datetime
import json
from typing import AsyncContextManager, AsyncGenerator
import pytest
@ -35,13 +36,56 @@ class TestBaseSession:
session = CustomSession()
assert session.api == PRODUCTION
def test_default_props(self):
session = CustomSession()
assert session.api == PRODUCTION
assert session.json_loads == json.loads
assert session.json_dumps == json.dumps
def custom_loads(*_):
return json.loads
def custom_dumps(*_):
return json.dumps
session.json_dumps = custom_dumps
assert session.json_dumps == custom_dumps == session._json_dumps
session.json_loads = custom_loads
assert session.json_loads == custom_loads == session._json_loads
different_session = CustomSession()
assert all(
not hasattr(different_session, attr) for attr in ("_json_loads", "_json_dumps", "_api")
)
def test_timeout(self):
session = CustomSession()
assert session.timeout == session.default_timeout == CustomSession.default_timeout
session.default_timeout = float(65.0_0) # mypy will complain
assert session.timeout != session.default_timeout
CustomSession.default_timeout = float(68.0_0)
assert session.timeout == CustomSession.default_timeout
session.timeout = float(71.0_0)
assert session.timeout != session.default_timeout
del session.timeout
CustomSession.default_timeout = session.default_timeout + 100
assert (
session.timeout != BaseSession.default_timeout
and session.timeout == CustomSession.default_timeout
)
def test_init_custom_api(self):
api = TelegramAPIServer(
base="http://example.com/{token}/{method}",
file="http://example.com/{token}/file/{path{",
file="http://example.com/{token}/file/{path}",
)
session = CustomSession(api=api)
session = CustomSession()
session.api = api
assert session.api == api
assert "example.com" in session.api.base
def test_prepare_value(self):
session = CustomSession()