fix(tokens): datetime formatting

pull/18/head
Inex Code 2022-11-16 13:58:41 +03:00
parent 89b6c3e32e
commit b31c06a0f7
3 changed files with 93 additions and 17 deletions

View File

@ -20,6 +20,8 @@ from selfprivacy_api.repositories.tokens.abstract_tokens_repository import (
)
from mnemonic import Mnemonic
DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%S.%f"
class JsonTokensRepository(AbstractTokensRepository):
def get_token_by_token_string(self, token_string: str) -> Optional[Token]:
@ -75,7 +77,7 @@ class JsonTokensRepository(AbstractTokensRepository):
{
"token": new_token.token,
"name": new_token.device_name,
"date": new_token.created_at.strftime("%Y-%m-%d %H:%M:%S.%f"),
"date": new_token.created_at.strftime(DATETIME_FORMAT),
}
)
return new_token
@ -100,7 +102,7 @@ class JsonTokensRepository(AbstractTokensRepository):
if userdata_token["name"] == input_token.device_name:
userdata_token["token"] = new_token.token
userdata_token["date"] = (
new_token.created_at.strftime("%Y-%m-%d %H:%M:%S.%f"),
new_token.created_at.strftime(DATETIME_FORMAT),
)
return new_token
@ -135,7 +137,7 @@ class JsonTokensRepository(AbstractTokensRepository):
with WriteUserData(UserDataFiles.TOKENS) as tokens_file:
tokens_file["recovery_token"] = {
"token": recovery_key.key,
"date": recovery_key.created_at.strftime("%Y-%m-%d %H:%M:%S.%f"),
"date": recovery_key.created_at.strftime(DATETIME_FORMAT),
"expiration": recovery_key.expires_at,
"uses_left": recovery_key.uses_left,
}
@ -170,7 +172,7 @@ class JsonTokensRepository(AbstractTokensRepository):
{
"token": new_token.token,
"name": new_token.device_name,
"date": new_token.created_at.strftime("%Y-%m-%d %H:%M:%S.%f"),
"date": new_token.created_at.strftime(DATETIME_FORMAT),
}
)
@ -189,10 +191,8 @@ class JsonTokensRepository(AbstractTokensRepository):
with WriteUserData(UserDataFiles.TOKENS) as tokens_file:
tokens_file["new_device"] = {
"token": new_device_key.key,
"date": new_device_key.created_at.strftime("%Y-%m-%d %H:%M:%S.%f"),
"expiration": new_device_key.expires_at.strftime(
"%Y-%m-%d %H:%M:%S.%f"
),
"date": new_device_key.created_at.strftime(DATETIME_FORMAT),
"expiration": new_device_key.expires_at.strftime(DATETIME_FORMAT),
}
return new_device_key

View File

