Some IoT devices respond over KLAP with a plain `200 OK` html page
instead of a proper response when the response would be too large to
construct, causing a "not a multiple of the block length" decryption
error (e.g., KS200M in #1828).
This PR lowers the maximum response size to 2048 bytes for IoT devices
using KLAP, so that the update is split into multiple smaller requests
like it is already done for bulbs.
In details:
- `IotDevice.max_device_response_size` returns 2048 over KLAP. Bulbs
keep 4096 and XOR devices keep 16 KiB.
- `KlapTransport` checks the response length and signature before
decrypting, and raises a `KasaException` telling what was wrong
instead of the decryption error.
Fixes#1828
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
type annotations and parameter type annotations to
all test functions and helper functions across the 5 transport test
files. This enables mypy to check function bodies, catching type errors
that were previously hidden.
* Transport tests under tests/transports/
* Protocol tests under tests/protocols/
* IOT tests under iot/
* Plus some minor cleanups, most code changes are related to splitting
up smart & iot tests