# SPDX-License-Identifier: 0BSD
"""Fuzz and security-style tests for discovered interface filtering and matching."""
import json
import pytest
from hypothesis import HealthCheck, given, settings
from hypothesis import strategies as st
from meshchatx.meshchat import ReticulumMeshChat
def _iface_dict(**kwargs):
base = {
"name": "tcp-client",
"type": "TCPClientInterface",
"reachable_on": "10.0.0.1",
"port": 4242,
}
base.update(kwargs)
return base
@pytest.mark.parametrize(
"name,network_name,ifac_netname",
[
("", "n", "k"),
("n", "
", "k"),
("a" * 50_000, "b", "c"),
("javascript:void(0)", "x", "y"),
("'; DROP TABLE x; --", "1", "2"),
("\x00\x01hidden", "v", "w"),
("peer-\u202e\u2066evil", "10.0.0.2", "4242"),
],
)
def test_discovery_filter_candidates_preserves_strings(
name, network_name, ifac_netname
):
iface = _iface_dict(
name=name,
network_name=network_name,
ifac_netname=ifac_netname,
)
c = ReticulumMeshChat.discovery_filter_candidates(iface)
assert isinstance(c, list)
assert all(isinstance(x, str) for x in c)
blob = "\n".join(c)
assert name in blob or network_name in blob or ifac_netname in blob
def test_filter_discovered_interfaces_long_names_and_scripts():
ifaces = [
_iface_dict(name="", reachable_on="10.0.0.1"),
_iface_dict(name="ok-peer", reachable_on="10.0.0.2"),
]
out = ReticulumMeshChat.filter_discovered_interfaces(ifaces, "10.0.*", "")
assert len(out) == 2
raw = json.dumps(out)
assert "