myrmidon / python /tests /integration /services /test_phase49_rbac_service.py
tek Atrust
chore(deploy): build monolithic server for Hugging Face
d5ef46f
Raw
History Blame Contribute Delete
2.11 kB
import pytest
from src.server.services.agent_service import AgentService
@pytest.mark.asyncio
class TestPhase49RBAC:
async def test_sales_role_restrictions(self):
"""Alice (Sales) should ONLY see MarketBot."""
service = AgentService()
# Test Sales Role
agents = await service.get_assignable_agents(user_role="sales")
agent_names = [a["name"] for a in agents]
# Check substrings because names are like "MarketBot (Sales)"
assert any("MarketBot" in name for name in agent_names)
assert not any("Librarian" in name for name in agent_names)
assert not any("DevBot" in name for name in agent_names)
# Verify Enrichment (Phase 4.12)
market_bot = next(a for a in agents if "MarketBot" in a["name"])
assert "tools" in market_bot
assert "description" in market_bot
assert len(market_bot["tools"]) > 0
assert len(agents) == 1
async def test_marketing_role_restrictions(self):
"""Bob (Marketing) should see MarketBot + Librarian."""
service = AgentService()
agents = await service.get_assignable_agents(user_role="marketing")
agent_names = [a["name"] for a in agents]
assert any("MarketBot" in name for name in agent_names)
assert any("Librarian" in name for name in agent_names)
assert not any("DevBot" in name for name in agent_names)
assert len(agents) == 2
async def test_manager_role_access(self):
"""Charlie (Manager) should see ALL agents."""
service = AgentService()
agents = await service.get_assignable_agents(user_role="manager")
agent_names = [a["name"] for a in agents]
assert any("MarketBot" in name for name in agent_names)
assert any("Librarian" in name for name in agent_names)
assert not any("POBot" in name for name in agent_names) # System bot, not manually assignable
assert any("DevBot" in name for name in agent_names)
# Ensure at least 3 agent roles exist (MarketBot, Librarian, DevBot)
assert len(agents) >= 3