feat(reports): add task status settings and tests
This commit is contained in:
@@ -368,6 +368,69 @@ class TestGetSummary:
|
||||
# #endregion test_get_summary
|
||||
|
||||
|
||||
# #region test_rbac_filtering [C:3] [TYPE Function] [SEMANTICS test,rbac,task-status-center]
|
||||
# @BRIEF Rejected-path regression tests for ReportsService RBAC task filtering.
|
||||
# @TEST_EDGE viewer_sees_only_own_tasks; analyst_sees_own_and_system; admin_sees_all.
|
||||
class TestRbacFiltering:
|
||||
def _user(self, user_id: str, role_name: str, is_admin: bool = False):
|
||||
role = MagicMock()
|
||||
role.name = role_name
|
||||
role.is_admin = is_admin
|
||||
user = MagicMock()
|
||||
user.id = user_id
|
||||
user.roles = [role]
|
||||
return user
|
||||
|
||||
def _task_set(self):
|
||||
return [
|
||||
_make_task(id="own", user_id="user-1"),
|
||||
_make_task(id="other", user_id="user-2"),
|
||||
_make_task(id="system", user_id=None),
|
||||
]
|
||||
|
||||
def test_viewer_sees_only_own_tasks(self):
|
||||
from src.models.report import ReportQuery
|
||||
tm = MagicMock()
|
||||
tm.get_all_tasks.return_value = self._task_set()
|
||||
service = _make_service(task_manager=tm)
|
||||
|
||||
result = service.list_reports(ReportQuery(), current_user=self._user("user-1", "viewer"))
|
||||
|
||||
assert {item.task_id for item in result.items} == {"own"}
|
||||
|
||||
def test_analyst_sees_own_and_system_tasks(self):
|
||||
from src.models.report import ReportQuery
|
||||
tm = MagicMock()
|
||||
tm.get_all_tasks.return_value = self._task_set()
|
||||
service = _make_service(task_manager=tm)
|
||||
|
||||
result = service.list_reports(ReportQuery(), current_user=self._user("user-1", "analyst"))
|
||||
|
||||
assert {item.task_id for item in result.items} == {"own", "system"}
|
||||
|
||||
def test_admin_sees_all_tasks(self):
|
||||
from src.models.report import ReportQuery
|
||||
tm = MagicMock()
|
||||
tm.get_all_tasks.return_value = self._task_set()
|
||||
service = _make_service(task_manager=tm)
|
||||
|
||||
result = service.list_reports(ReportQuery(), current_user=self._user("user-1", "Admin", True))
|
||||
|
||||
assert {item.task_id for item in result.items} == {"own", "other", "system"}
|
||||
|
||||
def test_summary_uses_same_rbac_filter(self):
|
||||
tm = MagicMock()
|
||||
tm.get_all_tasks.return_value = self._task_set()
|
||||
service = _make_service(task_manager=tm)
|
||||
|
||||
viewer_summary = service.get_summary(current_user=self._user("user-1", "viewer"))
|
||||
analyst_summary = service.get_summary(current_user=self._user("user-1", "analyst"))
|
||||
|
||||
assert viewer_summary.total_tasks == 1
|
||||
assert analyst_summary.total_tasks == 2
|
||||
# #endregion test_rbac_filtering
|
||||
|
||||
|
||||
# #region test_get_report_detail [C:2] [TYPE Function]
|
||||
# @BRIEF Test get_report_detail.
|
||||
class TestGetReportDetail:
|
||||
|
||||
Reference in New Issue
Block a user