@ -2,7 +2,7 @@
# pylint: disable=unused-argument
# pylint: disable=missing-function-docstring
from datetime import datetime
from datetime import datetime, timezone
import pytest
@ -112,7 +112,22 @@ def tokens(mocker, datadir):
"token": "KG9ni-B-CMPk327Zv1qC7YBQaUGaBUcgdkvMvQ2atFI",
"name": "primary_token",
"date": "2022-07-15 17:41:31.675698",
}
},
{
"token": "3JKgLOtFu6ZHgE4OU-R-VdW47IKpg-YQL0c6n7bol68",
"name": "second_token",
"date": "2022-07-15 17:41:31.675698Z",
},
{
"token": "LYiwFDekvALKTQSjk7vtMQuNP_6wqKuV-9AyMKytI_8",
"name": "third_token",
"date": "2022-07-15T17:41:31.675698Z",
},
{
"token": "dD3CFPcEZvapscgzWb7JZTLog7OMkP7NzJeu2fAazXM",
"name": "forth_token",
"date": "2022-07-15T17:41:31.675698",
},
]
return datadir
@ -163,7 +178,22 @@ def test_get_tokens(tokens):
token="KG9ni-B-CMPk327Zv1qC7YBQaUGaBUcgdkvMvQ2atFI",
device_name="primary_token",
created_at=datetime(2022, 7, 15, 17, 41, 31, 675698),
)
),
Token(
token="3JKgLOtFu6ZHgE4OU-R-VdW47IKpg-YQL0c6n7bol68",
device_name="second_token",
created_at=datetime(2022, 7, 15, 17, 41, 31, 675698, tzinfo=timezone.utc),
),
Token(
token="LYiwFDekvALKTQSjk7vtMQuNP_6wqKuV-9AyMKytI_8",
device_name="third_token",
created_at=datetime(2022, 7, 15, 17, 41, 31, 675698, tzinfo=timezone.utc),
),
Token(
token="dD3CFPcEZvapscgzWb7JZTLog7OMkP7NzJeu2fAazXM",
device_name="forth_token",
created_at=datetime(2022, 7, 15, 17, 41, 31, 675698),
),
]
@ -186,7 +216,23 @@ def test_delete_token(tokens, datadir):
)
assert repo.delete_token(input_token) is None
assert read_json(datadir / "tokens.json")["tokens"] == []
assert read_json(datadir / "tokens.json")["tokens"] == [
{
"token": "3JKgLOtFu6ZHgE4OU-R-VdW47IKpg-YQL0c6n7bol68",
"name": "second_token",
"date": "2022-07-15 17:41:31.675698Z",
},
{
"token": "LYiwFDekvALKTQSjk7vtMQuNP_6wqKuV-9AyMKytI_8",
"name": "third_token",
"date": "2022-07-15T17:41:31.675698Z",
},
{
"token": "dD3CFPcEZvapscgzWb7JZTLog7OMkP7NzJeu2fAazXM",
"name": "forth_token",
"date": "2022-07-15T17:41:31.675698",
},
]
def test_delete_not_found_token(tokens, datadir):
@ -245,7 +291,7 @@ def test_create_recovery_key(tokens, mock_recovery_key_generate, datadir):
assert repo.create_recovery_key(uses_left=1, expiration=None) is not None
assert read_json(datadir / "tokens.json")["recovery_token"] == {
"token": "889bf49c1d3199d71a2e704718772bd53a422020334db051",
"date": "2022-07-15 17:41:31.675698",
"date": "2022-07-15T17:41:31.675698",
"expiration": None,
"uses_left": 1,
}
@ -256,8 +302,8 @@ def test_get_new_device_key(tokens, mock_new_device_key_generate, datadir):
assert repo.get_new_device_key() is not None
assert read_json(datadir / "tokens.json")["new_device"] == {
"date": "2022-07-15 17:41:31.675698",
"expiration": "2022-07-15 17:41:31.675698",
"date": "2022-07-15T17:41:31.675698",
"expiration": "2022-07-15T17:41:31.675698",
"token": "43478d05b35e4781598acd76e33832bb",
}
@ -395,7 +441,22 @@ def test_use_mnemonic_recovery_key(datadir, tokens, mock_generate_token):
"token": "KG9ni-B-CMPk327Zv1qC7YBQaUGaBUcgdkvMvQ2atFI",
},
{
"date": "2022-11-14 06:06:32.777123",
"token": "3JKgLOtFu6ZHgE4OU-R-VdW47IKpg-YQL0c6n7bol68",
"name": "second_token",
"date": "2022-07-15 17:41:31.675698Z",
},
{
"token": "LYiwFDekvALKTQSjk7vtMQuNP_6wqKuV-9AyMKytI_8",
"name": "third_token",
"date": "2022-07-15T17:41:31.675698Z",
},
{
"token": "dD3CFPcEZvapscgzWb7JZTLog7OMkP7NzJeu2fAazXM",
"name": "forth_token",
"date": "2022-07-15T17:41:31.675698",
},
{
"date": "2022-11-14T06:06:32.777123",
"name": "newdevice",
"token": "ur71mC4aiI6FIYAN--cTL-38rPHS5D6NuB1bgN_qKF4",
},

View File

@ -4,6 +4,21 @@
"token": "KG9ni-B-CMPk327Zv1qC7YBQaUGaBUcgdkvMvQ2atFI",
"name": "primary_token",
"date": "2022-07-15 17:41:31.675698"
},
{
"token": "3JKgLOtFu6ZHgE4OU-R-VdW47IKpg-YQL0c6n7bol68",
"name": "second_token",
"date": "2022-07-15 17:41:31.675698Z"
},
{
"token": "LYiwFDekvALKTQSjk7vtMQuNP_6wqKuV-9AyMKytI_8",
"name": "third_token",
"date": "2022-07-15T17:41:31.675698Z"
},
{
"token": "dD3CFPcEZvapscgzWb7JZTLog7OMkP7NzJeu2fAazXM",
"name": "forth_token",
"date": "2022-07-15T17:41:31.675698"
}
],
"recovery_token": {
@ -17,4 +32,4 @@
"date": "2022-10-26 20:50:47.973212",
"expiration": "2022-10-26 21:00:47.974153"
}
}
}