| 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() |
|
|
| |
| agents = await service.get_assignable_agents(user_role="sales") |
|
|
| agent_names = [a["name"] for a in agents] |
| |
| 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) |
|
|
| |
| 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) |
| assert any("DevBot" in name for name in agent_names) |
| |
| assert len(agents) >= 3 |
|
|