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:
Rusty Russell
2019-02-25 14:45:56 +10:30
parent 1982c73ebc
commit c7316d7ba2
2 changed files with 42 additions and 1 deletions

View File

@@ -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.