Files

69 lines
3.0 KiB
Python
Raw Permalink Normal View History

2026-08-01 10:28:22 +05:30
import os
import tempfile
import pytest
from adclaw.agents.tools.shared_memory import make_read_shared_file, make_write_shared_file, make_list_shared_files
class TestSharedMemory:
def setup_method(self):
self.tmpdir = tempfile.mkdtemp()
self.shared_root = os.path.join(self.tmpdir, "shared")
os.makedirs(os.path.join(self.shared_root, "researcher"), exist_ok=True)
os.makedirs(os.path.join(self.shared_root, "content"), exist_ok=True)
def test_write_shared_file(self):
write_fn = make_write_shared_file(self.shared_root, "researcher")
result = write_fn(filename="report.md", content="# Daily Report\nTrending: AI agents")
assert "success" in result.lower()
assert os.path.exists(os.path.join(self.shared_root, "researcher", "report.md"))
def test_write_rejects_path_traversal(self):
write_fn = make_write_shared_file(self.shared_root, "researcher")
result = write_fn(filename="../../../etc/passwd", content="hack")
assert "error" in result.lower()
def test_read_shared_file(self):
with open(os.path.join(self.shared_root, "researcher", "report.md"), "w") as f:
f.write("# Report\nContent here")
read_fn = make_read_shared_file(self.shared_root)
result = read_fn(agent_id="researcher", filename="report.md")
assert "Content here" in result
def test_read_nonexistent(self):
read_fn = make_read_shared_file(self.shared_root)
result = read_fn(agent_id="researcher", filename="nope.md")
assert "not found" in result.lower()
def test_read_rejects_path_traversal(self):
read_fn = make_read_shared_file(self.shared_root)
result = read_fn(agent_id="researcher", filename="../../etc/passwd")
assert "error" in result.lower()
def test_list_shared_files(self):
with open(os.path.join(self.shared_root, "researcher", "a.md"), "w") as f:
f.write("a")
with open(os.path.join(self.shared_root, "researcher", "b.md"), "w") as f:
f.write("b")
list_fn = make_list_shared_files(self.shared_root)
result = list_fn(agent_id="researcher")
assert "a.md" in result
assert "b.md" in result
def test_list_all_agents_shared(self):
list_fn = make_list_shared_files(self.shared_root)
result = list_fn()
assert "researcher" in result
assert "content" in result
def test_write_only_own_dir(self):
write_fn = make_write_shared_file(self.shared_root, "researcher")
result = write_fn(filename="../content/hack.md", content="hacked")
assert "error" in result.lower()
def test_cross_agent_read(self):
write_r = make_write_shared_file(self.shared_root, "researcher")
write_r(filename="intel.md", content="Breaking: new model")
read_c = make_read_shared_file(self.shared_root)
result = read_c(agent_id="researcher", filename="intel.md")
assert "Breaking" in result