A Python port of the Invisible Internet Project (I2P)
at main 65 lines 1.6 kB view raw
1"""Tests for Banlist.""" 2 3import time 4 5from i2p_router.banlist import Banlist 6 7 8def test_ban_and_check(): 9 bl = Banlist() 10 peer = b"\x01" * 32 11 bl.banlist_router(peer, "test") 12 assert bl.is_banlisted(peer) 13 14 15def test_ban_expires(): 16 bl = Banlist() 17 peer = b"\x02" * 32 18 bl.banlist_router(peer, "test", duration_ms=1) 19 time.sleep(0.01) 20 assert not bl.is_banlisted(peer) 21 22 23def test_permanent_ban(): 24 bl = Banlist() 25 peer = b"\x03" * 32 26 bl.banlist_router_forever(peer, "bad peer") 27 assert bl.is_banlisted(peer) 28 entry = bl.get_entry(peer) 29 assert entry is not None 30 assert entry.expiration_ms == 0 31 32 33def test_transport_specific_ban(): 34 bl = Banlist() 35 peer = b"\x04" * 32 36 bl.banlist_router_transport(peer, "NTCP2", "timeout", duration_ms=60000) 37 assert bl.is_banlisted_transport(peer, "NTCP2") 38 assert not bl.is_banlisted_transport(peer, "SSU2") 39 assert not bl.is_banlisted(peer) # not globally banned 40 41 42def test_unban(): 43 bl = Banlist() 44 peer = b"\x05" * 32 45 bl.banlist_router(peer, "test") 46 bl.unbanlist_router(peer) 47 assert not bl.is_banlisted(peer) 48 49 50def test_cleanup_removes_expired(): 51 bl = Banlist() 52 bl.banlist_router(b"\x06" * 32, "a", duration_ms=1) 53 bl.banlist_router(b"\x07" * 32, "b", duration_ms=3600000) 54 time.sleep(0.01) 55 removed = bl.cleanup_expired() 56 assert removed == 1 57 assert bl.count == 1 58 59 60def test_global_ban_covers_transport(): 61 bl = Banlist() 62 peer = b"\x08" * 32 63 bl.banlist_router(peer, "global ban") 64 assert bl.is_banlisted_transport(peer, "NTCP2") 65 assert bl.is_banlisted_transport(peer, "SSU2")