diff --git a/tests/test_plugin.py b/tests/test_plugin.py index cbe43cdcd..b6cc95149 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -708,3 +708,34 @@ def test_plugin_deprecated_relpath(node_factory): assert l1.daemon.is_in_log('DEPRECATED WARNING.*plugin={}' .format(os.path.join(os.getcwd(), 'tests/plugins/millisatoshis.py'))) + + +def test_sendpay_notifications(node_factory, bitcoind): + """ test 'sendpay_success' and 'sendpay_failure' notifications + """ + amount = 10**8 + opts = [{'plugin': os.path.join(os.getcwd(), 'tests/plugins/sendpay_notifications.py')}, + {}, + {'may_reconnect': False}] + l1, l2, l3 = node_factory.line_graph(3, opts=opts, wait_for_announce=True) + chanid23 = l2.get_channel_scid(l3) + + payment_hash1 = l3.rpc.invoice(amount, "first", "desc")['payment_hash'] + payment_hash2 = l3.rpc.invoice(amount, "second", "desc")['payment_hash'] + route = l1.rpc.getroute(l3.info['id'], amount, 1)['route'] + + l1.rpc.sendpay(route, payment_hash1) + response1 = l1.rpc.waitsendpay(payment_hash1) + + l2.rpc.close(chanid23, 1) + + l1.rpc.sendpay(route, payment_hash2) + with pytest.raises(RpcError) as err: + l1.rpc.waitsendpay(payment_hash2) + + results = l1.rpc.call('listsendpays_plugin') + assert len(results['sendpay_success']) == 1 + assert len(results['sendpay_failure']) == 1 + + assert results['sendpay_success'][0] == response1 + assert results['sendpay_failure'][0] == err.value.error