From bba9f6646d78818e5dd69947397dc788e64dd35b Mon Sep 17 00:00:00 2001 From: David Knowles Date: Tue, 19 Sep 2023 23:48:09 +0000 Subject: [PATCH 1/3] Handle the case where friendlyName is None --- pyschlage/user.py | 2 +- tests/conftest.py | 2 +- tests/test_user.py | 8 +++++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/pyschlage/user.py b/pyschlage/user.py index 887758c..9a573be 100644 --- a/pyschlage/user.py +++ b/pyschlage/user.py @@ -36,7 +36,7 @@ def from_json(cls, json) -> User: :meta private: """ return User( - name=json["friendlyName"], + name=json.get("friendlyName"), email=json["email"], user_id=json["identityId"], ) diff --git a/tests/conftest.py b/tests/conftest.py index 080155a..8b735f5 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -13,7 +13,7 @@ def mock_auth(): @fixture -def lock_users_json(): +def lock_users_json() -> list[dict]: return [ { "consentRecords": [], diff --git a/tests/test_user.py b/tests/test_user.py index fb418f8..21049a1 100644 --- a/tests/test_user.py +++ b/tests/test_user.py @@ -3,10 +3,16 @@ from pyschlage.user import User -def test_from_json(lock_users_json): +def test_from_json(lock_users_json: list[dict]): user = User( name="asdf", email="asdf@asdf.com", user_id="user-uuid", ) assert User.from_json(lock_users_json[0]) == user + + +def test_from_json_no_name(lock_users_json: list[dict]): + for user_json in lock_users_json: + user_json.pop("friendlyName") + assert User.from_json(user_json).name is None From a03ee10cf21abda53944d14698ac770d519b5986 Mon Sep 17 00:00:00 2001 From: David Knowles Date: Tue, 19 Sep 2023 23:56:03 +0000 Subject: [PATCH 2/3] Update type annotation for name --- pyschlage/user.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyschlage/user.py b/pyschlage/user.py index 9a573be..b8e54a3 100644 --- a/pyschlage/user.py +++ b/pyschlage/user.py @@ -9,7 +9,7 @@ class User: """A Schlage API user account.""" - name: str = "" + name: str | None = None """The username associated with the account.""" email: str = "" From 149fdaceed303f2d4a08d915b622c50bc592c1ad Mon Sep 17 00:00:00 2001 From: David Knowles Date: Tue, 19 Sep 2023 23:57:35 +0000 Subject: [PATCH 3/3] Fix python 3.8 compatibility --- tests/conftest.py | 2 ++ tests/test_user.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index 8b735f5..ac79516 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from unittest import mock from pytest import fixture diff --git a/tests/test_user.py b/tests/test_user.py index 21049a1..af80b10 100644 --- a/tests/test_user.py +++ b/tests/test_user.py @@ -1,4 +1,4 @@ -from unittest import mock +from __future__ import annotations from pyschlage.user import User