|
|
|
from __future__ import absolute_import
|
|
|
|
from __future__ import division
|
|
|
|
from __future__ import print_function
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
|
|
|
|
import six
|
|
|
|
import shutil
|
|
|
|
import tempfile
|
|
|
|
import sys
|
|
|
|
import unittest
|
|
|
|
import os
|
|
|
|
import json
|
|
|
|
|
|
|
|
from six.moves import StringIO
|
|
|
|
from lib.storage import WalletStorage, FINAL_SEED_VERSION
|
|
|
|
|
|
|
|
|
|
|
|
class FakeSynchronizer(object):
|
|
|
|
|
|
|
|
def __init__(self):
|
|
|
|
self.store = []
|
|
|
|
|
|
|
|
def add(self, address):
|
|
|
|
self.store.append(address)
|
|
|
|
|
|
|
|
|
|
|
|
class WalletTestCase(unittest.TestCase):
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
super(WalletTestCase, self).setUp()
|
|
|
|
self.user_dir = tempfile.mkdtemp()
|
|
|
|
|
|
|
|
self.wallet_path = os.path.join(self.user_dir, "somewallet")
|
|
|
|
|
|
|
|
self._saved_stdout = sys.stdout
|
|
|
|
self._stdout_buffer = StringIO()
|
|
|
|
sys.stdout = self._stdout_buffer
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
super(WalletTestCase, self).tearDown()
|
|
|
|
shutil.rmtree(self.user_dir)
|
|
|
|
# Restore the "real" stdout
|
|
|
|
sys.stdout = self._saved_stdout
|
|
|
|
|
|
|
|
|
|
|
|
class TestWalletStorage(WalletTestCase):
|
|
|
|
|
|
|
|
def test_read_dictionary_from_file(self):
|
|
|
|
|
|
|
|
some_dict = {"a":"b", "c":"d"}
|
|
|
|
contents = json.dumps(some_dict)
|
|
|
|
with open(self.wallet_path, "w") as f:
|
|
|
|
contents = f.write(contents)
|
|
|
|
|
|
|
|
storage = WalletStorage(self.wallet_path, manual_upgrades=True)
|
|
|
|
self.assertEqual("b", storage.get("a"))
|
|
|
|
self.assertEqual("d", storage.get("c"))
|
|
|
|
|
|
|
|
def test_write_dictionary_to_file(self):
|
|
|
|
|
|
|
|
storage = WalletStorage(self.wallet_path)
|
|
|
|
|
|
|
|
some_dict = {
|
|
|
|
u"a": u"b",
|
|
|
|
u"c": u"d",
|
|
|
|
u"seed_version": FINAL_SEED_VERSION}
|
|
|
|
|
|
|
|
for key, value in some_dict.items():
|
|
|
|
storage.put(key, value)
|
|
|
|
storage.write()
|
|
|
|
|
|
|
|
contents = ""
|
|
|
|
with open(self.wallet_path, "r") as f:
|
|
|
|
contents = f.read()
|
|
|
|
self.assertEqual(some_dict, json.loads(contents))
|