Spaces:
Running
Running
| import pytest | |
| from app.projects.repositories.collaboration_repository import CollaborationRepository | |
| from app.projects.services.collaboration_service import CollaborationService | |
| from app.projects.errors import CollaborationUnauthorizedError | |
| 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) | |
| 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") | |