A Python port of the Invisible Internet Project (I2P)
1"""Tests for HTTP bidirectional server — TDD: tests before implementation."""
2
3import pytest
4
5from i2p_apps.i2ptunnel.config import TunnelDefinition, TunnelType
6from i2p_apps.i2ptunnel.http_bidir import HTTPBidirServerTask
7
8
9class MockBidirSession:
10 def __init__(self):
11 self.destination = "BIDI" * 129
12
13 async def accept(self):
14 raise NotImplementedError
15
16 async def lookup(self, name):
17 return None
18
19 async def connect(self, dest):
20 raise NotImplementedError
21
22 async def close(self):
23 pass
24
25
26def _make_bidir_def(**kw):
27 defaults = dict(
28 name="bidir",
29 type=TunnelType.HTTPBIDIRSERVER,
30 target_host="127.0.0.1",
31 target_port=7658,
32 spoofed_host="mysite.i2p",
33 )
34 defaults.update(kw)
35 return TunnelDefinition(**defaults)
36
37
38class TestHTTPBidirServerTask:
39 def test_creation(self):
40 task = HTTPBidirServerTask(_make_bidir_def(), MockBidirSession())
41 assert task.tunnel_type == TunnelType.HTTPBIDIRSERVER
42
43 def test_is_server_type(self):
44 task = HTTPBidirServerTask(_make_bidir_def(), MockBidirSession())
45 assert task._config.type == TunnelType.HTTPBIDIRSERVER
46
47 def test_has_spoofed_host(self):
48 task = HTTPBidirServerTask(
49 _make_bidir_def(spoofed_host="site.i2p"), MockBidirSession()
50 )
51 assert task._spoofed_host == "site.i2p"