tests: test_lnpeer: extend close_upfront_shutdown_script
- make some checks more explicit, and - explicitly test that closing tx pays to script specified by Bob using feature
This commit is contained in:
@@ -24,6 +24,7 @@ from electrum.network import Network
|
|||||||
from electrum import simple_config, lnutil
|
from electrum import simple_config, lnutil
|
||||||
from electrum.lnaddr import lnencode, LnAddr, lndecode
|
from electrum.lnaddr import lnencode, LnAddr, lndecode
|
||||||
from electrum.bitcoin import COIN, sha256
|
from electrum.bitcoin import COIN, sha256
|
||||||
|
from electrum.transaction import Transaction
|
||||||
from electrum.util import NetworkRetryManager, bfh, OldTaskGroup, EventListener, InvoiceError
|
from electrum.util import NetworkRetryManager, bfh, OldTaskGroup, EventListener, InvoiceError
|
||||||
from electrum.lnpeer import Peer
|
from electrum.lnpeer import Peer
|
||||||
from electrum.lnutil import LNPeerAddr, Keypair, privkey_to_pubkey
|
from electrum.lnutil import LNPeerAddr, Keypair, privkey_to_pubkey
|
||||||
@@ -1230,7 +1231,7 @@ class TestPeerDirect(TestPeer):
|
|||||||
await util.wait_for2(p2.initialized, 1)
|
await util.wait_for2(p2.initialized, 1)
|
||||||
# bob closes channel with different shutdown script
|
# bob closes channel with different shutdown script
|
||||||
await p1.close_channel(alice_channel.channel_id)
|
await p1.close_channel(alice_channel.channel_id)
|
||||||
gath.cancel()
|
assert False, "p1.close_channel should have raised above!"
|
||||||
|
|
||||||
async def main_loop(peer):
|
async def main_loop(peer):
|
||||||
async with peer.taskgroup as group:
|
async with peer.taskgroup as group:
|
||||||
@@ -1243,7 +1244,11 @@ class TestPeerDirect(TestPeer):
|
|||||||
|
|
||||||
with self.assertRaises(GracefulDisconnect):
|
with self.assertRaises(GracefulDisconnect):
|
||||||
await test()
|
await test()
|
||||||
|
# check that neither party broadcast a closing tx (as it was not even signed)
|
||||||
|
self.assertEqual(0, q1.qsize())
|
||||||
|
self.assertEqual(0, q2.qsize())
|
||||||
|
|
||||||
|
# -- new scenario:
|
||||||
# bob sends the same upfront_shutdown_script has he announced
|
# bob sends the same upfront_shutdown_script has he announced
|
||||||
alice_channel.config[HTLCOwner.REMOTE].upfront_shutdown_script = bob_uss
|
alice_channel.config[HTLCOwner.REMOTE].upfront_shutdown_script = bob_uss
|
||||||
bob_channel.config[HTLCOwner.LOCAL].upfront_shutdown_script = bob_uss
|
bob_channel.config[HTLCOwner.LOCAL].upfront_shutdown_script = bob_uss
|
||||||
@@ -1273,6 +1278,12 @@ class TestPeerDirect(TestPeer):
|
|||||||
with self.assertRaises(asyncio.CancelledError):
|
with self.assertRaises(asyncio.CancelledError):
|
||||||
await test()
|
await test()
|
||||||
|
|
||||||
|
# check if p1 has broadcast the closing tx, and if it pays to Bob's uss
|
||||||
|
self.assertEqual(1, q1.qsize())
|
||||||
|
closing_tx = q1.get_nowait() # type: Transaction
|
||||||
|
self.assertEqual(2, len(closing_tx.outputs()))
|
||||||
|
self.assertEqual(1, len(closing_tx.get_output_idxs_from_address(bob_uss_addr)))
|
||||||
|
|
||||||
async def test_channel_usage_after_closing(self):
|
async def test_channel_usage_after_closing(self):
|
||||||
alice_channel, bob_channel = create_test_channels()
|
alice_channel, bob_channel = create_test_channels()
|
||||||
p1, p2, w1, w2, q1, q2 = self.prepare_peers(alice_channel, bob_channel)
|
p1, p2, w1, w2, q1, q2 = self.prepare_peers(alice_channel, bob_channel)
|
||||||
|
|||||||
Reference in New Issue
Block a user