diff --git a/lbrynet/daemon/Daemon.py b/lbrynet/daemon/Daemon.py
index e287c282a..4333e0e46 100644
--- a/lbrynet/daemon/Daemon.py
+++ b/lbrynet/daemon/Daemon.py
@@ -1042,7 +1042,7 @@ class Daemon(AuthJSONRPCServer):
Returns:
If sending to an address:
- (dict) true if payment successfully scheduled
+ (dict) Dictionary containing the transaction information
{
"hex": (str) raw transaction,
"inputs": (list) inputs(dict) used for the transaction,
@@ -1163,14 +1163,16 @@ class Daemon(AuthJSONRPCServer):
@requires("wallet")
@defer.inlineCallbacks
- def jsonrpc_account_balance(self, address=None, include_unconfirmed=False):
+ def jsonrpc_account_balance(self, account_id=None, address=None, include_unconfirmed=False):
"""
Return the balance of an account
Usage:
- account_balance [
| --address=] [--include_unconfirmed]
+ account_balance [] [ | --address=] [--include_unconfirmed]
Options:
+ --account= : (str) If provided only the balance for this
+ account will be given
--address= : (str) If provided only the balance for this
address will be given
--include_unconfirmed : (bool) Include unconfirmed
@@ -1180,7 +1182,11 @@ class Daemon(AuthJSONRPCServer):
"""
if address is not None:
raise NotImplementedError("Limiting by address needs to be re-implemented in new wallet.")
- dewies = yield self.default_account.get_balance(
+ if account_id is not None:
+ account = self.get_account_or_error('account', account_id)
+ else:
+ account = self.default_account
+ dewies = yield account.get_balance(
0 if include_unconfirmed else 6
)
return Decimal(dewies) / COIN
@@ -1227,6 +1233,7 @@ class Daemon(AuthJSONRPCServer):
self.default_wallet.save()
result = account.to_dict()
+ result['id'] = account.id
result['status'] = 'added'
result.pop('certificates', None)
result['is_default'] = self.default_wallet.accounts[0] == account
@@ -1262,6 +1269,7 @@ class Daemon(AuthJSONRPCServer):
self.default_wallet.save()
result = account.to_dict()
+ result['id'] = account.id
result['status'] = 'created'
result.pop('certificates', None)
result['is_default'] = self.default_wallet.accounts[0] == account
@@ -1286,6 +1294,7 @@ class Daemon(AuthJSONRPCServer):
self.default_wallet.accounts.remove(account)
self.default_wallet.save()
result = account.to_dict()
+ result['id'] = account.id
result['status'] = 'removed'
result.pop('certificates', None)
return result
@@ -1346,6 +1355,7 @@ class Daemon(AuthJSONRPCServer):
self.default_wallet.save()
result = account.to_dict()
+ result['id'] = account.id
result.pop('certificates', None)
result['is_default'] = self.default_wallet.accounts[0] == account
return result
diff --git a/tests/integration/wallet/test_commands.py b/tests/integration/wallet/test_commands.py
index 9ece51943..364e1c044 100644
--- a/tests/integration/wallet/test_commands.py
+++ b/tests/integration/wallet/test_commands.py
@@ -80,9 +80,13 @@ class FakeAnalytics:
def send_claim_action(self, action):
pass
+ def send_credits_sent(self):
+ pass
+
class CommandTestCase(IntegrationTestCase):
+ timeout = 180
WALLET_MANAGER = LbryWalletManager
async def setUp(self):
@@ -298,6 +302,32 @@ class EpicAdventuresOfChris45(CommandTestCase):
response = yield self.out(self.daemon.jsonrpc_resolve(uri='lbry://@spam/hovercraft'))
self.assertNotIn('claim', response['lbry://@spam/hovercraft'])
+ # After abandoning he just waits for his LBCs to be returned to his account
+ yield self.d_generate(5)
+ result = yield self.daemon.jsonrpc_account_balance()
+ self.assertEqual(result, Decimal('8.9693585'))
+
+ # Amidst all this Chris45 receives a call from his friend Ramsey54
+ # who says that it is of utmost urgency that Chris45 transfer him
+ # 1 LBC to which Chris45 readily obliges
+ ramsey_account_id = (yield self.daemon.jsonrpc_account_create("Ramsey54"))['id']
+ ramsey_account = self.daemon.get_account_or_error('', ramsey_account_id)
+ ramsey_address = yield ramsey_account.receiving.get_or_create_usable_address()
+ result = yield self.out(self.daemon.jsonrpc_wallet_send(1, ramsey_address))
+ self.assertIn("txid", result)
+ yield self.d_confirm_tx(result['txid'])
+
+ # Chris45 then eagerly waits for 6 confirmations to check his balance and then calls Ramsey54 to verify whether
+ # he received it or not
+ yield self.d_generate(5)
+ result = yield self.daemon.jsonrpc_account_balance()
+ # Chris45's balance was correct
+ self.assertEqual(result, Decimal('7.9692345'))
+
+ # Ramsey54 too assured him that he had received the 1 LBC and thanks him
+ result = yield self.daemon.jsonrpc_account_balance(ramsey_account_id)
+ self.assertEqual(result, Decimal('1.0'))
+
class AccountManagement(CommandTestCase):