From a021ddeffd8fc67dc48cbc944b0eb1e4187b02b4 Mon Sep 17 00:00:00 2001 From: Lex Berezhny Date: Mon, 11 Mar 2019 22:24:57 -0400 Subject: [PATCH] + account.modified_on --- tests/client_tests/unit/test_account.py | 2 ++ tests/client_tests/unit/test_wallet.py | 9 +++++++++ torba/client/baseaccount.py | 10 +++++++--- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/tests/client_tests/unit/test_account.py b/tests/client_tests/unit/test_account.py index b6a6d6895..8c451d2a6 100644 --- a/tests/client_tests/unit/test_account.py +++ b/tests/client_tests/unit/test_account.py @@ -143,6 +143,7 @@ class TestHierarchicalDeterministicAccount(AsyncioTestCase): async def test_load_and_save_account(self): account_data = { 'name': 'My Account', + 'modified_on': 123.456, 'seed': "carbon smart garage balance margin twelve chest sword toast envelope bottom stomac" "h absent", @@ -302,6 +303,7 @@ class TestSingleKeyAccount(AsyncioTestCase): async def test_load_and_save_account(self): account_data = { 'name': 'My Account', + 'modified_on': 123.456, 'seed': "carbon smart garage balance margin twelve chest sword toast envelope bottom stomac" "h absent", diff --git a/tests/client_tests/unit/test_wallet.py b/tests/client_tests/unit/test_wallet.py index d61490c44..afe8ea14f 100644 --- a/tests/client_tests/unit/test_wallet.py +++ b/tests/client_tests/unit/test_wallet.py @@ -1,4 +1,5 @@ import tempfile +from binascii import hexlify from torba.testcase import AsyncioTestCase @@ -35,6 +36,7 @@ class TestWalletCreation(AsyncioTestCase): { 'name': 'An Account', 'ledger': 'btc_mainnet', + 'modified_on': 123.456, 'seed': "carbon smart garage balance margin twelve chest sword toast envelope bottom stomac" "h absent", @@ -57,12 +59,19 @@ class TestWalletCreation(AsyncioTestCase): storage = WalletStorage(default=wallet_dict) wallet = Wallet.from_storage(storage, self.manager) self.assertEqual(wallet.name, 'Main Wallet') + self.assertEqual( + hexlify(wallet.hash), b'9f462b8dd802eb8c913e54f09a09827ebc14abbc13f33baa90d8aec5ae920fc7' + ) self.assertEqual(len(wallet.accounts), 1) account = wallet.default_account self.assertIsInstance(account, BTCLedger.account_class) self.maxDiff = None self.assertDictEqual(wallet_dict, wallet.to_dict()) + encrypted = wallet.pack('password') + decrypted = Wallet.unpack('password', encrypted) + self.assertEqual(decrypted['accounts'][0]['name'], 'An Account') + def test_read_write(self): manager = BaseWalletManager() config = {'data_path': '/tmp/wallet'} diff --git a/torba/client/baseaccount.py b/torba/client/baseaccount.py index f77c59836..fac1276b3 100644 --- a/torba/client/baseaccount.py +++ b/torba/client/baseaccount.py @@ -1,4 +1,5 @@ import json +import time import asyncio import random import typing @@ -198,12 +199,13 @@ class BaseAccount: def __init__(self, ledger: 'baseledger.BaseLedger', wallet: 'basewallet.Wallet', name: str, seed: str, private_key_string: str, encrypted: bool, private_key: Optional[PrivateKey], public_key: PubKey, - address_generator: dict) -> None: + address_generator: dict, modified_on: float) -> None: self.ledger = ledger self.wallet = wallet self.id = public_key.address self.name = name self.seed = seed + self.modified_on = modified_on self.private_key_string = private_key_string self.password: Optional[str] = None self.private_key_encryption_init_vector: Optional[bytes] = None @@ -269,7 +271,8 @@ class BaseAccount: encrypted=d.get('encrypted', False), private_key=private_key, public_key=public_key, - address_generator=d.get('address_generator', {}) + address_generator=d.get('address_generator', {}), + modified_on=d.get('modified_on', time.time()) ) def to_dict(self): @@ -289,7 +292,8 @@ class BaseAccount: 'encrypted': self.serialize_encrypted, 'private_key': private_key_string, 'public_key': self.public_key.extended_key_string(), - 'address_generator': self.address_generator.to_dict(self.receiving, self.change) + 'address_generator': self.address_generator.to_dict(self.receiving, self.change), + 'modified_on': self.modified_on } @property