From 1d75a709958adefb77e03f3449d0953e19e2a9fa Mon Sep 17 00:00:00 2001 From: Christian Decker Date: Mon, 26 Nov 2018 19:56:44 +0100 Subject: [PATCH] pytest: Add a test for the JSON-RPC passthrough Tests JSON-RPC registration, as well as success and failures. Signed-off-by: Christian Decker --- tests/test_plugin.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/test_plugin.py b/tests/test_plugin.py index 85148741d..1a9f46eaf 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -1,5 +1,7 @@ from fixtures import * # noqa: F401,F403 +from lightning import RpcError +import pytest import subprocess @@ -27,3 +29,25 @@ def test_option_passthrough(node_factory): # option didn't exist n = node_factory.get_node(options={'plugin': plugin_path, 'greeting': 'Mars'}) n.stop() + + +def test_rpc_passthrough(node_factory): + """Starting with a plugin exposes its RPC methods. + + First check that the RPC method appears in the help output and + then try to call it. + + """ + plugin_path = 'contrib/plugins/helloworld.py' + n = node_factory.get_node(options={'plugin': plugin_path, 'greeting': 'Mars'}) + + # Make sure that the 'hello' command that the helloworld.py plugin + # has registered is available. + cmd = [hlp for hlp in n.rpc.help()['help'] if 'hello' in hlp['command']] + assert(len(cmd) == 1) + + # Now try to call it and see what it returns: + greet = n.rpc.hello(name='Sun') + assert(greet == "Hello Sun") + with pytest.raises(RpcError): + n.rpc.fail()