统一项目角色与接口权限配置

This commit is contained in:
Cheng Zhou
2026-05-28 10:48:33 +08:00
parent 6d1c98bcae
commit 2c85742040
45 changed files with 2863 additions and 1329 deletions
+26 -26
View File
@@ -20,14 +20,14 @@ async def test_add_member_with_permission(db_session: AsyncSession):
perm = ApiEndpointPermission(
study_id=study_id,
role="PM",
endpoint_key="POST:/studies/{study_id}/members",
endpoint_key="project_members:create",
allowed=True,
)
db_session.add(perm)
await db_session.commit()
# 验证权限检查
allowed = await role_has_api_permission(db_session, study_id, "PM", "POST:/studies/{study_id}/members")
allowed = await role_has_api_permission(db_session, study_id, "PM", "project_members:create")
assert allowed is True
@@ -40,14 +40,14 @@ async def test_add_member_without_permission(db_session: AsyncSession):
perm = ApiEndpointPermission(
study_id=study_id,
role="CRA",
endpoint_key="POST:/studies/{study_id}/members",
endpoint_key="project_members:create",
allowed=False,
)
db_session.add(perm)
await db_session.commit()
# 验证权限检查
allowed = await role_has_api_permission(db_session, study_id, "CRA", "POST:/studies/{study_id}/members")
allowed = await role_has_api_permission(db_session, study_id, "CRA", "project_members:create")
assert allowed is False
@@ -60,14 +60,14 @@ async def test_list_members_with_permission(db_session: AsyncSession):
perm = ApiEndpointPermission(
study_id=study_id,
role="PM",
endpoint_key="GET:/studies/{study_id}/members",
endpoint_key="project_members:list",
allowed=True,
)
db_session.add(perm)
await db_session.commit()
# 验证权限检查
allowed = await role_has_api_permission(db_session, study_id, "PM", "GET:/studies/{study_id}/members")
allowed = await role_has_api_permission(db_session, study_id, "PM", "project_members:list")
assert allowed is True
@@ -80,14 +80,14 @@ async def test_update_member_with_permission(db_session: AsyncSession):
perm = ApiEndpointPermission(
study_id=study_id,
role="PM",
endpoint_key="PATCH:/studies/{study_id}/members/{member_id}",
endpoint_key="project_members:update",
allowed=True,
)
db_session.add(perm)
await db_session.commit()
# 验证权限检查
allowed = await role_has_api_permission(db_session, study_id, "PM", "PATCH:/studies/{study_id}/members/{member_id}")
allowed = await role_has_api_permission(db_session, study_id, "PM", "project_members:update")
assert allowed is True
@@ -100,14 +100,14 @@ async def test_delete_member_with_permission(db_session: AsyncSession):
perm = ApiEndpointPermission(
study_id=study_id,
role="PM",
endpoint_key="DELETE:/studies/{study_id}/members/{member_id}",
endpoint_key="project_members:delete",
allowed=True,
)
db_session.add(perm)
await db_session.commit()
# 验证权限检查
allowed = await role_has_api_permission(db_session, study_id, "PM", "DELETE:/studies/{study_id}/members/{member_id}")
allowed = await role_has_api_permission(db_session, study_id, "PM", "project_members:delete")
assert allowed is True
@@ -120,14 +120,14 @@ async def test_list_member_candidates_with_permission(db_session: AsyncSession):
perm = ApiEndpointPermission(
study_id=study_id,
role="PM",
endpoint_key="GET:/studies/{study_id}/members/candidates",
endpoint_key="project_members:candidates",
allowed=True,
)
db_session.add(perm)
await db_session.commit()
# 验证权限检查
allowed = await role_has_api_permission(db_session, study_id, "PM", "GET:/studies/{study_id}/members/candidates")
allowed = await role_has_api_permission(db_session, study_id, "PM", "project_members:candidates")
assert allowed is True
@@ -140,14 +140,14 @@ async def test_create_site_with_permission(db_session: AsyncSession):
perm = ApiEndpointPermission(
study_id=study_id,
role="PM",
endpoint_key="POST:/studies/{study_id}/sites",
endpoint_key="sites:create",
allowed=True,
)
db_session.add(perm)
await db_session.commit()
# 验证权限检查
allowed = await role_has_api_permission(db_session, study_id, "PM", "POST:/studies/{study_id}/sites")
allowed = await role_has_api_permission(db_session, study_id, "PM", "sites:create")
assert allowed is True
@@ -160,14 +160,14 @@ async def test_list_sites_with_permission(db_session: AsyncSession):
perm = ApiEndpointPermission(
study_id=study_id,
role="PM",
endpoint_key="GET:/studies/{study_id}/sites",
endpoint_key="sites:list",
allowed=True,
)
db_session.add(perm)
await db_session.commit()
# 验证权限检查
allowed = await role_has_api_permission(db_session, study_id, "PM", "GET:/studies/{study_id}/sites")
allowed = await role_has_api_permission(db_session, study_id, "PM", "sites:list")
assert allowed is True
@@ -180,14 +180,14 @@ async def test_list_sites_cra_with_permission(db_session: AsyncSession):
perm = ApiEndpointPermission(
study_id=study_id,
role="CRA",
endpoint_key="GET:/studies/{study_id}/sites",
endpoint_key="sites:list",
allowed=True,
)
db_session.add(perm)
await db_session.commit()
# 验证权限检查
allowed = await role_has_api_permission(db_session, study_id, "CRA", "GET:/studies/{study_id}/sites")
allowed = await role_has_api_permission(db_session, study_id, "CRA", "sites:list")
assert allowed is True
@@ -200,14 +200,14 @@ async def test_update_site_with_permission(db_session: AsyncSession):
perm = ApiEndpointPermission(
study_id=study_id,
role="PM",
endpoint_key="PATCH:/studies/{study_id}/sites/{site_id}",
endpoint_key="sites:update",
allowed=True,
)
db_session.add(perm)
await db_session.commit()
# 验证权限检查
allowed = await role_has_api_permission(db_session, study_id, "PM", "PATCH:/studies/{study_id}/sites/{site_id}")
allowed = await role_has_api_permission(db_session, study_id, "PM", "sites:update")
assert allowed is True
@@ -220,14 +220,14 @@ async def test_delete_site_with_permission(db_session: AsyncSession):
perm = ApiEndpointPermission(
study_id=study_id,
role="PM",
endpoint_key="DELETE:/studies/{study_id}/sites/{site_id}",
endpoint_key="sites:delete",
allowed=True,
)
db_session.add(perm)
await db_session.commit()
# 验证权限检查
allowed = await role_has_api_permission(db_session, study_id, "PM", "DELETE:/studies/{study_id}/sites/{site_id}")
allowed = await role_has_api_permission(db_session, study_id, "PM", "sites:delete")
assert allowed is True
@@ -240,14 +240,14 @@ async def test_members_permission_denied_for_cra(db_session: AsyncSession):
perm = ApiEndpointPermission(
study_id=study_id,
role="CRA",
endpoint_key="POST:/studies/{study_id}/members",
endpoint_key="project_members:create",
allowed=False,
)
db_session.add(perm)
await db_session.commit()
# 验证权限检查
allowed = await role_has_api_permission(db_session, study_id, "CRA", "POST:/studies/{study_id}/members")
allowed = await role_has_api_permission(db_session, study_id, "CRA", "project_members:create")
assert allowed is False
@@ -260,13 +260,13 @@ async def test_sites_permission_denied_for_cra_write(db_session: AsyncSession):
perm = ApiEndpointPermission(
study_id=study_id,
role="CRA",
endpoint_key="POST:/studies/{study_id}/sites",
endpoint_key="sites:create",
allowed=False,
)
db_session.add(perm)
await db_session.commit()
# 验证权限检查
allowed = await role_has_api_permission(db_session, study_id, "CRA", "POST:/studies/{study_id}/sites")
allowed = await role_has_api_permission(db_session, study_id, "CRA", "sites:create")
assert allowed is False