1import hashlib2import sys3from pathlib import Path45import pytest67sys.path.insert(0, str(Path(__file__).parents[1]))8from media import incoming_media # noqa: E40291011class FakeRPC:12 def __init__(self, data: bytes):13 self.data = data14 self.paths = []1516 async def download(self, path):17 self.paths.append(path)18 return self.data, "text/plain"19202122async def test_incoming_media_caches_same_relay_content(tmp_path, monkeypatch):23 monkeypatch.setenv("HERMES_HOME", str(tmp_path))24 data = b"tinyagent attachment\n"25 digest = hashlib.sha256(data).hexdigest()26 rpc = FakeRPC(data)27 urls, types = await incoming_media(28 rpc,29 {"tags": [["imeta", f"url http://tiny:7447/media/{digest}", "m text/plain", "filename note.txt", f"x {digest}", f"size {len(data)}"]]},30 "http://tiny:7447",31 )32 assert len(urls) == 1 and Path(urls[0]).is_file()33 assert types == ["text/plain"]34 assert rpc.paths == [f"/media/{digest}"]3536373839async def test_incoming_media_rejects_external_or_non_media_url(url, tmp_path, monkeypatch):40 monkeypatch.setenv("HERMES_HOME", str(tmp_path))41 rpc = FakeRPC(b"bad")42 urls, _ = await incoming_media(rpc, {"tags": [["imeta", "url " + url]]}, "http://tiny:7447")43 assert urls == [] and rpc.paths == []44454647async def test_incoming_media_rejects_false_hash_and_size(tmp_path, monkeypatch):48 monkeypatch.setenv("HERMES_HOME", str(tmp_path))49 data = b"actual"50 digest = hashlib.sha256(data).hexdigest()51 rpc = FakeRPC(data)52 urls, _ = await incoming_media(53 rpc,54 {"tags": [["imeta", f"url /media/{digest}", f"x {'0' * 64}", "size 999"]]},55 "http://tiny:7447",56 )57 assert urls == []585960def test_tenant_media_paths_remain_relative_to_helper_base():61 from media import _media_path62 digest = 'a' * 6463 assert _media_path(f'https://tiny/r/team/media/{digest}', 'https://tiny/r/team') == (f'/media/{digest}', digest)64 assert _media_path(f'https://tiny/r/other/media/{digest}', 'https://tiny/r/team') is None65 assert _media_path(f'https://tiny/media/{digest}?token=no', 'https://tiny') is None66 assert _media_path(f'/media/{digest}#fragment', 'https://tiny') is None