mirror of
https://github.com/python-kasa/python-kasa.git
synced 2024-12-26 21:13:34 +00:00
69 lines
1.7 KiB
Python
69 lines
1.7 KiB
Python
|
from __future__ import annotations
|
||
|
|
||
|
import logging
|
||
|
|
||
|
import pytest
|
||
|
from pytest_mock import MockerFixture
|
||
|
|
||
|
from kasa import Feature, Module
|
||
|
from kasa.smart import SmartDevice
|
||
|
from kasa.tests.device_fixtures import parametrize
|
||
|
|
||
|
childsetup = parametrize(
|
||
|
"supports pairing", component_filter="child_quick_setup", protocol_filter={"SMART"}
|
||
|
)
|
||
|
|
||
|
|
||
|
@childsetup
|
||
|
async def test_childsetup_features(dev: SmartDevice):
|
||
|
"""Test the exposed features."""
|
||
|
cs = dev.modules.get(Module.ChildSetup)
|
||
|
assert cs
|
||
|
|
||
|
assert "pair" in cs._module_features
|
||
|
pair = cs._module_features["pair"]
|
||
|
assert pair.type == Feature.Type.Action
|
||
|
|
||
|
|
||
|
@childsetup
|
||
|
async def test_childsetup_pair(
|
||
|
dev: SmartDevice, mocker: MockerFixture, caplog: pytest.LogCaptureFixture
|
||
|
):
|
||
|
"""Test device pairing."""
|
||
|
caplog.set_level(logging.INFO)
|
||
|
mock_query_helper = mocker.spy(dev, "_query_helper")
|
||
|
mocker.patch("asyncio.sleep")
|
||
|
|
||
|
cs = dev.modules.get(Module.ChildSetup)
|
||
|
assert cs
|
||
|
|
||
|
await cs.pair()
|
||
|
|
||
|
mock_query_helper.assert_has_awaits(
|
||
|
[
|
||
|
mocker.call("begin_scanning_child_device", None),
|
||
|
mocker.call("get_scan_child_device_list", params=mocker.ANY),
|
||
|
mocker.call("add_child_device_list", params=mocker.ANY),
|
||
|
]
|
||
|
)
|
||
|
assert "Discovery done" in caplog.text
|
||
|
|
||
|
|
||
|
@childsetup
|
||
|
async def test_childsetup_unpair(
|
||
|
dev: SmartDevice, mocker: MockerFixture, caplog: pytest.LogCaptureFixture
|
||
|
):
|
||
|
"""Test unpair."""
|
||
|
mock_query_helper = mocker.spy(dev, "_query_helper")
|
||
|
DUMMY_ID = "dummy_id"
|
||
|
|
||
|
cs = dev.modules.get(Module.ChildSetup)
|
||
|
assert cs
|
||
|
|
||
|
await cs.unpair(DUMMY_ID)
|
||
|
|
||
|
mock_query_helper.assert_awaited_with(
|
||
|
"remove_child_device_list",
|
||
|
params={"child_device_list": [{"device_id": DUMMY_ID}]},
|
||
|
)
|