"""Actor and TenantContext tests.""" from __future__ import annotations from auth import AUTH_HEADER from services.actors import create_actor from tests.factories import create_tenant, provision_user_in_tenant def test_human_actor_linked_to_user(client): user = provision_user_in_tenant() login = client.post( "/api/auth/login", json={"email": user["email"], "password": user["password"]}, ) token = login.json()["token"] ctx = client.get("/api/me/context", headers={AUTH_HEADER: token}).json() assert ctx["actor"]["type"] == "human" assert ctx["actor"]["id"] == user["actor_id"] def test_agent_actor_without_user(client): tenant_id = create_tenant() agent = create_actor(tenant_id=tenant_id, actor_type="agent", name="Planner Agent") assert agent["user_id"] is None assert agent["actor_type"] == "agent" def test_working_group_and_external_system_actors(client): tenant_id = create_tenant() wg = create_actor(tenant_id=tenant_id, actor_type="working_group", name="Steering Group") ext = create_actor(tenant_id=tenant_id, actor_type="external_system", name="Jira") assert wg["actor_type"] == "working_group" assert ext["actor_type"] == "external_system" def test_portal_role_separate_from_tenant_role(client): user = provision_user_in_tenant(tenant_role="member", portal_role="admin") login = client.post( "/api/auth/login", json={"email": user["email"], "password": user["password"]}, ) token = login.json()["token"] ctx = client.get("/api/me/context", headers={AUTH_HEADER: token}).json() assert ctx["portal_role"] == "admin" assert ctx["tenant"]["role"] == "member"