mirror of
https://github.com/esphome/aioesphomeapi.git
synced 2024-09-30 04:47:30 +02:00
cleanup more tests
This commit is contained in:
parent
3da6e9dcee
commit
8743b7e49c
@ -114,6 +114,13 @@ def conn_with_expected_name(connection_params: ConnectionParams) -> APIConnectio
|
|||||||
return PatchableAPIConnection(connection_params, mock_on_stop, True, None)
|
return PatchableAPIConnection(connection_params, mock_on_stop, True, None)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture()
|
||||||
|
def aiohappyeyeballs_start_connection():
|
||||||
|
with patch("aioesphomeapi.connection.aiohappyeyeballs.start_connection") as func:
|
||||||
|
func.return_value = MagicMock(type=socket.SOCK_STREAM)
|
||||||
|
yield func
|
||||||
|
|
||||||
|
|
||||||
def _create_mock_transport_protocol(
|
def _create_mock_transport_protocol(
|
||||||
transport: asyncio.Transport,
|
transport: asyncio.Transport,
|
||||||
connected: asyncio.Event,
|
connected: asyncio.Event,
|
||||||
@ -128,15 +135,17 @@ def _create_mock_transport_protocol(
|
|||||||
|
|
||||||
@pytest_asyncio.fixture(name="plaintext_connect_task_no_login")
|
@pytest_asyncio.fixture(name="plaintext_connect_task_no_login")
|
||||||
async def plaintext_connect_task_no_login(
|
async def plaintext_connect_task_no_login(
|
||||||
conn: APIConnection, resolve_host, socket_socket, event_loop
|
conn: APIConnection,
|
||||||
|
resolve_host,
|
||||||
|
socket_socket,
|
||||||
|
event_loop,
|
||||||
|
aiohappyeyeballs_start_connection,
|
||||||
) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:
|
) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
transport = MagicMock()
|
transport = MagicMock()
|
||||||
connected = asyncio.Event()
|
connected = asyncio.Event()
|
||||||
|
|
||||||
with patch(
|
with patch.object(
|
||||||
"aioesphomeapi.connection.aiohappyeyeballs.start_connection"
|
|
||||||
), patch.object(
|
|
||||||
loop,
|
loop,
|
||||||
"create_connection",
|
"create_connection",
|
||||||
side_effect=partial(_create_mock_transport_protocol, transport, connected),
|
side_effect=partial(_create_mock_transport_protocol, transport, connected),
|
||||||
@ -148,14 +157,16 @@ async def plaintext_connect_task_no_login(
|
|||||||
|
|
||||||
@pytest_asyncio.fixture(name="plaintext_connect_task_expected_name")
|
@pytest_asyncio.fixture(name="plaintext_connect_task_expected_name")
|
||||||
async def plaintext_connect_task_no_login_with_expected_name(
|
async def plaintext_connect_task_no_login_with_expected_name(
|
||||||
conn_with_expected_name: APIConnection, resolve_host, socket_socket, event_loop
|
conn_with_expected_name: APIConnection,
|
||||||
|
resolve_host,
|
||||||
|
socket_socket,
|
||||||
|
event_loop,
|
||||||
|
aiohappyeyeballs_start_connection,
|
||||||
) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:
|
) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:
|
||||||
transport = MagicMock()
|
transport = MagicMock()
|
||||||
connected = asyncio.Event()
|
connected = asyncio.Event()
|
||||||
|
|
||||||
with patch(
|
with patch.object(
|
||||||
"aioesphomeapi.connection.aiohappyeyeballs.start_connection"
|
|
||||||
), patch.object(
|
|
||||||
event_loop,
|
event_loop,
|
||||||
"create_connection",
|
"create_connection",
|
||||||
side_effect=partial(_create_mock_transport_protocol, transport, connected),
|
side_effect=partial(_create_mock_transport_protocol, transport, connected),
|
||||||
@ -169,14 +180,16 @@ async def plaintext_connect_task_no_login_with_expected_name(
|
|||||||
|
|
||||||
@pytest_asyncio.fixture(name="plaintext_connect_task_with_login")
|
@pytest_asyncio.fixture(name="plaintext_connect_task_with_login")
|
||||||
async def plaintext_connect_task_with_login(
|
async def plaintext_connect_task_with_login(
|
||||||
conn_with_password: APIConnection, resolve_host, socket_socket, event_loop
|
conn_with_password: APIConnection,
|
||||||
|
resolve_host,
|
||||||
|
socket_socket,
|
||||||
|
event_loop,
|
||||||
|
aiohappyeyeballs_start_connection,
|
||||||
) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:
|
) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:
|
||||||
transport = MagicMock()
|
transport = MagicMock()
|
||||||
connected = asyncio.Event()
|
connected = asyncio.Event()
|
||||||
|
|
||||||
with patch(
|
with patch.object(
|
||||||
"aioesphomeapi.connection.aiohappyeyeballs.start_connection"
|
|
||||||
), patch.object(
|
|
||||||
event_loop,
|
event_loop,
|
||||||
"create_connection",
|
"create_connection",
|
||||||
side_effect=partial(_create_mock_transport_protocol, transport, connected),
|
side_effect=partial(_create_mock_transport_protocol, transport, connected),
|
||||||
@ -188,7 +201,7 @@ async def plaintext_connect_task_with_login(
|
|||||||
|
|
||||||
@pytest_asyncio.fixture(name="api_client")
|
@pytest_asyncio.fixture(name="api_client")
|
||||||
async def api_client(
|
async def api_client(
|
||||||
resolve_host, socket_socket, event_loop
|
resolve_host, socket_socket, event_loop, aiohappyeyeballs_start_connection
|
||||||
) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:
|
) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:
|
||||||
protocol: APIPlaintextFrameHelper | None = None
|
protocol: APIPlaintextFrameHelper | None = None
|
||||||
transport = MagicMock()
|
transport = MagicMock()
|
||||||
@ -199,15 +212,11 @@ async def api_client(
|
|||||||
password=None,
|
password=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
with patch(
|
with patch.object(
|
||||||
"aioesphomeapi.connection.aiohappyeyeballs.start_connection"
|
|
||||||
), patch.object(
|
|
||||||
event_loop,
|
event_loop,
|
||||||
"create_connection",
|
"create_connection",
|
||||||
side_effect=partial(_create_mock_transport_protocol, transport, connected),
|
side_effect=partial(_create_mock_transport_protocol, transport, connected),
|
||||||
), patch(
|
), patch("aioesphomeapi.client.APIConnection", PatchableAPIConnection):
|
||||||
"aioesphomeapi.client.APIConnection", PatchableAPIConnection
|
|
||||||
):
|
|
||||||
connect_task = asyncio.create_task(connect_client(client, login=False))
|
connect_task = asyncio.create_task(connect_client(client, login=False))
|
||||||
await connected.wait()
|
await connected.wait()
|
||||||
conn = client._connection
|
conn = client._connection
|
||||||
|
@ -194,14 +194,14 @@ async def test_connect_backwards_compat() -> None:
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_finish_connection_wraps_exceptions_as_unhandled_api_error() -> None:
|
async def test_finish_connection_wraps_exceptions_as_unhandled_api_error(
|
||||||
|
aiohappyeyeballs_start_connection,
|
||||||
|
) -> None:
|
||||||
"""Verify finish_connect re-wraps exceptions as UnhandledAPIError."""
|
"""Verify finish_connect re-wraps exceptions as UnhandledAPIError."""
|
||||||
|
|
||||||
cli = APIClient("1.2.3.4", 1234, None)
|
cli = APIClient("1.2.3.4", 1234, None)
|
||||||
asyncio.get_event_loop()
|
asyncio.get_event_loop()
|
||||||
with patch("aioesphomeapi.client.APIConnection", PatchableAPIConnection), patch(
|
with patch("aioesphomeapi.client.APIConnection", PatchableAPIConnection):
|
||||||
"aioesphomeapi.connection.aiohappyeyeballs.start_connection"
|
|
||||||
):
|
|
||||||
await cli.start_connection()
|
await cli.start_connection()
|
||||||
|
|
||||||
with patch.object(
|
with patch.object(
|
||||||
|
@ -558,7 +558,7 @@ async def test_force_disconnect_fails(
|
|||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_connect_resolver_times_out(
|
async def test_connect_resolver_times_out(
|
||||||
conn: APIConnection, socket_socket, event_loop
|
conn: APIConnection, socket_socket, event_loop, aiohappyeyeballs_start_connection
|
||||||
) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:
|
) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:
|
||||||
transport = MagicMock()
|
transport = MagicMock()
|
||||||
connected = asyncio.Event()
|
connected = asyncio.Event()
|
||||||
@ -566,8 +566,6 @@ async def test_connect_resolver_times_out(
|
|||||||
with patch(
|
with patch(
|
||||||
"aioesphomeapi.host_resolver.async_resolve_host",
|
"aioesphomeapi.host_resolver.async_resolve_host",
|
||||||
side_effect=asyncio.TimeoutError,
|
side_effect=asyncio.TimeoutError,
|
||||||
), patch(
|
|
||||||
"aioesphomeapi.connection.aiohappyeyeballs.start_connection"
|
|
||||||
), patch.object(
|
), patch.object(
|
||||||
event_loop,
|
event_loop,
|
||||||
"create_connection",
|
"create_connection",
|
||||||
@ -584,6 +582,7 @@ async def test_disconnect_fails_to_send_response(
|
|||||||
event_loop: asyncio.AbstractEventLoop,
|
event_loop: asyncio.AbstractEventLoop,
|
||||||
resolve_host,
|
resolve_host,
|
||||||
socket_socket,
|
socket_socket,
|
||||||
|
aiohappyeyeballs_start_connection,
|
||||||
) -> None:
|
) -> None:
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
transport = MagicMock()
|
transport = MagicMock()
|
||||||
@ -599,9 +598,7 @@ async def test_disconnect_fails_to_send_response(
|
|||||||
nonlocal expected_disconnect
|
nonlocal expected_disconnect
|
||||||
expected_disconnect = _expected_disconnect
|
expected_disconnect = _expected_disconnect
|
||||||
|
|
||||||
with patch(
|
with patch.object(
|
||||||
"aioesphomeapi.connection.aiohappyeyeballs.start_connection"
|
|
||||||
), patch.object(
|
|
||||||
loop,
|
loop,
|
||||||
"create_connection",
|
"create_connection",
|
||||||
side_effect=partial(_create_mock_transport_protocol, transport, connected),
|
side_effect=partial(_create_mock_transport_protocol, transport, connected),
|
||||||
@ -636,6 +633,7 @@ async def test_disconnect_success_case(
|
|||||||
event_loop: asyncio.AbstractEventLoop,
|
event_loop: asyncio.AbstractEventLoop,
|
||||||
resolve_host,
|
resolve_host,
|
||||||
socket_socket,
|
socket_socket,
|
||||||
|
aiohappyeyeballs_start_connection,
|
||||||
) -> None:
|
) -> None:
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
transport = MagicMock()
|
transport = MagicMock()
|
||||||
@ -651,9 +649,7 @@ async def test_disconnect_success_case(
|
|||||||
nonlocal expected_disconnect
|
nonlocal expected_disconnect
|
||||||
expected_disconnect = _expected_disconnect
|
expected_disconnect = _expected_disconnect
|
||||||
|
|
||||||
with patch(
|
with patch.object(
|
||||||
"aioesphomeapi.connection.aiohappyeyeballs.start_connection"
|
|
||||||
), patch.object(
|
|
||||||
loop,
|
loop,
|
||||||
"create_connection",
|
"create_connection",
|
||||||
side_effect=partial(_create_mock_transport_protocol, transport, connected),
|
side_effect=partial(_create_mock_transport_protocol, transport, connected),
|
||||||
|
Loading…
Reference in New Issue
Block a user