Spaces:
Running
Running
File size: 1,400 Bytes
7cc81cb | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | import pytest
from app.projects.repositories.collaboration_repository import CollaborationRepository
from app.projects.services.collaboration_service import CollaborationService
from app.projects.errors import CollaborationUnauthorizedError
@pytest.mark.asyncio
async def test_collaboration_logic_admin_removal_constraint(db_session):
# Setup test workspace and admin users
repo = CollaborationRepository(db_session)
service = CollaborationService(repo)
workspace_id = "test_workspace"
admin_user_id = "admin_user"
target_user_id = "member_user"
# 1. Mock memberships: 2 admins
# Use actual DB insert here if needed for true integration test
# ... setup DB state ...
# 2. Test prevention of last admin removal
with pytest.raises(CollaborationUnauthorizedError, match="Cannot remove the last administrator."):
await service.remove_member(workspace_id, admin_user_id, target_user_id)
@pytest.mark.asyncio
async def test_collaboration_logic_self_elevation_prevention(db_session):
repo = CollaborationRepository(db_session)
service = CollaborationService(repo)
workspace_id = "test_workspace"
actor_user_id = "user_1"
with pytest.raises(CollaborationUnauthorizedError, match="Cannot elevate your own privileges."):
await service.update_member_role(workspace_id, actor_user_id, actor_user_id, "admin")
|