refactor, test: add some token repo tests, fix json tokens repo

pull/18/head
def 2022-11-07 18:05:25 +04:00
parent 80a3750d92
commit 106a63e28c
4 changed files with 107 additions and 6 deletions

View File

@ -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

View File

@ -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(

View File

@ -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),
)
]

View File

@ -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"
}
}