pyln-client: send proper JSONRPC2 errors on failed call

Changelog-Added: pyln now sends proper error on bad calls to plugin methods

Co-Authored-By: Sergi Delgado Segura <sergi.delgado.s@gmail.com>
This commit is contained in:
darosior 2020-04-10 00:47:01 +02:00 committed by Rusty Russell
parent 813356b88c
commit af76bce0fa
3 changed files with 17 additions and 3 deletions

View File

@ -19,6 +19,12 @@ def hello(plugin, name="world"):
return s
@plugin.method("bye")
def bye(plugin, name, **kwargs):
"""This methods requires {name} to be set by the caller !"""
return "Bye {}".format(name)
@plugin.init()
def init(options, configuration, plugin, **kwargs):
plugin.log("Plugin helloworld.py initialized")

View File

@ -83,9 +83,12 @@ class Request(dict):
self._write_result({
'jsonrpc': '2.0',
'id': self.id,
"error": "Error while processing {method}: {exc}".format(
method=self.method, exc=repr(exc)
),
"error": {
"code": -32600, # "Invalid Request"
"message": "Error while processing {method}: {exc}"
.format(method=self.method, exc=str(exc)),
# 'data' field "may be omitted."
},
})
def _write_result(self, result):

View File

@ -180,6 +180,11 @@ def test_rpc_passthrough(node_factory):
with pytest.raises(RpcError):
n.rpc.fail()
# Try to call a method without enough arguments
with pytest.raises(RpcError, match="processing bye: missing a required"
" argument"):
n.rpc.bye()
def test_plugin_dir(node_factory):
"""--plugin-dir works"""