mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-03-03 10:46:58 +01:00
pytest: test that we translate to and from Millisatoshi on plugin RPC.
We don't, but we should, like we do for normal RPC. However, I chose to use function annotations, rather than names-ending-in-'msat' because it's more Pythony. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
1982c73ebc
commit
c7316d7ba2
2 changed files with 42 additions and 1 deletions
23
tests/plugins/millisatoshis.py
Executable file
23
tests/plugins/millisatoshis.py
Executable file
|
@ -0,0 +1,23 @@
|
|||
#!/usr/bin/env python3
|
||||
from lightning import Plugin, Millisatoshi
|
||||
|
||||
|
||||
plugin = Plugin(autopatch=True)
|
||||
|
||||
|
||||
@plugin.method("echo")
|
||||
def echo(plugin, msat: Millisatoshi, not_an_msat):
|
||||
plugin.log("got echo for {} {} (types {} and {})"
|
||||
.format(msat, not_an_msat, type(msat), type(not_an_msat)))
|
||||
if not isinstance(msat, Millisatoshi):
|
||||
raise TypeError("msat must be Millisatoshi not {}".format(type(msat)))
|
||||
if isinstance(not_an_msat, Millisatoshi):
|
||||
raise TypeError("not_an_msat must not be Millisatoshi")
|
||||
plugin.log("got echo for {} (type {})".format(msat, type(msat)))
|
||||
if not isinstance(msat, Millisatoshi):
|
||||
raise TypeError("msat must be Millisatoshi not {}".format(type(msat)))
|
||||
plugin.log("Returning {}".format(msat))
|
||||
return {'echo_msat': msat}
|
||||
|
||||
|
||||
plugin.run()
|
|
@ -1,6 +1,6 @@
|
|||
from collections import OrderedDict
|
||||
from fixtures import * # noqa: F401,F403
|
||||
from lightning import RpcError
|
||||
from lightning import RpcError, Millisatoshi
|
||||
from utils import only_one
|
||||
|
||||
import pytest
|
||||
|
@ -34,6 +34,24 @@ def test_option_passthrough(node_factory):
|
|||
n.stop()
|
||||
|
||||
|
||||
@pytest.mark.xfail(strict=True)
|
||||
def test_millisatoshi_passthrough(node_factory):
|
||||
""" Ensure that Millisatoshi arguments and return work.
|
||||
"""
|
||||
plugin_path = 'tests/plugins/millisatoshis.py'
|
||||
n = node_factory.get_node(options={'plugin': plugin_path, 'log-level': 'io'})
|
||||
|
||||
# By keyword
|
||||
ret = n.rpc.call('echo', {'msat': Millisatoshi(17), 'not_an_msat': '22msat'})['echo_msat']
|
||||
assert type(ret) == Millisatoshi
|
||||
assert ret == Millisatoshi(17)
|
||||
|
||||
# By position
|
||||
ret = n.rpc.call('echo', [Millisatoshi(18), '22msat'])['echo_msat']
|
||||
assert type(ret) == Millisatoshi
|
||||
assert ret == Millisatoshi(18)
|
||||
|
||||
|
||||
def test_rpc_passthrough(node_factory):
|
||||
"""Starting with a plugin exposes its RPC methods.
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue