import pytest from clfgui.backend.profiles import InvalidAgentId, ProfileDiscovery, UnknownAgent def test_profile_discovery_lists_valid_directories_only(tmp_path): profiles_dir = tmp_path / "Hermes" / "profiles" profiles_dir.mkdir(parents=True) (profiles_dir / "planner").mkdir() (profiles_dir / "research-agent").mkdir() (profiles_dir / "BadName").mkdir() (profiles_dir / "notes.txt").write_text("not a profile", encoding="utf-8") agents = ProfileDiscovery(profiles_dir).list_agents() assert [agent.id for agent in agents] == ["planner", "research-agent"] def test_profile_discovery_validates_agent_ids_without_traversal(tmp_path): profiles_dir = tmp_path / "Hermes" / "profiles" profiles_dir.mkdir(parents=True) (profiles_dir / "planner").mkdir() discovery = ProfileDiscovery(profiles_dir) assert discovery.validate_agent_id("planner") == "planner" with pytest.raises(InvalidAgentId): discovery.validate_agent_id("../planner") with pytest.raises(InvalidAgentId): discovery.validate_agent_id("Planner") with pytest.raises(UnknownAgent): discovery.validate_agent_id("missing")