mirror of
https://github.com/python-kasa/python-kasa.git
synced 2025-08-09 20:24:02 +00:00
Make discovery on unsupported devices less noisy (#1291)
This commit is contained in:
@@ -3,6 +3,7 @@ from __future__ import annotations
|
||||
import copy
|
||||
from dataclasses import dataclass
|
||||
from json import dumps as json_dumps
|
||||
from typing import Any, TypedDict
|
||||
|
||||
import pytest
|
||||
|
||||
@@ -16,10 +17,21 @@ from .fixtureinfo import FixtureInfo, filter_fixtures, idgenerator
|
||||
DISCOVERY_MOCK_IP = "127.0.0.123"
|
||||
|
||||
|
||||
def _make_unsupported(device_family, encrypt_type, *, omit_keys=None):
|
||||
class DiscoveryResponse(TypedDict):
|
||||
result: dict[str, Any]
|
||||
error_code: int
|
||||
|
||||
|
||||
def _make_unsupported(
|
||||
device_family,
|
||||
encrypt_type,
|
||||
*,
|
||||
https: bool = False,
|
||||
omit_keys: dict[str, Any] | None = None,
|
||||
) -> DiscoveryResponse:
|
||||
if omit_keys is None:
|
||||
omit_keys = {"encrypt_info": None}
|
||||
result = {
|
||||
result: DiscoveryResponse = {
|
||||
"result": {
|
||||
"device_id": "xx",
|
||||
"owner": "xx",
|
||||
@@ -31,7 +43,7 @@ def _make_unsupported(device_family, encrypt_type, *, omit_keys=None):
|
||||
"obd_src": "tplink",
|
||||
"factory_default": False,
|
||||
"mgt_encrypt_schm": {
|
||||
"is_support_https": False,
|
||||
"is_support_https": https,
|
||||
"encrypt_type": encrypt_type,
|
||||
"http_port": 80,
|
||||
"lv": 2,
|
||||
@@ -51,6 +63,7 @@ def _make_unsupported(device_family, encrypt_type, *, omit_keys=None):
|
||||
|
||||
UNSUPPORTED_DEVICES = {
|
||||
"unknown_device_family": _make_unsupported("SMART.TAPOXMASTREE", "AES"),
|
||||
"unknown_iot_device_family": _make_unsupported("IOT.IOTXMASTREE", "AES"),
|
||||
"wrong_encryption_iot": _make_unsupported("IOT.SMARTPLUGSWITCH", "AES"),
|
||||
"wrong_encryption_smart": _make_unsupported("SMART.TAPOBULB", "IOT"),
|
||||
"unknown_encryption": _make_unsupported("IOT.SMARTPLUGSWITCH", "FOO"),
|
||||
@@ -64,6 +77,11 @@ UNSUPPORTED_DEVICES = {
|
||||
"FOO",
|
||||
omit_keys={"mgt_encrypt_schm": None},
|
||||
),
|
||||
"invalidinstance": _make_unsupported(
|
||||
"IOT.SMARTPLUGSWITCH",
|
||||
"KLAP",
|
||||
https=True,
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
|
@@ -195,6 +195,6 @@ async def test_device_types(dev: Device):
|
||||
async def test_device_class_from_unknown_family(caplog):
|
||||
"""Verify that unknown SMART devices yield a warning and fallback to SmartDevice."""
|
||||
dummy_name = "SMART.foo"
|
||||
with caplog.at_level(logging.WARNING):
|
||||
with caplog.at_level(logging.DEBUG):
|
||||
assert get_device_class_from_family(dummy_name, https=False) == SmartDevice
|
||||
assert f"Unknown SMART device with {dummy_name}" in caplog.text
|
||||
|
Reference in New Issue
Block a user