diff --git a/selfprivacy_api/repositories/tokens/json_tokens_repository.py b/selfprivacy_api/repositories/tokens/json_tokens_repository.py index 938d419..5f04eea 100644 --- a/selfprivacy_api/repositories/tokens/json_tokens_repository.py +++ b/selfprivacy_api/repositories/tokens/json_tokens_repository.py @@ -99,7 +99,9 @@ class JsonTokensRepository(AbstractTokensRepository): if userdata_token["name"] == input_token.device_name: userdata_token["token"] = new_token.token - userdata_token["data"] = new_token.created_at + userdata_token["date"] = ( + new_token.created_at.strftime("%Y-%m-%d %H:%M:%S.%f"), + ) return new_token @@ -128,12 +130,12 @@ class JsonTokensRepository(AbstractTokensRepository): ) -> RecoveryKey: """Create the recovery key""" - recovery_key = RecoveryKey.generate(expiration=expiration, uses_left=uses_left) + recovery_key = RecoveryKey.generate(expiration, uses_left) - with ReadUserData(UserDataFiles.TOKENS) as tokens_file: - tokens_file["recovery_key"] = { + with WriteUserData(UserDataFiles.TOKENS) as tokens_file: + tokens_file["recovery_token"] = { "token": recovery_key.key, - "date": recovery_key.created_at, + "date": recovery_key.created_at.strftime("%Y-%m-%d %H:%M:%S.%f"), "expiration": recovery_key.expires_at, "uses_left": recovery_key.uses_left, } @@ -159,7 +161,7 @@ class JsonTokensRepository(AbstractTokensRepository): phrase_bytes = Mnemonic(language="english").to_entropy(mnemonic_phrase) if phrase_bytes != recovery_token: - raise RecoveryTokenError("Phrase is not (?) recovery token") + raise RecoveryTokenError("Phrase is not recovery token") new_token = Token.generate(device_name=device_name) @@ -168,7 +170,7 @@ class JsonTokensRepository(AbstractTokensRepository): { "token": new_token.token, "name": new_token.device_name, - "date": new_token.created_at, + "date": new_token.created_at.strftime("%Y-%m-%d %H:%M:%S.%f"), } ) @@ -187,8 +189,10 @@ class JsonTokensRepository(AbstractTokensRepository): with WriteUserData(UserDataFiles.TOKENS) as tokens_file: tokens_file["new_device"] = { "token": new_device_key.key, - "data": new_device_key.created_at, - "expiration": new_device_key.expires_at, + "data": 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" + ), } return new_device_key @@ -206,15 +210,21 @@ class JsonTokensRepository(AbstractTokensRepository): self, mnemonic_phrase: str, device_name: str ) -> Token: """Use the mnemonic new device key""" - new_device_key = NewDeviceKey.generate() + new_device_key = self.get_new_device_key() + + if new_device_key is None: + raise TokenNotFoundError("New device key not found!") + token = bytes.fromhex(new_device_key.key) - + if not Mnemonic(language="english").check(mnemonic_phrase): raise MnemonicError("Phrase is not mnemonic!") phrase_bytes = Mnemonic(language="english").to_entropy(mnemonic_phrase) - if phrase_bytes != token: - raise MnemonicError("Phrase is not token!") + if bytes(phrase_bytes) != bytes( + token + ): # idk why, но оно не робит, хотя оригинальную логику я сохранил + raise TokenNotFoundError("Phrase is not token!") new_token = Token.generate(device_name=device_name) with WriteUserData(UserDataFiles.TOKENS) as tokens: diff --git a/tests/test_graphql/test_repository/test_tokens_repository.py b/tests/test_graphql/test_repository/test_tokens_repository.py index 5bcb300..7566372 100644 --- a/tests/test_graphql/test_repository/test_tokens_repository.py +++ b/tests/test_graphql/test_repository/test_tokens_repository.py @@ -245,10 +245,10 @@ 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-11-11T11:48:54.228038", + "date": "2022-07-15 17:41:31.675698", "expiration": None, "uses_left": 1, - } # проблемы, файл не изменяется. не представляю причину + } def test_get_new_device_key(tokens, mock_new_device_key_generate, datadir): @@ -256,7 +256,7 @@ 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"] == { - "data": "2022-07-15 17:41:31.675698", + "date": "2022-07-15 17:41:31.675698", "expiration": "2022-07-15 17:41:31.675698", "token": "43478d05b35e4781598acd76e33832bb", }