Separate official widget authorization and document account-only RPC capabilities

This commit is contained in:
Pigway
2026-10-03 07:00:07 +08:00
parent 0c18cabc92
commit 142d771ffa
5 changed files with 111 additions and 3 deletions
+20
View File
@@ -67,3 +67,23 @@ def test_widget_api_mock_and_auth(client):
assert len(response.json()["catalog"]) == 75
client.headers.clear()
assert client.get("/api/v1/devices/living-room/widgets").status_code == 401
@pytest.mark.parametrize(
"robot,selected,status",
[
({"frameCoverRobotId": None}, None, "NO_WIDGET"),
({}, None, "CURRENT_UNVERIFIED"),
({"frameCoverRobotId": 123}, None, "CURRENT_UNVERIFIED"),
],
)
def test_no_selection_is_distinct_from_unknown(robot, selected, status):
response = Mock(status_code=200)
response.json.return_value = {
"result": {"rows": [], "robot": robot, "frameCoverRobot": selected}
}
with patch("requests.post", return_value=response):
result = WidgetReader("secret", 123).read()
assert result.status == status
assert result.current is None
assert result.current_verified == (status == "NO_WIDGET")