myrmidon / python /tests /api_routes /test_rbac_dynamic_api.py
tek Atrust
chore(deploy): build monolithic server for Hugging Face
d5ef46f
Raw
History Blame Contribute Delete
1.96 kB
from unittest.mock import MagicMock, patch
import pytest
from fastapi.testclient import TestClient
from server.auth.dependencies import get_current_user
from server.main import app
client = TestClient(app)
def mock_get_admin_user():
return {"id": "test-admin-uuid", "email": "admin@test.com", "role": "system_admin"}
@pytest.fixture
def admin_user():
app.dependency_overrides[get_current_user] = mock_get_admin_user
yield
app.dependency_overrides.pop(get_current_user, None)
def test_get_rbac_matrix(admin_user):
# Setup mock data for this test
mock_data = [
{"role": "system_admin", "permissions": ["*"]},
{"role": "employee", "permissions": ["task:read"]}
]
with patch("server.services.admin_service.get_supabase_client") as mock_get:
mock_client = MagicMock()
mock_get.return_value = mock_client
mock_client.table.return_value.select.return_value.order.return_value.execute.return_value.data = mock_data
response = client.get("/api/admin/rbac/matrix")
assert response.status_code == 200
data = response.json()
assert len(data) == 2
roles = [r["role"] for r in data]
assert "system_admin" in roles
def test_update_rbac_role(admin_user):
# Setup mock data for updating
with patch("server.services.admin_service.get_supabase_client") as mock_get:
mock_client = MagicMock()
mock_get.return_value = mock_client
# Mock upsert response
mock_client.table.return_value.upsert.return_value.execute.return_value.data = [
{"role": "employee", "permissions": ["task:read", "dummy:perm"]}
]
update_response = client.post("/api/admin/rbac/role", json={
"role": "employee",
"permissions": ["task:read", "dummy:perm"]
})
assert update_response.status_code == 200
assert "dummy:perm" in update_response.json()["permissions"]