diff --git a/test/functional/receivedby.py b/test/functional/receivedby.py --- a/test/functional/receivedby.py +++ b/test/functional/receivedby.py @@ -3,26 +3,11 @@ # Distributed under the MIT software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. -# Exercise the listreceivedbyaddress API +"""Test the listreceivedbyaddress RPC.""" +from decimal import Decimal from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import * - - -def get_sub_array_from_array(object_array, to_match): - ''' - Finds and returns a sub array from an array of arrays. - to_match should be a unique idetifier of a sub array - ''' - for item in object_array: - all_match = True - for key, value in to_match.items(): - if item[key] != value: - all_match = False - if not all_match: - continue - return item - return [] +from test_framework.util import assert_array_result, assert_equal class ReceivedByTest(BitcoinTestFramework): @@ -30,9 +15,11 @@ self.num_nodes = 2 def run_test(self): - ''' - listreceivedbyaddress Test - ''' + # Generate block to get out of IBD + self.nodes[0].generate(1) + + self.log.info("listreceivedbyaddress Test") + # Send from node 0 to 1 addr = self.nodes[1].getnewaddress() txid = self.nodes[0].sendtoaddress(addr, 0.1) @@ -43,8 +30,8 @@ {"address": addr}, {}, True) - # Bury Tx under 10 block so it will be returned by - # listreceivedbyaddress + + # Bury Tx under 10 block so it will be returned by listreceivedbyaddress self.nodes[1].generate(10) self.sync_all() assert_array_result(self.nodes[1].listreceivedbyaddress(), @@ -55,8 +42,8 @@ {"address": addr}, {"address": addr, "account": "", "amount": Decimal("0.1"), "confirmations": 10, "txids": [txid, ]}) # With min confidence > 10, should not find Tx - assert_array_result( - self.nodes[1].listreceivedbyaddress(11), {"address": addr}, {}, True) + assert_array_result(self.nodes[1].listreceivedbyaddress(11), { + "address": addr}, {}, True) # Empty Tx addr = self.nodes[1].getnewaddress() @@ -64,9 +51,8 @@ {"address": addr}, {"address": addr, "account": "", "amount": 0, "confirmations": 0, "txids": []}) - ''' - getreceivedbyaddress Test - ''' + self.log.info("getreceivedbyaddress Test") + # Send from node 0 to 1 addr = self.nodes[1].getnewaddress() txid = self.nodes[0].sendtoaddress(addr, 0.1) @@ -74,35 +60,25 @@ # Check balance is 0 because of 0 confirmations balance = self.nodes[1].getreceivedbyaddress(addr) - if balance != Decimal("0.0"): - raise AssertionError( - "Wrong balance returned by getreceivedbyaddress, %0.2f" % (balance)) + assert_equal(balance, Decimal("0.0")) # Check balance is 0.1 balance = self.nodes[1].getreceivedbyaddress(addr, 0) - if balance != Decimal("0.1"): - raise AssertionError( - "Wrong balance returned by getreceivedbyaddress, %0.2f" % (balance)) + assert_equal(balance, Decimal("0.1")) - # Bury Tx under 10 block so it will be returned by the default - # getreceivedbyaddress + # Bury Tx under 10 block so it will be returned by the default getreceivedbyaddress self.nodes[1].generate(10) self.sync_all() balance = self.nodes[1].getreceivedbyaddress(addr) - if balance != Decimal("0.1"): - raise AssertionError( - "Wrong balance returned by getreceivedbyaddress, %0.2f" % (balance)) + assert_equal(balance, Decimal("0.1")) + + self.log.info("listreceivedbyaccount + getreceivedbyaccount Test") - ''' - listreceivedbyaccount + getreceivedbyaccount Test - ''' # set pre-state addrArr = self.nodes[1].getnewaddress() account = self.nodes[1].getaccount(addrArr) - received_by_account_json = get_sub_array_from_array( - self.nodes[1].listreceivedbyaccount(), {"account": account}) - if len(received_by_account_json) == 0: - raise AssertionError("No accounts found in node") + received_by_account_json = [ + r for r in self.nodes[1].listreceivedbyaccount() if r["account"] == account][0] balance_by_account = self.nodes[1].getreceivedbyaccount(account) txid = self.nodes[0].sendtoaddress(addr, 0.1) @@ -117,9 +93,7 @@ # getreceivedbyaddress should return same balance because of 0 # confirmations balance = self.nodes[1].getreceivedbyaccount(account) - if balance != balance_by_account: - raise AssertionError( - "Wrong balance returned by getreceivedbyaccount, %0.2f" % (balance)) + assert_equal(balance, balance_by_account) self.nodes[1].generate(10) self.sync_all() @@ -130,27 +104,19 @@ # getreceivedbyaddress should return updates balance balance = self.nodes[1].getreceivedbyaccount(account) - if balance != balance_by_account + Decimal("0.1"): - raise AssertionError( - "Wrong balance returned by getreceivedbyaccount, %0.2f" % (balance)) + assert_equal(balance, balance_by_account + Decimal("0.1")) # Create a new account named "mynewaccount" that has a 0 balance self.nodes[1].getaccountaddress("mynewaccount") - received_by_account_json = get_sub_array_from_array( - self.nodes[1].listreceivedbyaccount(0, True), {"account": "mynewaccount"}) - if len(received_by_account_json) == 0: - raise AssertionError("No accounts found in node") + received_by_account_json = [r for r in self.nodes[1].listreceivedbyaccount( + 0, True) if r["account"] == "mynewaccount"][0] # Test includeempty of listreceivedbyaccount - if received_by_account_json["amount"] != Decimal("0.0"): - raise AssertionError("Wrong balance returned by listreceivedbyaccount, %0.2f" % - (received_by_account_json["amount"])) + assert_equal(received_by_account_json["amount"], Decimal("0.0")) # Test getreceivedbyaccount for 0 amount accounts balance = self.nodes[1].getreceivedbyaccount("mynewaccount") - if balance != Decimal("0.0"): - raise AssertionError( - "Wrong balance returned by getreceivedbyaccount, %0.2f" % (balance)) + assert_equal(balance, Decimal("0.0")) if __name__ == '__main__':