Skip to content

Commit 89235b4

Browse files
committed
xpay: test payment with blocks out of sync
Changelog-None Signed-off-by: Lagrang3 <lagrang3@protonmail.com>
1 parent e60fd02 commit 89235b4

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

tests/test_xpay.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1018,3 +1018,37 @@ def test_xpay_bip353(node_factory):
10181018

10191019
node_factory.join_nodes([l2, l1])
10201020
l2.rpc.xpay('fake@fake.com', 100)
1021+
1022+
1023+
def test_blockheight_mismatch(node_factory, bitcoind):
1024+
"""Test that we can send a payment even if not caught up with the chain.
1025+
1026+
Since CLTV computations are based on headers and not our own sync height, the
1027+
recipient should still be happy with the parameters we chose.
1028+
1029+
Stolen from pay
1030+
"""
1031+
1032+
send, direct, recv = node_factory.line_graph(3, wait_for_announce=True)
1033+
sync_blockheight(bitcoind, [send, recv])
1034+
1035+
# Pin `send` at the current height. by not returning the next
1036+
# block. This error is special-cased not to count as the
1037+
# backend failing since it is used to poll for the next block.
1038+
def mock_getblock(req):
1039+
return {
1040+
"id": req["id"],
1041+
"error": {"code": -8, "message": "Block height out of range"},
1042+
}
1043+
1044+
send.daemon.rpcproxy.mock_rpc("getblock", mock_getblock)
1045+
bitcoind.generate_block(100)
1046+
1047+
sync_blockheight(bitcoind, [recv])
1048+
1049+
inv = recv.rpc.invoice(42, "lbl", "desc")["bolt11"]
1050+
send.rpc.xpay(inv)
1051+
1052+
# Test a direct payment as well.
1053+
inv = direct.rpc.invoice(13, "lbl", "desc")["bolt11"]
1054+
send.rpc.xpay(inv)

0 commit comments

Comments
 (0)