"""Tests for eepsite static file server — TDD: tests before implementation.""" import pytest from pathlib import Path from i2p_apps.eepsite.server import EepsiteServer, EepsiteConfig class TestEepsiteConfig: def test_defaults(self): cfg = EepsiteConfig() assert cfg.host == "127.0.0.1" assert cfg.port == 7658 assert cfg.docroot.name == "docroot" def test_custom_port(self): cfg = EepsiteConfig(port=8080) assert cfg.port == 8080 def test_custom_docroot(self, tmp_path: Path): cfg = EepsiteConfig(docroot=tmp_path / "www") assert cfg.docroot == tmp_path / "www" class TestEepsiteServer: def test_creation(self, tmp_path: Path): docroot = tmp_path / "docroot" docroot.mkdir() cfg = EepsiteConfig(docroot=docroot) server = EepsiteServer(cfg) assert server is not None def test_resolve_path_basic(self, tmp_path: Path): docroot = tmp_path / "docroot" docroot.mkdir() (docroot / "index.html").write_text("

Hello

") cfg = EepsiteConfig(docroot=docroot) server = EepsiteServer(cfg) path = server.resolve_path("/index.html") assert path is not None assert path.name == "index.html" def test_resolve_path_default_index(self, tmp_path: Path): docroot = tmp_path / "docroot" docroot.mkdir() (docroot / "index.html").write_text("

Hello

") cfg = EepsiteConfig(docroot=docroot) server = EepsiteServer(cfg) path = server.resolve_path("/") assert path is not None assert path.name == "index.html" def test_resolve_path_missing(self, tmp_path: Path): docroot = tmp_path / "docroot" docroot.mkdir() cfg = EepsiteConfig(docroot=docroot) server = EepsiteServer(cfg) path = server.resolve_path("/nonexistent.html") assert path is None def test_resolve_path_traversal_blocked(self, tmp_path: Path): docroot = tmp_path / "docroot" docroot.mkdir() cfg = EepsiteConfig(docroot=docroot) server = EepsiteServer(cfg) path = server.resolve_path("/../../../etc/passwd") assert path is None def test_content_type(self, tmp_path: Path): docroot = tmp_path / "docroot" docroot.mkdir() cfg = EepsiteConfig(docroot=docroot) server = EepsiteServer(cfg) assert server.content_type("test.html") == "text/html" assert server.content_type("style.css") == "text/css" assert server.content_type("script.js") == "application/javascript" assert server.content_type("image.png") == "image/png" assert server.content_type("unknown.xyz") == "application/octet-stream"