"""Tests for IRC client tunnel — TDD: tests before implementation.""" import pytest from i2p_apps.i2ptunnel.config import TunnelDefinition, TunnelType from i2p_apps.i2ptunnel.irc_client import IRCClientTask class MockIRCSession: def __init__(self): self.destination = "IRC" * 172 async def lookup(self, name): return "R" * 516 async def connect(self, dest): import asyncio r = asyncio.StreamReader() r.feed_eof() class FakeWriter: def write(self, d): pass async def drain(self): pass def close(self): pass async def wait_closed(self): pass @property def transport(self): return type('T', (), {'is_closing': lambda: False})() return r, FakeWriter() async def close(self): pass def _make_irc_def(**kw): defaults = dict( name="irc", type=TunnelType.IRCCLIENT, listen_port=6668, target_destination="irc.postman.i2p", ) defaults.update(kw) return TunnelDefinition(**defaults) class TestIRCClientTask: def test_creation(self): task = IRCClientTask(_make_irc_def(), MockIRCSession()) assert task.tunnel_type == TunnelType.IRCCLIENT def test_multi_dest_parsing(self): task = IRCClientTask( _make_irc_def(target_destination="irc1.i2p,irc2.i2p"), MockIRCSession(), ) assert len(task._destinations) == 2 def test_has_filtering(self): """IRC client task should apply protocol filtering.""" task = IRCClientTask(_make_irc_def(), MockIRCSession()) assert task._uses_irc_filter is True