From af44c846cc53d31c32a25826af596340053448e7 Mon Sep 17 00:00:00 2001 From: SomberNight Date: Thu, 22 Apr 2021 17:13:56 +0200 Subject: [PATCH] tests: add test for payto command --- electrum/tests/test_commands.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/electrum/tests/test_commands.py b/electrum/tests/test_commands.py index f62c87a86..05f3c7586 100644 --- a/electrum/tests/test_commands.py +++ b/electrum/tests/test_commands.py @@ -6,7 +6,9 @@ from electrum.util import create_and_start_event_loop from electrum.commands import Commands, eval_bool from electrum import storage, wallet from electrum.wallet import restore_wallet_from_text +from electrum.address_synchronizer import TX_HEIGHT_UNCONFIRMED from electrum.simple_config import SimpleConfig +from electrum.transaction import Transaction, TxOutput, tx_from_any from . import TestCaseForTestnet, ElectrumTestCase @@ -217,6 +219,34 @@ class TestCommandsTestnet(TestCaseForTestnet): self.assertEqual("p2wpkh:cQAj4WGf1socCPCJNMjXYCJ8Bs5JUAk5pbDr4ris44QdgAXcV24S", cmds._run('getprivatekeyforpath', ("m/5h/100000/88h/7",), wallet=wallet)) + @mock.patch.object(wallet.Abstract_Wallet, 'save_db') + def test_payto(self, mock_save_db): + wallet = restore_wallet_from_text('disagree rug lemon bean unaware square alone beach tennis exhibit fix mimic', + gap_limit=2, + path='if_this_exists_mocking_failed_648151893', + config=self.config)['wallet'] + # bootstrap wallet + funding_tx = Transaction('0200000000010165806607dd458280cb57bf64a16cf4be85d053145227b98c28932e953076b8e20000000000fdffffff02ac150700000000001600147e3ddfe6232e448a8390f3073c7a3b2044fd17eb102908000000000016001427fbe3707bc57e5bb63d6f15733ec88626d8188a02473044022049ce9efbab88808720aa563e2d9bc40226389ab459c4390ea3e89465665d593502206c1c7c30a2f640af1e463e5107ee4cfc0ee22664cfae3f2606a95303b54cdef80121026269e54d06f7070c1f967eb2874ba60de550dfc327a945c98eb773672d9411fd77181e00') + funding_txid = funding_tx.txid() + self.assertEqual('ede61d39e501d65ccf34e6300da439419c43393f793bb9a8a4b06b2d0d80a8a0', funding_txid) + wallet.receive_tx_callback(funding_txid, funding_tx, TX_HEIGHT_UNCONFIRMED) + + cmds = Commands(config=self.config) + tx_str = cmds._run( + 'payto', (), + destination="tb1qsyzgpwa0vg2940u5t6l97etuvedr5dejpf9tdy", + amount="0.00123456", + feerate=50, + locktime=1972344, + wallet=wallet) + + tx = tx_from_any(tx_str) + self.assertEqual(2, len(tx.outputs())) + txout = TxOutput.from_address_and_value("tb1qsyzgpwa0vg2940u5t6l97etuvedr5dejpf9tdy", 123456) + self.assertTrue(txout in tx.outputs()) + self.assertEqual("02000000000101a0a8800d2d6bb0a4a8b93b793f39439c4139a40d30e634cf5cd601e5391de6ed0100000000fdffffff0240e2010000000000160014810480bbaf62145abf945ebe5f657c665a3a3732462b060000000000160014a5103285eb519f826520a9f7d3227e1eaa7ec5f802473044022057a6f4b1ec63336c7d0ba233e785ec9f2e2d9c2d67617a50e069f4498ee6a3b7022032fb331e0bef06f46e9cb77bfe94413142653c4912516835e941fa7f170c1a53012103001b55f19541faaf7e6d57dd1bdb9fdc37725fc500e12f2418cc11e0aed4154978181e00", + tx_str) + @mock.patch.object(wallet.Abstract_Wallet, 'save_db') def test_signtransaction_without_wallet(self, mock_save_db): dummy_wallet = restore_wallet_from_text(