统一项目角色展示与预设文案
This commit is contained in:
@@ -317,35 +317,35 @@ async def test_subject_pds_list_with_permission(db_session: AsyncSession):
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_audit_logs_list_with_permission(db_session: AsyncSession):
|
||||
"""验证有权限的QA可以查询审计日志列表"""
|
||||
"""验证有权限的PM可以查询审计日志列表"""
|
||||
study_id = uuid.uuid4()
|
||||
perm = ApiEndpointPermission(
|
||||
study_id=study_id,
|
||||
role="QA",
|
||||
role="PM",
|
||||
endpoint_key="GET:/studies/{study_id}/audit-logs",
|
||||
allowed=True,
|
||||
)
|
||||
db_session.add(perm)
|
||||
await db_session.commit()
|
||||
|
||||
allowed = await role_has_api_permission(db_session, study_id, "QA", "GET:/studies/{study_id}/audit-logs")
|
||||
allowed = await role_has_api_permission(db_session, study_id, "PM", "GET:/studies/{study_id}/audit-logs")
|
||||
assert allowed is True
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_audit_logs_export_with_permission(db_session: AsyncSession):
|
||||
"""验证有权限的QA可以导出审计日志"""
|
||||
"""验证有权限的PM可以导出审计日志"""
|
||||
study_id = uuid.uuid4()
|
||||
perm = ApiEndpointPermission(
|
||||
study_id=study_id,
|
||||
role="QA",
|
||||
role="PM",
|
||||
endpoint_key="POST:/studies/{study_id}/audit-logs/export",
|
||||
allowed=True,
|
||||
)
|
||||
db_session.add(perm)
|
||||
await db_session.commit()
|
||||
|
||||
allowed = await role_has_api_permission(db_session, study_id, "QA", "POST:/studies/{study_id}/audit-logs/export")
|
||||
allowed = await role_has_api_permission(db_session, study_id, "PM", "POST:/studies/{study_id}/audit-logs/export")
|
||||
assert allowed is True
|
||||
|
||||
|
||||
|
||||
@@ -24,3 +24,23 @@ def test_migration_state_check_script_exists():
|
||||
assert "studies" in source
|
||||
assert "subjects" in source
|
||||
assert "monitoring_visit_issues" in source
|
||||
|
||||
|
||||
def test_remove_qa_role_migration_casts_json_permissions_for_key_lookup():
|
||||
source = Path("alembic/versions/20260521_01_remove_qa_role.py").read_text(encoding="utf-8")
|
||||
|
||||
assert "permissions ? 'QA'" not in source
|
||||
assert "permissions::jsonb ? 'QA'" in source
|
||||
|
||||
|
||||
def test_role_template_copy_migration_updates_display_copy_without_qa_role_key():
|
||||
source = Path("alembic/versions/20260522_01_update_role_template_copy.py").read_text(encoding="utf-8")
|
||||
|
||||
assert "项目负责人,统筹项目全局,协调进度、资源与关键决策。" in source
|
||||
assert "负责各中心临床监查执行,跟进现场质量、数据和问题闭环。" in source
|
||||
assert "负责合同、药品及相关项目事务管理,保障执行支持与物资协同。" in source
|
||||
assert "负责医学审核与稽查,关注质量风险、合规性和医学一致性。" in source
|
||||
assert "负责药物警戒相关工作,跟踪安全性事件并支持风险评估。" in source
|
||||
assert '"IMP": ("CTA"' in source
|
||||
assert '"MEDICAL_REVIEW": ("QA"' in source
|
||||
assert "category = 'QA'" not in source
|
||||
|
||||
@@ -166,7 +166,7 @@ async def test_list_templates_excludes_qa_system_preset(db_session):
|
||||
permissions={"QA": {"subjects:read": True}},
|
||||
)
|
||||
pm_template = PermissionTemplate(
|
||||
name="项目经理",
|
||||
name="PM",
|
||||
template_type=TemplateType.ROLE,
|
||||
is_system=True,
|
||||
category="PM",
|
||||
|
||||
Reference in New Issue
Block a user