Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 64 additions & 0 deletions miio/tests/test_deviceinfo.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import pytest

from miio.deviceinfo import DeviceInfo


@pytest.fixture()
def info():
"""Example response from Xiaomi Smart WiFi Plug (c&p from deviceinfo ctor)."""
return DeviceInfo(
{
"ap": {"bssid": "FF:FF:FF:FF:FF:FF", "rssi": -68, "ssid": "network"},
"cfg_time": 0,
"fw_ver": "1.2.4_16",
"hw_ver": "MW300",
"life": 24,
"mac": "28:FF:FF:FF:FF:FF",
"mmfree": 30312,
"model": "chuangmi.plug.m1",
"netif": {
"gw": "192.168.xxx.x",
"localIp": "192.168.xxx.x",
"mask": "255.255.255.0",
},
"ot": "otu",
"ott_stat": [0, 0, 0, 0],
"otu_stat": [320, 267, 3, 0, 3, 742],
"token": "2b00042f7481c7b056c4b410d28f33cf",
"wifi_fw_ver": "SD878x-14.76.36.p84-702.1.0-WM",
}
)


def test_properties(info):
"""Test that all deviceinfo properties are accessible."""

assert info.raw == info.data

assert isinstance(info.accesspoint, dict)
assert isinstance(info.network_interface, dict)

ap_props = ["bssid", "ssid", "rssi"]
for prop in ap_props:
assert prop in info.accesspoint

if_props = ["gw", "localIp", "mask"]
for prop in if_props:
assert prop in info.network_interface

assert info.model is not None
assert info.firmware_version is not None
assert info.hardware_version is not None
assert info.mac_address is not None


def test_missing_fields(info):
"""Test that missing keys do not cause exceptions."""
for k in ["fw_ver", "hw_ver", "model", "token", "mac"]:
del info.raw[k]

assert info.model is None
assert info.firmware_version is None
assert info.hardware_version is None
assert info.mac_address is None
assert info.token is None