lbry-sdk/lbry/tests/integration/test_transaction_commands.py
2019-12-12 13:25:27 -05:00

69 lines
2.8 KiB
Python

from lbry.testcase import CommandTestCase
class TransactionCommandsTestCase(CommandTestCase):
async def test_transaction_show(self):
# local tx
result = await self.out(self.daemon.jsonrpc_account_send(
'5.0', await self.daemon.jsonrpc_address_unused(self.account.id)
))
await self.confirm_tx(result['txid'])
tx = await self.daemon.jsonrpc_transaction_show(result['txid'])
self.assertEqual(tx.id, result['txid'])
# someone's tx
change_address = await self.blockchain.get_raw_change_address()
sendtxid = await self.blockchain.send_to_address(change_address, 10)
tx = await self.daemon.jsonrpc_transaction_show(sendtxid)
self.assertEqual(tx.id, sendtxid)
self.assertEqual(tx.height, -1)
await self.generate(1)
tx = await self.daemon.jsonrpc_transaction_show(sendtxid)
self.assertEqual(tx.height, self.ledger.headers.height)
# inexistent
result = await self.daemon.jsonrpc_transaction_show('0'*64)
self.assertFalse(result['success'])
async def test_utxo_release(self):
sendtxid = await self.blockchain.send_to_address(
await self.account.receiving.get_or_create_usable_address(), 1
)
await self.confirm_tx(sendtxid)
await self.assertBalance(self.account, '11.0')
await self.ledger.reserve_outputs(await self.account.get_utxos())
await self.assertBalance(self.account, '0.0')
await self.daemon.jsonrpc_utxo_release()
await self.assertBalance(self.account, '11.0')
class TestSegwit(CommandTestCase):
VERBOSITY = 10
async def test_segwit(self):
p2sh_address = await self.blockchain.get_new_address(self.blockchain.P2SH_SEGWIT_ADDRESS)
bech32_address = await self.blockchain.get_new_address(self.blockchain.BECH32_ADDRESS)
p2sh_tx1 = await self.blockchain.send_to_address(p2sh_address, '1.0')
p2sh_tx2 = await self.blockchain.send_to_address(p2sh_address, '1.0')
bech32_tx1 = await self.blockchain.send_to_address(bech32_address, '1.0')
bech32_tx2 = await self.blockchain.send_to_address(bech32_address, '1.0')
await self.generate(1)
address = (await self.account.receiving.get_addresses(limit=1, only_usable=True))[0]
tx = await self.blockchain.create_raw_transaction([
{"txid": p2sh_tx1, "vout": 0},
{"txid": p2sh_tx2, "vout": 0},
{"txid": bech32_tx1, "vout": 0},
{"txid": bech32_tx2, "vout": 0},
], [{address: '3.5'}]
)
tx = await self.blockchain.sign_raw_transaction_with_wallet(tx)
txid = await self.blockchain.send_raw_transaction(tx)
await self.on_transaction_id(txid)
await self.assertBalance(self.account, '13.5')