mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-10-03 23:00:31 +00:00
Chore: Add shared helpers for granting test permissions and use them (#14200)
This commit is contained in:
@@ -11,10 +11,8 @@ from datetime import timedelta
|
||||
from unittest import mock
|
||||
|
||||
import pytest
|
||||
from django.contrib.auth.models import Permission
|
||||
from django.contrib.auth.models import User
|
||||
from django.utils import timezone
|
||||
from guardian.shortcuts import assign_perm
|
||||
from rest_framework import status
|
||||
from rest_framework.test import APIClient
|
||||
|
||||
@@ -22,6 +20,8 @@ from documents.filters import PaperlessTaskFilterSet
|
||||
from documents.models import PaperlessTask
|
||||
from paperless_testing.factories import DocumentFactory
|
||||
from paperless_testing.factories import PaperlessTaskFactory
|
||||
from paperless_testing.permissions import grant_global
|
||||
from paperless_testing.permissions import grant_object
|
||||
|
||||
pytestmark = pytest.mark.api
|
||||
|
||||
@@ -348,9 +348,7 @@ class TestGetTasksV10:
|
||||
user_client: APIClient,
|
||||
) -> None:
|
||||
"""Regular users see their own tasks and unowned (system) tasks; other users' tasks are hidden."""
|
||||
regular_user.user_permissions.add(
|
||||
Permission.objects.get(codename="view_paperlesstask"),
|
||||
)
|
||||
grant_global(regular_user, "view_paperlesstask")
|
||||
|
||||
PaperlessTaskFactory(owner=admin_user) # other user — not visible
|
||||
unowned_task = PaperlessTaskFactory() # unowned (system task) — visible
|
||||
@@ -586,9 +584,7 @@ class TestGetTasksV9:
|
||||
regular_user: User,
|
||||
) -> None:
|
||||
"""Non-staff users see their own tasks plus unowned tasks via v9 API."""
|
||||
regular_user.user_permissions.add(
|
||||
Permission.objects.get(codename="view_paperlesstask"),
|
||||
)
|
||||
grant_global(regular_user, "view_paperlesstask")
|
||||
|
||||
client = APIClient()
|
||||
client.force_authenticate(user=regular_user)
|
||||
@@ -734,9 +730,7 @@ class TestAcknowledge:
|
||||
user_client: APIClient,
|
||||
) -> None:
|
||||
"""Users granted change_paperlesstask permission can acknowledge tasks."""
|
||||
regular_user.user_permissions.add(
|
||||
Permission.objects.get(codename="change_paperlesstask"),
|
||||
)
|
||||
grant_global(regular_user, "change_paperlesstask")
|
||||
regular_user.save()
|
||||
|
||||
task = PaperlessTaskFactory()
|
||||
@@ -803,9 +797,7 @@ class TestSummaryPermissions:
|
||||
regular_user,
|
||||
) -> None:
|
||||
"""A user with view_system_monitoring but no document permissions can access summary/."""
|
||||
regular_user.user_permissions.add(
|
||||
Permission.objects.get(codename="view_system_monitoring"),
|
||||
)
|
||||
grant_global(regular_user, "view_system_monitoring")
|
||||
|
||||
response = user_client.get(ENDPOINT + "summary/")
|
||||
|
||||
@@ -818,9 +810,7 @@ class TestSummaryPermissions:
|
||||
admin_user,
|
||||
) -> None:
|
||||
"""Monitoring user sees aggregate data for all tasks, not just unowned ones."""
|
||||
regular_user.user_permissions.add(
|
||||
Permission.objects.get(codename="view_system_monitoring"),
|
||||
)
|
||||
grant_global(regular_user, "view_system_monitoring")
|
||||
PaperlessTaskFactory(
|
||||
owner=admin_user,
|
||||
task_type=PaperlessTask.TaskType.CONSUME_FILE,
|
||||
@@ -841,9 +831,7 @@ class TestSummaryPermissions:
|
||||
) -> None:
|
||||
"""A regular user with view_paperlesstask but not view_system_monitoring sees only
|
||||
their own tasks and unowned tasks in the summary, not other users' tasks."""
|
||||
regular_user.user_permissions.add(
|
||||
Permission.objects.get(codename="view_paperlesstask"),
|
||||
)
|
||||
grant_global(regular_user, "view_paperlesstask")
|
||||
|
||||
PaperlessTaskFactory(
|
||||
owner=regular_user,
|
||||
@@ -1008,9 +996,7 @@ class TestDuplicateDocumentsPermissions:
|
||||
|
||||
@pytest.fixture()
|
||||
def user_v9_client(self, regular_user: User) -> APIClient:
|
||||
regular_user.user_permissions.add(
|
||||
Permission.objects.get(codename="view_paperlesstask"),
|
||||
)
|
||||
grant_global(regular_user, "view_paperlesstask")
|
||||
client = APIClient()
|
||||
client.force_authenticate(user=regular_user)
|
||||
client.credentials(HTTP_ACCEPT=ACCEPT_V9)
|
||||
@@ -1081,7 +1067,7 @@ class TestDuplicateDocumentsPermissions:
|
||||
) -> None:
|
||||
"""A user with explicit guardian view_document permission sees the duplicate_of document."""
|
||||
doc = DocumentFactory(owner=admin_user, title="Granted Doc")
|
||||
assign_perm("view_document", regular_user, doc)
|
||||
grant_object(regular_user, doc, "view_document")
|
||||
PaperlessTaskFactory(
|
||||
owner=regular_user,
|
||||
status=PaperlessTask.Status.SUCCESS,
|
||||
|
||||
Reference in New Issue
Block a user