diff --git a/electrum/tests/test_contacts.py b/electrum/tests/test_contacts.py new file mode 100644 index 000000000..b2c28e00b --- /dev/null +++ b/electrum/tests/test_contacts.py @@ -0,0 +1,31 @@ +import os + +from . import ElectrumTestCase + +from electrum.simple_config import SimpleConfig +from electrum.wallet import restore_wallet_from_text, Abstract_Wallet +from electrum.daemon import Daemon + + +class TestContacts(ElectrumTestCase): + TESTNET = True + + def setUp(self): + super().setUp() + self.config = SimpleConfig({'electrum_path': self.electrum_path}) + self.wallet_path = os.path.join(self.electrum_path, "somewallet1") + + async def test_saving_contacts(self): + text = 'cross end slow expose giraffe fuel track awake turtle capital ranch pulp' + d = restore_wallet_from_text(text, path=self.wallet_path, gap_limit=2, config=self.config) + w = d['wallet'] # type: Abstract_Wallet + w.contacts["myNNuLYNgHE92nGQuJd5mXo6gy9gKXEDyQ"] = ("address", "alice") + w.contacts["tb1q4syjltptqwhe62t3u5gwz9nsw87kmcwx003z05"] = ("address", "bob") + self.assertEqual(2, len(w.contacts)) + await w.stop() + del w + # re-open wallet from disk + w = Daemon._load_wallet(self.wallet_path, password=None, config=self.config) + self.assertEqual(2, len(w.contacts)) + w.contacts["n4STqqWPrvkapAyvXY2wJzfoKMnuJbDWoH"] = ("address", "carol") + self.assertEqual(3, len(w.contacts)) diff --git a/electrum/wallet_db.py b/electrum/wallet_db.py index d441e9c85..5e796717a 100644 --- a/electrum/wallet_db.py +++ b/electrum/wallet_db.py @@ -103,6 +103,7 @@ class WalletFileExceptionVersion51(WalletFileException): pass json_db.register_dict('transactions', lambda x: tx_from_any(x, deserialize=False), None) json_db.register_dict('prevouts_by_scripthash', lambda x: set(tuple(k) for k in x), None) json_db.register_dict('data_loss_protect_remote_pcp', lambda x: bytes.fromhex(x), None) +json_db.register_dict('contacts', tuple, None) # register dicts that require key conversion for key in [ 'adds', 'locked_in', 'settles', 'fails', 'fee_updates', 'buckets',