From 94b6b84be3bf3bf878208891c8b71cfcdc135972 Mon Sep 17 00:00:00 2001 From: Ethan Paul Date: Mon, 24 Feb 2020 22:38:28 -0500 Subject: [PATCH] Add tests for account model Add string repr to account model --- keyosk/database/account.py | 3 ++ tests/test_database_account.py | 62 ++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 tests/test_database_account.py diff --git a/keyosk/database/account.py b/keyosk/database/account.py index df73155..98e738f 100644 --- a/keyosk/database/account.py +++ b/keyosk/database/account.py @@ -93,3 +93,6 @@ class Account(KeyoskBaseModel): @staticmethod def foreign_backref() -> List[str]: return ["acls"] + + def __str__(self) -> str: + return f"Account '{self.username}' ({self.uuid})" diff --git a/tests/test_database_account.py b/tests/test_database_account.py new file mode 100644 index 0000000..bf219c6 --- /dev/null +++ b/tests/test_database_account.py @@ -0,0 +1,62 @@ +import peewee +from fixtures import demo_database + +from keyosk import database + + +def test_meta(): + for key in database.Account.dict_keys(): + assert hasattr(database.Account, key) + attr = getattr(database.Account, key) + + if key in database.Account.foreign_ref(): + assert isinstance(attr, peewee.ForeignKeyField) + else: + assert not isinstance(attr, peewee.ForeignKeyField) + + if key in database.Account.foreign_backref(): + assert isinstance(attr, peewee.BackrefAccessor) + else: + assert not isinstance(attr, peewee.BackrefAccessor) + + +def test_formatting(demo_database): + for account in database.Account.select(): + assert list(dict(account).keys()) == database.Account.dict_keys() + assert str(account.uuid) in str(account) + assert account.username in str(account) + + +def test_extras(demo_database): + account = database.Account.get(database.Account.username == "lskywalker") + + new_extras = {"foo": "bar", "fizz": "buzz", "baz": False, "blop": 1234.567} + + account.extras = new_extras + with database.interface.atomic(): + account.save() + + account = database.Account.get(database.Account.username == "lskywalker") + assert account.extras == new_extras + + +def test_crypto(demo_database): + account = database.Account.get( + database.Account.username == "jack.oneill@airforce.gov" + ) + + account.update_client_set_secret("oneillWithTwoLs") + with database.interface.atomic(): + account.save() + account = database.Account.get( + database.Account.username == "jack.oneill@airforce.gov" + ) + assert account.verify_client_set_secret("oneillWithTwoLs") + + new_autopass = account.update_server_set_secret() + with database.interface.atomic(): + account.save() + account = database.Account.get( + database.Account.username == "jack.oneill@airforce.gov" + ) + assert account.verify_server_set_secret(new_autopass)