A Python port of the Invisible Internet Project (I2P)
at main 69 lines 2.5 kB view raw
1"""Tests for tunnel dispatcher.""" 2 3import os 4 5import pytest 6 7 8class TestTunnelDispatcher: 9 def test_construct(self): 10 from i2p_tunnel.dispatcher import TunnelDispatcher 11 d = TunnelDispatcher() 12 assert d.inbound_count() == 0 13 assert d.outbound_count() == 0 14 15 def test_register_inbound(self): 16 from i2p_tunnel.dispatcher import TunnelDispatcher 17 from i2p_data.tunnel import TunnelId 18 d = TunnelDispatcher() 19 d.register_inbound(TunnelId(100), gateway=os.urandom(32)) 20 assert d.inbound_count() == 1 21 22 def test_register_outbound(self): 23 from i2p_tunnel.dispatcher import TunnelDispatcher 24 from i2p_data.tunnel import TunnelId 25 d = TunnelDispatcher() 26 d.register_outbound(TunnelId(200), gateway=os.urandom(32)) 27 assert d.outbound_count() == 1 28 29 def test_lookup_inbound(self): 30 from i2p_tunnel.dispatcher import TunnelDispatcher 31 from i2p_data.tunnel import TunnelId 32 d = TunnelDispatcher() 33 gw = os.urandom(32) 34 d.register_inbound(TunnelId(100), gateway=gw) 35 info = d.lookup_inbound(TunnelId(100)) 36 assert info is not None 37 assert info["gateway"] == gw 38 39 def test_lookup_missing(self): 40 from i2p_tunnel.dispatcher import TunnelDispatcher 41 from i2p_data.tunnel import TunnelId 42 d = TunnelDispatcher() 43 assert d.lookup_inbound(TunnelId(999)) is None 44 45 def test_unregister(self): 46 from i2p_tunnel.dispatcher import TunnelDispatcher 47 from i2p_data.tunnel import TunnelId 48 d = TunnelDispatcher() 49 d.register_inbound(TunnelId(50), gateway=os.urandom(32)) 50 d.unregister_inbound(TunnelId(50)) 51 assert d.inbound_count() == 0 52 53 def test_dispatch_message(self): 54 from i2p_tunnel.dispatcher import TunnelDispatcher 55 from i2p_data.tunnel import TunnelId 56 d = TunnelDispatcher() 57 delivered = [] 58 d.register_inbound(TunnelId(10), gateway=os.urandom(32), 59 handler=lambda data: delivered.append(data)) 60 d.dispatch_inbound(TunnelId(10), b"test message") 61 assert len(delivered) == 1 62 assert delivered[0] == b"test message" 63 64 def test_dispatch_unknown_tunnel(self): 65 from i2p_tunnel.dispatcher import TunnelDispatcher 66 from i2p_data.tunnel import TunnelId 67 d = TunnelDispatcher() 68 # Should not raise, just drop 69 d.dispatch_inbound(TunnelId(999), b"dropped")