Browse Source

failure_onion: a test that only ensures lightningd doesn't crash.

ppa-prep
fiatjaf 4 years ago
committed by neil saitug
parent
commit
c5aa2ea911
  1. 29
      tests/plugins/htlc_accepted-failonion.py
  2. 11
      tests/test_plugin.py

29
tests/plugins/htlc_accepted-failonion.py

@ -0,0 +1,29 @@
#!/usr/bin/env python3
"""A simply plugin that fails HTLCs with a meaningless onion.
"""
from pyln.client import Plugin
plugin = Plugin()
@plugin.hook("htlc_accepted")
def on_htlc_accepted(htlc, onion, plugin, **kwargs):
print('returning failonion', plugin.failonion)
return {"result": "fail", "failure_onion": plugin.failonion}
@plugin.method("setfailonion")
def setfailonion(plugin, onion):
"""Sets the failure_onion to return when receiving an incoming HTLC.
"""
plugin.failonion = onion
@plugin.init()
def on_init(**kwargs):
plugin.failonion = None
plugin.run()

11
tests/test_plugin.py

@ -2135,3 +2135,14 @@ def test_hook_dep_stable(node_factory):
l2.daemon.wait_for_log(r"dep_d.py: htlc_accepted called")
l2.daemon.wait_for_log(r"dep_e.py: htlc_accepted called")
l2.daemon.wait_for_log(r"dep_b.py: htlc_accepted called")
def test_htlc_accepted_hook_failonion(node_factory):
plugin = os.path.join(os.path.dirname(__file__), 'plugins/htlc_accepted-failonion.py')
l1, l2 = node_factory.line_graph(2, opts=[{}, {'plugin': plugin}])
# an invalid onion
l2.rpc.setfailonion('0' * (292 * 2))
inv = l2.rpc.invoice(42, 'failonion000', '')['bolt11']
with pytest.raises(RpcError):
l1.rpc.pay(inv)

Loading…
Cancel
Save