mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-02-21 14:24:09 +01:00
pytest: check for remote_addr
This commit is contained in:
parent
38e2abf68a
commit
6db97b4235
4 changed files with 31 additions and 3 deletions
|
@ -10,7 +10,7 @@ plugin = Plugin()
|
|||
|
||||
@plugin.hook('peer_connected')
|
||||
def on_connected(peer, plugin, **kwargs):
|
||||
print("peer_connected_logger_a {}".format(peer['id']))
|
||||
print(f"peer_connected_logger_a {peer['id']} {peer}")
|
||||
return {'result': 'continue'}
|
||||
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ plugin = Plugin()
|
|||
|
||||
@plugin.hook('peer_connected')
|
||||
def on_connected(peer, plugin, **kwargs):
|
||||
print("peer_connected_logger_b {}".format(peer['id']))
|
||||
print(f"peer_connected_logger_b {peer['id']} {peer}")
|
||||
return {'result': 'continue'}
|
||||
|
||||
|
||||
|
|
|
@ -48,6 +48,9 @@ def test_connect(node_factory):
|
|||
assert len(l1.rpc.listpeers()) == 1
|
||||
assert len(l2.rpc.listpeers()) == 1
|
||||
|
||||
if EXPERIMENTAL_FEATURES:
|
||||
l1.daemon.wait_for_log("Peer says it sees our address as: 127.0.0.1:[0-9]{5}")
|
||||
|
||||
# Should get reasonable error if unknown addr for peer.
|
||||
with pytest.raises(RpcError, match=r'Unable to connect, no address known'):
|
||||
l1.rpc.connect('032cf15d1ad9c4a08d26eab1918f732d8ef8fdc6abb9640bf3db174372c491304e')
|
||||
|
|
|
@ -10,7 +10,7 @@ from utils import (
|
|||
DEPRECATED_APIS, expected_peer_features, expected_node_features,
|
||||
expected_channel_features, account_balance,
|
||||
check_coin_moves, first_channel_id, EXPERIMENTAL_DUAL_FUND,
|
||||
mine_funding_to_announce
|
||||
mine_funding_to_announce, EXPERIMENTAL_FEATURES
|
||||
)
|
||||
|
||||
import ast
|
||||
|
@ -451,6 +451,31 @@ def test_plugin_connected_hook_chaining(node_factory):
|
|||
assert not l1.daemon.is_in_log(f"peer_connected_logger_b {l3id}")
|
||||
|
||||
|
||||
@unittest.skipIf(not EXPERIMENTAL_FEATURES, "BOLT1 remote_addr #917")
|
||||
def test_peer_connected_remote_addr(node_factory):
|
||||
"""This tests the optional tlv `remote_addr` being passed to a plugin.
|
||||
|
||||
The optional tlv `remote_addr` should only be visible to the initiator l1.
|
||||
"""
|
||||
l1, l2 = node_factory.get_nodes(2, opts={'plugin': os.path.join(os.getcwd(), 'tests/plugins/peer_connected_logger_a.py')})
|
||||
l1id = l1.info['id']
|
||||
l2id = l2.info['id']
|
||||
|
||||
l1.connect(l2)
|
||||
l1log = l1.daemon.wait_for_log(f"peer_connected_logger_a {l2id}")
|
||||
l2log = l2.daemon.wait_for_log(f"peer_connected_logger_a {l1id}")
|
||||
|
||||
# the log entries are followed by the peer_connected payload as dict {} like:
|
||||
# {'id': '022d223...', 'direction': 'out', 'addr': '127.0.0.1:35289',
|
||||
# 'remote_addr': '127.0.0.1:59582', 'features': '8808226aa2'}
|
||||
l1payload = eval(l1log[l1log.find('{'):])
|
||||
l2payload = eval(l2log[l2log.find('{'):])
|
||||
|
||||
# check that l1 sees its remote_addr as l2 sees l1
|
||||
assert(l1payload['remote_addr'] == l2payload['addr'])
|
||||
assert(not l2payload.get('remote_addr')) # l2 can't see a remote_addr
|
||||
|
||||
|
||||
def test_async_rpcmethod(node_factory, executor):
|
||||
"""This tests the async rpcmethods.
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue