diff --git a/monero/daemon.py b/monero/daemon.py index f900caa..7f7e73e 100644 --- a/monero/daemon.py +++ b/monero/daemon.py @@ -1,14 +1,20 @@ import six +from .backends.jsonrpc import JSONRPCDaemon + class Daemon(object): """Monero daemon. - Provides interface do a daemon instance. + Provides interface to a daemon instance. :param backend: a daemon backend + :param \\**kwargs: arguments to initialize a JSONRPCDaemon instance if no backend is given """ - def __init__(self, backend): - self._backend = backend + def __init__(self, backend=None, **kwargs): + if backend and len(kwargs): + raise ValueError('backend already given, other arguments are extraneous') + + self._backend = backend if backend else JSONRPCDaemon(**kwargs) def info(self): """ diff --git a/monero/wallet.py b/monero/wallet.py index be6a8f3..1759094 100644 --- a/monero/wallet.py +++ b/monero/wallet.py @@ -3,13 +3,13 @@ from sha3 import keccak_256 import struct from . import address +from .backends.jsonrpc import JSONRPCWallet from . import base58 from . import const from . import ed25519 from . import numbers from .transaction import Payment, PaymentManager - class Wallet(object): """ Monero wallet. @@ -26,11 +26,15 @@ class Wallet(object): The wallet exposes a number of methods that operate on the default account (of index 0). :param backend: a wallet backend + :param \\**kwargs: arguments to initialize a JSONRPCWallet instance if no backend is given """ accounts = None - def __init__(self, backend): - self._backend = backend + def __init__(self, backend=None, **kwargs): + if backend and len(kwargs): + raise ValueError('backend already given, other arguments are extraneous') + + self._backend = backend if backend else JSONRPCWallet(**kwargs) self.incoming = PaymentManager(0, backend, 'in') self.outgoing = PaymentManager(0, backend, 'out') self.refresh() diff --git a/tests/test_jsonrpcdaemon.py b/tests/test_jsonrpcdaemon.py index 34aa9af..cfdf149 100644 --- a/tests/test_jsonrpcdaemon.py +++ b/tests/test_jsonrpcdaemon.py @@ -147,3 +147,10 @@ class JSONRPCDaemonTestCase(JSONTestCase): blk = self.daemon.block(height=693324) self.assertEqual(len(blk.transactions), 105) self.assertEqual(len(set(blk.transactions)), 105) + + def test_init(self): + daemon1 = Daemon(host='localhost') + daemon2 = Daemon() + + with self.assertRaises(ValueError): + daemon3 = Daemon(backend=JSONRPCDaemon(), port=18089) diff --git a/tests/test_jsonrpcwallet.py b/tests/test_jsonrpcwallet.py index 5223bca..1e30118 100644 --- a/tests/test_jsonrpcwallet.py +++ b/tests/test_jsonrpcwallet.py @@ -1241,3 +1241,15 @@ class JSONRPCWalletTestCase(JSONTestCase): self.wallet = Wallet(JSONRPCWallet()) pmts = self.wallet.incoming(tx_id='1a75f3aa57f7912313e90ab1188b7a102dbb619a324c3db51bb856a2f40503f1') self.assertEqual(len(pmts), 1) + + @responses.activate + def test_init(self): + responses.add(responses.POST, self.jsonrpc_url, + json=self._read('test_incoming_from_self__issue_71-00-get_accounts.json'), + status=200) + + wallet1 = Wallet(host='127.0.0.1') + wallet2 = Wallet() + + with self.assertRaises(ValueError): + wallet3 = Wallet(backend=JSONRPCWallet(), port=18089)