# 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 "