mirror of
https://github.com/python-kasa/python-kasa.git
synced 2026-11-06 11:57:26 +00:00
Use clearer error message for unsupported encryption types (#1831)
Some checks failed
CI / Perform Lint Checks (3.15) (push) Has been cancelled
CI / Python 3.11 on macos-latest (push) Has been cancelled
CI / Python 3.12 on macos-latest (push) Has been cancelled
CI / Python 3.13 on macos-latest (push) Has been cancelled
CI / Python 3.14 on macos-latest (push) Has been cancelled
CI / Python 3.15 on macos-latest (push) Has been cancelled
CI / Python 3.11 on ubuntu-latest (push) Has been cancelled
CI / Python 3.12 on ubuntu-latest (push) Has been cancelled
CI / Python 3.13 on ubuntu-latest (push) Has been cancelled
CI / Python 3.14 on ubuntu-latest (push) Has been cancelled
CI / Python 3.15 on ubuntu-latest (push) Has been cancelled
CI / Python 3.11 on windows-latest (push) Has been cancelled
CI / Python 3.12 on windows-latest (push) Has been cancelled
CI / Python 3.13 on windows-latest (push) Has been cancelled
CI / Python 3.14 on windows-latest (push) Has been cancelled
CI / Python 3.15 on windows-latest (push) Has been cancelled
CodeQL Checks / Analyze (python) (push) Has been cancelled
Stale / stale (push) Has been cancelled
Some checks failed
CI / Perform Lint Checks (3.15) (push) Has been cancelled
CI / Python 3.11 on macos-latest (push) Has been cancelled
CI / Python 3.12 on macos-latest (push) Has been cancelled
CI / Python 3.13 on macos-latest (push) Has been cancelled
CI / Python 3.14 on macos-latest (push) Has been cancelled
CI / Python 3.15 on macos-latest (push) Has been cancelled
CI / Python 3.11 on ubuntu-latest (push) Has been cancelled
CI / Python 3.12 on ubuntu-latest (push) Has been cancelled
CI / Python 3.13 on ubuntu-latest (push) Has been cancelled
CI / Python 3.14 on ubuntu-latest (push) Has been cancelled
CI / Python 3.15 on ubuntu-latest (push) Has been cancelled
CI / Python 3.11 on windows-latest (push) Has been cancelled
CI / Python 3.12 on windows-latest (push) Has been cancelled
CI / Python 3.13 on windows-latest (push) Has been cancelled
CI / Python 3.14 on windows-latest (push) Has been cancelled
CI / Python 3.15 on windows-latest (push) Has been cancelled
CodeQL Checks / Analyze (python) (push) Has been cancelled
Stale / stale (push) Has been cancelled
Devices that announce an encryption type the library does not know, such as `TPAP` used by newer Tapo devices (e.g. RV20 Max Plus), previously failed with a generic message that dumped the whole encryption scheme: ``` Unsupported device 192.168.xx.xx of type SMART.TAPOROBOVAC with encrypt_scheme EncryptionScheme(is_support_https=True, encrypt_type='TPAP', http_port=4433, lv=2) ``` This can be rather confusing to interpret, as it does not tell what is not supported (e.g., the device type is definitely supported on non-tpap transports). This PR adds a separate check and error message for cases where the encryption type is not supported, giving this error: ``` Device 192.168.xx.xx (SMART.TAPOROBOVAC) uses unsupported encryption type TPAP ```
This commit is contained in:
@@ -798,3 +798,30 @@ async def test_connection_parameters_from_encrypt_type_list_only():
|
||||
result["encrypt_type"] = ["9"]
|
||||
with pytest.raises(UnsupportedDeviceError, match="no encryption type"):
|
||||
Discover._get_connection_parameters(DiscoveryResult.from_dict(result))
|
||||
|
||||
|
||||
async def test_connection_parameters_unsupported_encrypt_type():
|
||||
"""An unknown encrypt_type is named in the error."""
|
||||
result = {
|
||||
"device_type": "SMART.TAPOROBOVAC",
|
||||
"device_model": "RV20 Max Plus(EU)",
|
||||
"device_id": "0000000000000000000000000000000000000000",
|
||||
"ip": "127.0.0.123",
|
||||
"mac": "B0-19-21-00-00-00",
|
||||
"mgt_encrypt_schm": {
|
||||
"is_support_https": True,
|
||||
"http_port": 4433,
|
||||
"encrypt_type": "TPAP",
|
||||
"lv": 2,
|
||||
},
|
||||
}
|
||||
with pytest.raises(
|
||||
UnsupportedDeviceError,
|
||||
match=(
|
||||
r"^Device 127\.0\.0\.123 \(SMART\.TAPOROBOVAC\) uses unsupported "
|
||||
r"encryption type TPAP$"
|
||||
),
|
||||
) as exc_info:
|
||||
Discover._get_connection_parameters(DiscoveryResult.from_dict(result))
|
||||
assert exc_info.value.host == "127.0.0.123"
|
||||
assert exc_info.value.discovery_result
|
||||
|
||||
Reference in New Issue
Block a user