From d99ce5f3d6cfb31d7df87057121cbd7956c3a4b2 Mon Sep 17 00:00:00 2001 From: hackrush Date: Mon, 3 Sep 2018 21:11:30 +0530 Subject: [PATCH] Integration test for wallet_send (#1395) --- lbrynet/daemon/Daemon.py | 18 +++++++++++--- tests/integration/wallet/test_commands.py | 30 +++++++++++++++++++++++ 2 files changed, 44 insertions(+), 4 deletions(-) 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):