diff --git a/pyschlage/lock.py b/pyschlage/lock.py index b411f34..826fe1d 100644 --- a/pyschlage/lock.py +++ b/pyschlage/lock.py @@ -137,7 +137,7 @@ def from_json(cls, auth: Auth, json: dict) -> Lock: name=json["name"], model_name=json["modelName"], device_type=json["devicetypeId"], - connected=json["connected"], + connected=json.get("connected", False), battery_level=attributes.get("batteryLevel"), is_locked=is_locked, is_jammed=is_jammed, diff --git a/tests/test_lock.py b/tests/test_lock.py index 989dd63..25fb4c1 100644 --- a/tests/test_lock.py +++ b/tests/test_lock.py @@ -1,5 +1,8 @@ +from __future__ import annotations + from copy import deepcopy from datetime import datetime +from typing import Any from unittest import mock import pytest @@ -33,6 +36,13 @@ def test_from_json(self, mock_auth, lock_json): "foo-bar-uuid": User("Foo Bar", "foo@bar.xyz", "foo-bar-uuid"), } + def test_from_json_no_connected( + self, mock_auth: mock.Mock, lock_json: dict[Any, Any] + ) -> None: + lock_json.pop("connected") + lock = Lock.from_json(mock_auth, lock_json) + assert not lock.connected + def test_from_json_is_jammed(self, mock_auth, lock_json): lock_json["attributes"]["lockState"] = 2 lock = Lock.from_json(mock_auth, lock_json)