diff --git a/selfprivacy_api/repositories/tokens/abstract_tokens_repository.py b/selfprivacy_api/repositories/tokens/abstract_tokens_repository.py index d4ad05a..3cf6e1d 100644 --- a/selfprivacy_api/repositories/tokens/abstract_tokens_repository.py +++ b/selfprivacy_api/repositories/tokens/abstract_tokens_repository.py @@ -21,7 +21,7 @@ class AbstractTokensRepository(ABC): """Get the tokens""" @abstractmethod - def create_token(self, name: str) -> Token: + def create_token(self, device_name: str) -> Token: """Create new token""" @abstractmethod diff --git a/selfprivacy_api/repositories/tokens/json_tokens_repository.py b/selfprivacy_api/repositories/tokens/json_tokens_repository.py index a6b6ba8..e23ed0b 100644 --- a/selfprivacy_api/repositories/tokens/json_tokens_repository.py +++ b/selfprivacy_api/repositories/tokens/json_tokens_repository.py @@ -58,17 +58,17 @@ class JsonTokensRepository(AbstractTokensRepository): for userdata_token in tokens_file["tokens"]: tokens_list.append( Token( - token=userdata_token.token, - device_name=userdata_token.name, - created_at=userdata_token.date, + token=userdata_token["token"], + device_name=userdata_token["name"], + created_at=userdata_token["date"], ) ) return tokens_list - def create_token(self, name: str) -> Token: + def create_token(self, device_name: str) -> Token: """Create new token""" - new_token = Token.generate(device_name=name) + new_token = Token.generate(device_name) with WriteUserData(UserDataFiles.TOKENS) as tokens_file: tokens_file["tokens"].append( diff --git a/tests/test_graphql/test_repository/test_tokens_repository.py b/tests/test_graphql/test_repository/test_tokens_repository.py new file mode 100644 index 0000000..ca8bc24 --- /dev/null +++ b/tests/test_graphql/test_repository/test_tokens_repository.py @@ -0,0 +1,81 @@ +# pylint: disable=redefined-outer-name +# pylint: disable=unused-argument +# pylint: disable=missing-function-docstring + +import datetime +import pytest + +from tests.common import read_json +from selfprivacy_api.repositories.tokens.json_tokens_repository import ( + JsonTokensRepository, +) +from selfprivacy_api.models.tokens.token import Token +from selfprivacy_api.repositories.tokens.exceptions import ( + TokenNotFoundError, + RecoveryKeyNotFoundError, + MnemonicError, + RecoveryKeyIsNotValidError, + RecoveryTokenError, +) + + +@pytest.fixture +def tokens(mocker, datadir): + mocker.patch("selfprivacy_api.utils.TOKENS_FILE", new=datadir / "tokens.json") + assert read_json(datadir / "tokens.json")["tokens"] == [ + { + "token": "iamtoken", + "name": "primary_token", + "date": "2022-07-15 17:41:31.675698", + } + ] + return datadir + + +def test_get_token_by_token_string(tokens): + repo = JsonTokensRepository() + + assert repo.get_token_by_token_string(token_string="iamtoken") is not None + assert repo.get_token_by_token_string(token_string="iamtoken") == Token( + token="iamtoken", + device_name="primary_token", + created_at=datetime.datetime(2022, 7, 15, 17, 41, 31, 675698), + ) + + +def test_get_token_by_non_existent_token_string(tokens): + repo = JsonTokensRepository() + + with pytest.raises(TokenNotFoundError): + assert repo.get_token_by_token_string(token_string="iamBadtoken") is None + + +def test_get_token_by_name(tokens): + repo = JsonTokensRepository() + + assert repo.get_token_by_name(token_name="primary_token") is not None + assert repo.get_token_by_name(token_name="primary_token") == Token( + token="iamtoken", + device_name="primary_token", + created_at=datetime.datetime(2022, 7, 15, 17, 41, 31, 675698), + ) + + +def test_get_token_by_non_existent_name(tokens): + repo = JsonTokensRepository() + + with pytest.raises(TokenNotFoundError): + assert repo.get_token_by_name(token_name="badname") is None + + +def test_get_tokens(tokens): + repo = JsonTokensRepository() + + assert repo.get_tokens() is not None + assert repo.get_tokens() == [ + Token( + token="iamtoken", + device_name="primary_token", + created_at=datetime.datetime(2022, 7, 15, 17, 41, 31, 675698), + ) + ] diff --git a/tests/test_graphql/test_repository/test_tokens_repository/tokens.json b/tests/test_graphql/test_repository/test_tokens_repository/tokens.json new file mode 100644 index 0000000..b8eaffd --- /dev/null +++ b/tests/test_graphql/test_repository/test_tokens_repository/tokens.json @@ -0,0 +1,20 @@ +{ + "tokens": [ + { + "token": "iamtoken", + "name": "primary_token", + "date": "2022-07-15 17:41:31.675698" + } + ], + "recovery_token": { + "token": "iamtoken", + "date": "2022-09-24T17:54:07.607272", + "expiration": null, + "uses_left": null + }, + "new_device": { + "token": "iamtoken", + "date": "2022-10-26 20:50:47.973212", + "expiration": "2022-10-26 21:00:47.974153" + } +} \ No newline at end of file