diff --git a/test/functional/wallet_balance.py b/test/functional/wallet_balance.py index 2e159744a2..be457d4480 100755 --- a/test/functional/wallet_balance.py +++ b/test/functional/wallet_balance.py @@ -264,5 +264,37 @@ class WalletTest(BitcoinTestFramework): assert_equal(self.nodes[0].getbalance(minconf=0)['bitcoin'], total_amount + 1) # The reorg recovered our fee of 1 coin + # Balances of assets + for blind in [True, False]: + self.log.info("Testing {} issued asset balances".format("blinded" if blind else "unblinded")) + asset = self.nodes[0].issueasset(100, 0, blind)["asset"] + + # Balances with unconfirmed issuance. + # They are indicated as confirmed because they are sent by the RPC and thus "trusted". + walletinfo = self.nodes[0].getwalletinfo() + assert_equal(walletinfo["balance"].get(asset, 0), Decimal('100')) + assert_equal(walletinfo["unconfirmed_balance"].get(asset, 0), Decimal('0')) + + # Balances with confirmed issuance. + self.nodes[0].generatetoaddress(1, ADDRESS_WATCHONLY) + walletinfo = self.nodes[0].getwalletinfo() + assert_equal(walletinfo["balance"].get(asset, 0), Decimal('100')) + assert_equal(walletinfo["unconfirmed_balance"].get(asset, 0), Decimal('0')) + + # Sending coins to other wallet. + self.nodes[0].sendtoaddress(address=self.nodes[1].getnewaddress(), amount="50", assetlabel=asset) + self.sync_all() + + # Balances with unconfirmed receive + walletinfo = self.nodes[1].getwalletinfo() + assert_equal(walletinfo["balance"].get(asset, 0), Decimal('0')) + assert_equal(walletinfo["unconfirmed_balance"].get(asset, 0), Decimal('50')) + + # Balances with confirmed receive + self.nodes[1].generatetoaddress(1, ADDRESS_WATCHONLY) + walletinfo = self.nodes[1].getwalletinfo() + assert_equal(walletinfo["balance"].get(asset, 0), Decimal('50')) + assert_equal(walletinfo["unconfirmed_balance"].get(asset, 0), Decimal('0')) + if __name__ == '__main__': WalletTest().main()