diff --git a/backend/src/openarchiefbeheer/accounts/fixtures/permissions.json b/backend/src/openarchiefbeheer/accounts/fixtures/permissions.json new file mode 100644 index 00000000..725328e7 --- /dev/null +++ b/backend/src/openarchiefbeheer/accounts/fixtures/permissions.json @@ -0,0 +1,35 @@ +[ + { + "model": "auth.permission", + "fields": { + "name": "Can start destruction", + "content_type": [ + "accounts", + "user" + ], + "codename": "can_start_destruction" + } + }, + { + "model": "auth.permission", + "fields": { + "name": "Can review destruction", + "content_type": [ + "accounts", + "user" + ], + "codename": "can_review_destruction" + } + }, + { + "model": "auth.permission", + "fields": { + "name": "Can review final list", + "content_type": [ + "accounts", + "user" + ], + "codename": "can_review_final_list" + } + } +] \ No newline at end of file diff --git a/backend/src/openarchiefbeheer/accounts/tests/factories.py b/backend/src/openarchiefbeheer/accounts/tests/factories.py index adbd2bb7..481c8483 100644 --- a/backend/src/openarchiefbeheer/accounts/tests/factories.py +++ b/backend/src/openarchiefbeheer/accounts/tests/factories.py @@ -1,6 +1,8 @@ from django.contrib.auth import get_user_model +from django.contrib.auth.models import Permission import factory +from factory import post_generation from factory.django import DjangoModelFactory User = get_user_model() @@ -21,3 +23,15 @@ class Params: is_staff=True, is_superuser=True, ) + + @post_generation + def post(user, create, extracted, **kwargs): + if not create: + return + + for item, value in kwargs.items(): + if not value: + continue + + permission = Permission.objects.filter(codename=item).first() + user.user_permissions.add(permission) diff --git a/backend/src/openarchiefbeheer/accounts/tests/test_endpoints.py b/backend/src/openarchiefbeheer/accounts/tests/test_endpoints.py index 0f4ebecc..b9aee189 100644 --- a/backend/src/openarchiefbeheer/accounts/tests/test_endpoints.py +++ b/backend/src/openarchiefbeheer/accounts/tests/test_endpoints.py @@ -2,7 +2,7 @@ from rest_framework.reverse import reverse from rest_framework.test import APITestCase -from openarchiefbeheer.accounts.tests.factories import RoleFactory, UserFactory +from openarchiefbeheer.accounts.tests.factories import UserFactory class WhoAmIViewTest(APITestCase): @@ -14,8 +14,7 @@ def test_not_authenticated(self): self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) def test_authenticated(self): - role = RoleFactory.create() - user = UserFactory.create(role=role) + user = UserFactory.create(post__can_start_destruction=True) self.client.force_authenticate(user=user) endpoint = reverse("api:whoami") @@ -30,14 +29,8 @@ def test_authenticated(self): self.assertEqual(data["firstName"], user.first_name) self.assertEqual(data["lastName"], user.last_name) self.assertEqual(data["email"], user.email) - self.assertEqual(data["role"]["name"], role.name) - self.assertEqual( - data["role"]["canStartDestruction"], role.can_start_destruction - ) - self.assertEqual( - data["role"]["canReviewDestruction"], role.can_review_destruction - ) - self.assertEqual(data["role"]["canViewCaseDetails"], role.can_view_case_details) + self.assertTrue(data["role"]["canStartDestruction"]) + self.assertFalse(data["role"]["canReviewDestruction"]) def test_post(self): user = UserFactory.create() @@ -59,10 +52,10 @@ def test_not_authenticated_cant_access(self): self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) def test_get_archivists(self): - UserFactory.create_batch(2, role__can_review_final_list=True) - UserFactory.create_batch(3, role__can_review_final_list=False) + UserFactory.create_batch(2, post__can_review_final_list=True) + UserFactory.create_batch(3, post__can_review_final_list=False) - record_manager = UserFactory.create(role__can_start_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) self.client.force_login(record_manager) response = self.client.get(reverse("api:archivists")) diff --git a/backend/src/openarchiefbeheer/api/tests/test_role_endpoints.py b/backend/src/openarchiefbeheer/api/tests/test_role_endpoints.py index 8c80ba70..92b0aa44 100644 --- a/backend/src/openarchiefbeheer/api/tests/test_role_endpoints.py +++ b/backend/src/openarchiefbeheer/api/tests/test_role_endpoints.py @@ -12,9 +12,9 @@ def test_user_not_logged_in(self): self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) def test_retrieve_reviewers(self): - admin = UserFactory.create(is_superuser=True, role=None) - UserFactory.create_batch(2, role__can_review_destruction=True) - UserFactory.create_batch(2, role__can_review_destruction=False) + admin = UserFactory.create(is_superuser=True) + UserFactory.create_batch(2, post__can_review_destruction=True) + UserFactory.create_batch(2, post__can_review_destruction=False) self.client.force_authenticate(user=admin) response = self.client.get(reverse("api:reviewers")) diff --git a/backend/src/openarchiefbeheer/config/tests/test_views.py b/backend/src/openarchiefbeheer/config/tests/test_views.py index 40add640..35d60c4d 100644 --- a/backend/src/openarchiefbeheer/config/tests/test_views.py +++ b/backend/src/openarchiefbeheer/config/tests/test_views.py @@ -25,7 +25,7 @@ def test_authenticated_can_retrieve(self): self.assertIn("zaaktypesShortProcess", response.json()) def test_not_record_manager_update(self): - user = UserFactory.create(role__can_start_destruction=False) + user = UserFactory.create(post__can_start_destruction=False) self.client.force_login(user) response = self.client.put( @@ -36,7 +36,7 @@ def test_not_record_manager_update(self): self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) def test_record_manager_update(self): - user = UserFactory.create(role__can_start_destruction=True) + user = UserFactory.create(post__can_start_destruction=True) self.client.force_login(user) response = self.client.put( @@ -51,7 +51,7 @@ def test_record_manager_update(self): self.assertEqual(config.zaaktypes_short_process, ["http://tralala.nl"]) def test_record_manager_partial_update(self): - user = UserFactory.create(role__can_start_destruction=True) + user = UserFactory.create(post__can_start_destruction=True) self.client.force_login(user) response = self.client.patch( @@ -68,7 +68,7 @@ def test_record_manager_partial_update(self): @tag("gh-227") @override_settings(SOLO_CACHE=None) def test_can_send_empty_list(self): - user = UserFactory.create(role__can_start_destruction=True) + user = UserFactory.create(post__can_start_destruction=True) config = ArchiveConfig.get_solo() config.zaaktypes_short_process = ["http://tralala.nl"] diff --git a/backend/src/openarchiefbeheer/destruction/tests/e2e/features/test_feature_list_process_review.py b/backend/src/openarchiefbeheer/destruction/tests/e2e/features/test_feature_list_process_review.py index f4f5310e..a2f13532 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/e2e/features/test_feature_list_process_review.py +++ b/backend/src/openarchiefbeheer/destruction/tests/e2e/features/test_feature_list_process_review.py @@ -83,7 +83,7 @@ async def test_zaaktype_filters_on_process_review_page(self): @sync_to_async def create_data(): record_manager = UserFactory.create( - password="ANic3Password", role__can_start_destruction=True + password="ANic3Password", post__can_start_destruction=True ) destruction_list = DestructionListFactory.create( assignee=record_manager, @@ -175,7 +175,7 @@ def create_data(): async def test_zaak_removed_outside_process(self): @sync_to_async def create_data(): - record_manager = UserFactory.create(username="Record Manager", password="ANic3Password", role__can_start_destruction=True) + record_manager = UserFactory.create(username="Record Manager", password="ANic3Password", post__can_start_destruction=True) zaken = ZaakFactory.create_batch(2) list = DestructionListFactory.create( diff --git a/backend/src/openarchiefbeheer/destruction/tests/e2e/features/test_feature_list_review.py b/backend/src/openarchiefbeheer/destruction/tests/e2e/features/test_feature_list_review.py index cd5f2b5a..b2659b78 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/e2e/features/test_feature_list_review.py +++ b/backend/src/openarchiefbeheer/destruction/tests/e2e/features/test_feature_list_review.py @@ -97,8 +97,8 @@ async def test_scenario_reviewer_rejects_list(self): async def test_scenario_reviewer_reviews_second_time(self): @sync_to_async def create_data(): - record_manager = UserFactory.create(role__can_start_destruction=True) - reviewer = UserFactory.create(username="Beoordelaar", password="ANic3Password", role__can_review_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) + reviewer = UserFactory.create(username="Beoordelaar", password="ANic3Password", post__can_review_destruction=True) zaken = ZaakFactory.create_batch(2) @@ -195,7 +195,7 @@ async def test_zaaktype_filters(self): @sync_to_async def create_data(): reviewer = UserFactory.create( - password="ANic3Password", role__can_review_destruction=True + password="ANic3Password", post__can_review_destruction=True ) destruction_list = DestructionListFactory.create( assignee=reviewer, @@ -275,8 +275,8 @@ def create_data(): async def test_zaak_removed_outside_process(self): @sync_to_async def create_data(): - record_manager = UserFactory.create(role__can_start_destruction=True) - reviewer = UserFactory.create(username="Beoordelaar", password="ANic3Password", role__can_review_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) + reviewer = UserFactory.create(username="Beoordelaar", password="ANic3Password", post__can_review_destruction=True) zaken = ZaakFactory.create_batch(2) list = DestructionListFactory.create( diff --git a/backend/src/openarchiefbeheer/destruction/tests/e2e/test_views.py b/backend/src/openarchiefbeheer/destruction/tests/e2e/test_views.py index 3c8e6b05..43ca0448 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/e2e/test_views.py +++ b/backend/src/openarchiefbeheer/destruction/tests/e2e/test_views.py @@ -14,7 +14,7 @@ async def test_login_redirects_to_destruction_list(self): @sync_to_async def _create_record_manager(): record_manager = UserFactory.create( - role__can_start_destruction=True, + post__can_start_destruction=True, password="ANic3Password", ) return record_manager diff --git a/backend/src/openarchiefbeheer/destruction/tests/endpoints/test_abort_destruction.py b/backend/src/openarchiefbeheer/destruction/tests/endpoints/test_abort_destruction.py index 5b13d580..13cd3a9e 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/endpoints/test_abort_destruction.py +++ b/backend/src/openarchiefbeheer/destruction/tests/endpoints/test_abort_destruction.py @@ -16,7 +16,7 @@ class DestructionListAbortDestructionEndpointTest(APITestCase): def test_only_author_can_abort(self): record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) destruction_list = DestructionListFactory.create( name="A test list", @@ -39,7 +39,7 @@ def test_only_author_can_abort(self): def test_only_ready_to_delete_with_planned_date_can_be_aborted(self): record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) destruction_list = DestructionListFactory.create( name="A test list", @@ -63,7 +63,7 @@ def test_only_ready_to_delete_with_planned_date_can_be_aborted(self): def test_cannot_abort_without_comment(self): record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) destruction_list = DestructionListFactory.create( name="A test list", @@ -88,7 +88,7 @@ def test_cannot_abort_without_comment(self): def test_abort_list_destruction(self): record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) destruction_list = DestructionListFactory.create( name="A test list", diff --git a/backend/src/openarchiefbeheer/destruction/tests/endpoints/test_list_destruction.py b/backend/src/openarchiefbeheer/destruction/tests/endpoints/test_list_destruction.py index 61ed360b..6499dc6d 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/endpoints/test_list_destruction.py +++ b/backend/src/openarchiefbeheer/destruction/tests/endpoints/test_list_destruction.py @@ -17,7 +17,7 @@ class DestructionListStartDestructionEndpointTest(APITestCase): def test_plan_destruction(self): record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) destruction_list = DestructionListFactory.create( name="A test list", @@ -47,7 +47,7 @@ def test_retry_destruction_after_failure_queues_immediately( self, ): record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) destruction_list = DestructionListFactory.create( name="A test list", @@ -83,7 +83,7 @@ def test_retry_destruction_after_failure_with_planned_date_in_future_raises_erro ): """This scenario should never happen unless someone manually changes the planned destruction date.""" record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) destruction_list = DestructionListFactory.create( name="A test list", @@ -110,7 +110,7 @@ def test_retry_destruction_after_failure_with_planned_date_in_future_raises_erro ) def test_cannot_start_destruction_if_not_author(self): - record_manager = UserFactory.create(role__can_start_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) destruction_list = DestructionListFactory.create( name="A test list", contains_sensitive_info=True, @@ -131,7 +131,7 @@ def test_cannot_start_destruction_if_not_author(self): m_task.assert_not_called() def test_cannot_start_destruction_if_not_ready_to_delete(self): - record_manager = UserFactory.create(role__can_start_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) destruction_list = DestructionListFactory.create( name="A test list", contains_sensitive_info=True, @@ -154,7 +154,7 @@ def test_cannot_start_destruction_if_not_ready_to_delete(self): def test_cannot_start_destruction_if_archiefactiedatum_in_the_future(self): record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) destruction_list = DestructionListFactory.create( name="A test list", @@ -193,7 +193,7 @@ def test_cannot_start_destruction_if_archiefactiedatum_in_the_future(self): def test_can_start_destruction_if_archiefactiedatum_in_the_future_but_removed(self): record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) destruction_list = DestructionListFactory.create( name="A test list", diff --git a/backend/src/openarchiefbeheer/destruction/tests/endpoints/test_reviewresponse.py b/backend/src/openarchiefbeheer/destruction/tests/endpoints/test_reviewresponse.py index 38ede9c3..20063ed9 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/endpoints/test_reviewresponse.py +++ b/backend/src/openarchiefbeheer/destruction/tests/endpoints/test_reviewresponse.py @@ -54,7 +54,7 @@ def test_filter_on_review(self): self.assertEqual(len(data[0]["itemsResponses"]), 2) def test_create_review_response(self): - record_manager = UserFactory.create(role__can_start_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) review = DestructionListReviewFactory.create( destruction_list__author=record_manager, destruction_list__status=ListStatus.changes_requested, @@ -133,8 +133,8 @@ def test_create_review_response(self): self.assertEqual(item_response3.action_zaak["archiefactiedatum"], "2030-01-01") def test_cannot_create_response_if_not_author(self): - record_manager1 = UserFactory.create(role__can_start_destruction=True) - record_manager2 = UserFactory.create(role__can_start_destruction=True) + record_manager1 = UserFactory.create(post__can_start_destruction=True) + record_manager2 = UserFactory.create(post__can_start_destruction=True) review = DestructionListReviewFactory.create( destruction_list__author=record_manager1, @@ -165,7 +165,7 @@ def test_cannot_create_response_if_not_author(self): ) def test_cannot_create_response_if_not_changes_requested(self): - record_manager = UserFactory.create(role__can_start_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) review = DestructionListReviewFactory.create( destruction_list__author=record_manager, @@ -198,14 +198,14 @@ def test_cannot_create_response_if_not_changes_requested(self): @freezegun.freeze_time("2023-09-15T21:36:00+02:00") def test_audit_log(self): # Reassign - record_manager = UserFactory.create(role__can_start_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) destruction_list = DestructionListFactory.create( name="Test audittrail", status=ListStatus.ready_to_review, author=record_manager, ) DestructionListAssigneeFactory.create(destruction_list=destruction_list) - other_reviewer = UserFactory.create(role__can_review_destruction=True) + other_reviewer = UserFactory.create(post__can_review_destruction=True) self.client.force_authenticate(user=record_manager) endpoint_reassign = reverse( diff --git a/backend/src/openarchiefbeheer/destruction/tests/factories.py b/backend/src/openarchiefbeheer/destruction/tests/factories.py index eab5d17d..8df064e0 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/factories.py +++ b/backend/src/openarchiefbeheer/destruction/tests/factories.py @@ -1,9 +1,13 @@ +from django.contrib.auth.models import Permission + import factory.fuzzy from factory import post_generation from openarchiefbeheer.accounts.tests.factories import UserFactory from openarchiefbeheer.zaken.tests.factories import ZaakFactory +from ..constants import ListRole + class DestructionListFactory(factory.django.DjangoModelFactory): name = factory.Faker("word") @@ -14,6 +18,14 @@ class Meta: model = "destruction.DestructionList" django_get_or_create = ("name",) + @post_generation + def post(destruction_list, create, extracted, **kwargs): + if not create: + return + + permission = Permission.objects.get(codename="can_start_destruction") + destruction_list.author.user_permissions.add(permission) + class DestructionListAssigneeFactory(factory.django.DjangoModelFactory): destruction_list = factory.SubFactory(DestructionListFactory) @@ -22,6 +34,22 @@ class DestructionListAssigneeFactory(factory.django.DjangoModelFactory): class Meta: model = "destruction.DestructionListAssignee" + @post_generation + def post(assignee, create, extracted, **kwargs): + if not create: + return + + match (assignee.role): + case ListRole.author: + permission = Permission.objects.get(codename="can_start_destruction") + assignee.user.user_permissions.add(permission) + case ListRole.reviewer: + permission = Permission.objects.get(codename="can_review_destruction") + assignee.user.user_permissions.add(permission) + case ListRole.archivist: + permission = Permission.objects.get(codename="can_review_final_list") + assignee.user.user_permissions.add(permission) + class DestructionListItemFactory(factory.django.DjangoModelFactory): destruction_list = factory.SubFactory(DestructionListFactory) diff --git a/backend/src/openarchiefbeheer/destruction/tests/serializers/test_reviewresponse.py b/backend/src/openarchiefbeheer/destruction/tests/serializers/test_reviewresponse.py index 7cf3aa5b..6f2225d1 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/serializers/test_reviewresponse.py +++ b/backend/src/openarchiefbeheer/destruction/tests/serializers/test_reviewresponse.py @@ -17,7 +17,7 @@ class ReviewResponseSerializerTests(TestCase): def test_rejecting_suggestion_cannot_have_zaak_action(self): - record_manager = UserFactory.create(role__can_start_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) review = DestructionListReviewFactory.create( destruction_list__author=record_manager, destruction_list__status=ListStatus.changes_requested, @@ -53,7 +53,7 @@ def test_rejecting_suggestion_cannot_have_zaak_action(self): ) def test_bewaartermijn_zaak_action_cannot_change_selectielijst(self): - record_manager = UserFactory.create(role__can_start_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) review = DestructionListReviewFactory.create( destruction_list__author=record_manager, destruction_list__status=ListStatus.changes_requested, @@ -92,7 +92,7 @@ def test_bewaartermijn_zaak_action_cannot_change_selectielijst(self): ) def test_selectielijst_zaak_action_requires_selectielijst(self): - record_manager = UserFactory.create(role__can_start_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) review = DestructionListReviewFactory.create( destruction_list__author=record_manager, destruction_list__status=ListStatus.changes_requested, diff --git a/backend/src/openarchiefbeheer/destruction/tests/test_assignement_logic.py b/backend/src/openarchiefbeheer/destruction/tests/test_assignement_logic.py index 470c6f57..8c0940bd 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/test_assignement_logic.py +++ b/backend/src/openarchiefbeheer/destruction/tests/test_assignement_logic.py @@ -175,7 +175,7 @@ def test_archivist_accepts(self): self.assertEqual(destruction_list.assignee, record_manager.user) def test_reassign_reviewer_ready_to_review(self): - reviewer_old = UserFactory.create(role__can_review_destruction=True) + reviewer_old = UserFactory.create(post__can_review_destruction=True) destruction_list = DestructionListFactory.create( status=ListStatus.ready_to_review, assignee=reviewer_old ) @@ -191,7 +191,7 @@ def test_reassign_reviewer_ready_to_review(self): self.assertEqual(destruction_list.assignee, assignee_new.user) def test_reassign_reviewer_noop(self): - record_manager = UserFactory.create(role__can_start_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) destruction_list = DestructionListFactory.create( status=ListStatus.new, assignee=record_manager, author=record_manager ) diff --git a/backend/src/openarchiefbeheer/destruction/tests/test_endpoints.py b/backend/src/openarchiefbeheer/destruction/tests/test_endpoints.py index c158f609..0cfbad70 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/test_endpoints.py +++ b/backend/src/openarchiefbeheer/destruction/tests/test_endpoints.py @@ -45,7 +45,7 @@ def test_not_authenticated(self): self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) def test_authenticated_without_permission(self): - user = UserFactory.create(role__can_start_destruction=False) + user = UserFactory.create(post__can_start_destruction=False) self.client.force_authenticate(user=user) endpoint = reverse("api:destructionlist-list") @@ -56,10 +56,10 @@ def test_authenticated_without_permission(self): def test_create_destruction_list(self): record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) reviewer = UserFactory.create( - username="reviewer", role__can_review_destruction=True + username="reviewer", post__can_review_destruction=True ) ZaakFactory.create( url="http://localhost:8003/zaken/api/v1/zaken/111-111-111", @@ -136,9 +136,9 @@ def test_list_destruction_lists(self): self.assertEqual(len(response.json()), 3) def test_zaak_already_in_another_destruction_list(self): - record_manager = UserFactory.create(role__can_start_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) reviewer = UserFactory.create( - username="reviewer", role__can_review_destruction=True + username="reviewer", post__can_review_destruction=True ) DestructionListItemFactory.create( with_zaak=True, @@ -199,9 +199,9 @@ def test_zaak_already_in_another_destruction_list(self): self.assertFalse(DestructionList.objects.filter(name="A test list").exists()) def test_update_destruction_list(self): - record_manager = UserFactory.create(role__can_start_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) reviewer = UserFactory.create( - username="reviewer", role__can_review_destruction=True + username="reviewer", post__can_review_destruction=True ) ZaakFactory.create( url="http://localhost:8003/zaken/api/v1/zaken/111-111-111", @@ -254,7 +254,7 @@ def test_update_destruction_list(self): self.assertEqual(destruction_list.items.all().count(), 1) def test_cannot_update_destruction_list_if_not_new(self): - record_manager = UserFactory.create(role__can_start_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) destruction_list = DestructionListFactory.create( name="A test list", @@ -278,8 +278,8 @@ def test_cannot_update_destruction_list_if_not_new(self): self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) def test_cannot_update_destruction_list_if_not_author(self): - record_manager1 = UserFactory.create(role__can_start_destruction=True) - record_manager2 = UserFactory.create(role__can_start_destruction=True) + record_manager1 = UserFactory.create(post__can_start_destruction=True) + record_manager2 = UserFactory.create(post__can_start_destruction=True) destruction_list = DestructionListFactory.create( name="A test list", @@ -303,14 +303,14 @@ def test_cannot_update_destruction_list_if_not_author(self): self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) def test_cannot_reassign_destruction_list_if_not_record_manager(self): - not_record_manager = UserFactory.create(role__can_start_destruction=False) + not_record_manager = UserFactory.create(post__can_start_destruction=False) destruction_list = DestructionListFactory.create( status=ListStatus.ready_to_review, ) DestructionListAssigneeFactory.create_batch( 2, destruction_list=destruction_list ) - other_reviewers = UserFactory.create_batch(2, role__can_review_destruction=True) + other_reviewers = UserFactory.create_batch(2, post__can_review_destruction=True) self.client.force_authenticate(user=not_record_manager) endpoint = reverse( @@ -326,8 +326,8 @@ def test_cannot_reassign_destruction_list_if_not_record_manager(self): self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) def test_cannot_reassign_destruction_list_without_comment(self): - record_manager = UserFactory.create(role__can_start_destruction=True) - reviewer = UserFactory.create(role__can_review_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) + reviewer = UserFactory.create(post__can_review_destruction=True) destruction_list = DestructionListFactory.create( author=record_manager, status=ListStatus.new, @@ -354,9 +354,9 @@ def test_cannot_reassign_destruction_list_without_comment(self): self.assertEqual(response.json()["comment"][0], _("This field is required.")) def test_cannot_reassign_destruction_list_with_empty_comment(self): - record_manager1 = UserFactory.create(role__can_start_destruction=True) + record_manager1 = UserFactory.create(post__can_start_destruction=True) reviewer = DestructionListAssigneeFactory.create( - user__role__can_review_destruction=True + user__post__can_review_destruction=True ) destruction_list = DestructionListFactory.create( @@ -387,7 +387,7 @@ def test_cannot_reassign_destruction_list_with_empty_comment(self): def test_cannot_reassign_destruction_list_with_author_as_reviewer(self): record_manager = UserFactory.create( - role__can_start_destruction=True, role__can_review_destruction=True + post__can_start_destruction=True, post__can_review_destruction=True ) destruction_list = DestructionListFactory.create( name="A test list", @@ -418,12 +418,12 @@ def test_cannot_reassign_destruction_list_with_author_as_reviewer(self): ) def test_reassign_destruction_list(self): - record_manager = UserFactory.create(role__can_start_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) destruction_list = DestructionListFactory.create( status=ListStatus.ready_to_review, author=record_manager ) DestructionListAssigneeFactory.create(destruction_list=destruction_list) - other_reviewer = UserFactory.create(role__can_review_destruction=True) + other_reviewer = UserFactory.create(post__can_review_destruction=True) self.client.force_authenticate(user=record_manager) endpoint = reverse( @@ -457,9 +457,9 @@ def test_reassign_destruction_list(self): self.assertEqual(log_entry.extra_data["comment"], "Lorem ipsum...") def test_partially_update_destruction_list(self): - record_manager = UserFactory.create(role__can_start_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) reviewer = UserFactory.create( - username="reviewer", role__can_review_destruction=True + username="reviewer", post__can_review_destruction=True ) destruction_list = DestructionListFactory.create( @@ -523,10 +523,10 @@ def test_destruction_list_filter_on_assignee(self): def test_mark_as_final(self): record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) archivist = UserFactory.create( - username="archivist", role__can_review_final_list=True + username="archivist", post__can_review_final_list=True ) destruction_list = DestructionListFactory.create( name="A test list", @@ -599,10 +599,10 @@ def test_cannot_mark_as_final_if_not_authenticated(self): def test_cannot_mark_as_final_if_not_author(self): record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) archivist = UserFactory.create( - username="archivist", role__can_review_final_list=True + username="archivist", post__can_review_final_list=True ) destruction_list = DestructionListFactory.create( name="A test list", @@ -624,10 +624,10 @@ def test_cannot_mark_as_final_if_not_author(self): def test_cannot_mark_as_finally_if_not_internally_reviewed(self): record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) archivist = UserFactory.create( - username="archivist", role__can_review_final_list=True + username="archivist", post__can_review_final_list=True ) destruction_list = DestructionListFactory.create( name="A test list", @@ -650,10 +650,10 @@ def test_cannot_mark_as_finally_if_not_internally_reviewed(self): def test_cannot_mark_as_final_if_posted_user_is_not_archivist(self): record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) internal_reviewer = UserFactory.create( - username="archivist", role__can_review_final_list=False + username="archivist", post__can_review_final_list=False ) destruction_list = DestructionListFactory.create( name="A test list", @@ -679,7 +679,7 @@ def test_cannot_mark_as_final_if_posted_user_is_not_archivist(self): ) def test_mark_as_ready_to_review(self): - record_manager = UserFactory.create(role__can_start_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) destruction_list = DestructionListFactory.create( name="A test list", @@ -692,7 +692,7 @@ def test_mark_as_ready_to_review(self): reviewer = DestructionListAssigneeFactory.create( destruction_list=destruction_list, role=ListRole.reviewer, - user__role__can_review_destruction=True, + user__post__can_review_destruction=True, ) self.client.force_authenticate(user=record_manager) @@ -741,7 +741,7 @@ def test_cannot_mark_as_ready_to_review_if_not_authenticated(self): def test_cannot_mark_as_ready_to_review_if_not_author(self): record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) destruction_list = DestructionListFactory.create( name="A test list", @@ -952,7 +952,7 @@ def test_create_review(self): reviewer = UserFactory.create( username="reviewer", email="reviewer@oab.nl", - role__can_review_destruction=True, + post__can_review_destruction=True, ) destruction_list = DestructionListFactory.create( assignee=reviewer, status=ListStatus.ready_to_review @@ -989,7 +989,7 @@ def test_create_review_rejected(self): reviewer = UserFactory.create( username="reviewer", email="reviewer@oab.nl", - role__can_review_destruction=True, + post__can_review_destruction=True, ) destruction_list = DestructionListFactory.create( assignee=reviewer, status=ListStatus.ready_to_review @@ -1041,7 +1041,7 @@ def test_create_review_archivist_accepted(self): archivist = UserFactory.create( username="archivaris", email="archivaris@oab.nl", - role__can_review_final_list=True, + post__can_review_final_list=True, ) destruction_list = DestructionListFactory.create( assignee=archivist, status=ListStatus.ready_for_archivist @@ -1078,7 +1078,7 @@ def test_create_review_archivist_rejected(self): reviewer = UserFactory.create( username="reviewer", email="reviewer@oab.nl", - role__can_review_final_list=True, + post__can_review_final_list=True, ) destruction_list = DestructionListFactory.create( assignee=reviewer, status=ListStatus.ready_for_archivist @@ -1176,7 +1176,7 @@ def test_create_review_accepted_long_procedure(self): reviewer = UserFactory.create( username="reviewer", email="reviewer@oab.nl", - role__can_review_destruction=True, + post__can_review_destruction=True, ) destruction_list = DestructionListFactory.create( assignee=reviewer, status=ListStatus.ready_to_review @@ -1235,7 +1235,7 @@ def test_create_review_accepted_short_procedure(self): reviewer = UserFactory.create( username="reviewer", email="reviewer@oab.nl", - role__can_review_destruction=True, + post__can_review_destruction=True, ) destruction_list = DestructionListFactory.create( assignee=reviewer, status=ListStatus.ready_to_review diff --git a/backend/src/openarchiefbeheer/destruction/tests/test_serializers.py b/backend/src/openarchiefbeheer/destruction/tests/test_serializers.py index 66be9fb5..e0936b44 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/test_serializers.py +++ b/backend/src/openarchiefbeheer/destruction/tests/test_serializers.py @@ -36,10 +36,10 @@ def test_create_destruction_list(self): reviewer = UserFactory.create( username="reviewer", email="reviewer@oab.nl", - role__can_review_destruction=True, + post__can_review_destruction=True, ) record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) ZaakFactory.create( url="http://localhost:8003/zaken/api/v1/zaken/111-111-111", @@ -114,10 +114,10 @@ def test_create_destruction_list(self): def test_zaak_already_included_in_other_list(self): reviewer = UserFactory.create( - username="reviewer", role__can_review_destruction=True + username="reviewer", post__can_review_destruction=True ) record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) ZaakFactory.create( @@ -167,10 +167,10 @@ def test_zaak_already_included_in_other_list(self): def test_zaak_already_included_in_other_list_but_exempt(self): reviewer = UserFactory.create( - username="reviewer", role__can_review_destruction=True + username="reviewer", post__can_review_destruction=True ) record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) ZaakFactory.create( @@ -209,7 +209,7 @@ def test_zaak_already_included_in_other_list_but_exempt(self): def test_full_list_update(self): record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) destruction_list = DestructionListFactory.create( @@ -267,7 +267,7 @@ def test_full_list_update(self): def test_partial_list_update(self): reviewer = UserFactory.create( - username="reviewer", role__can_review_destruction=True + username="reviewer", post__can_review_destruction=True ) destruction_list = DestructionListFactory.create( @@ -288,7 +288,7 @@ def test_partial_list_update(self): } record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) request = factory.get("/foo") request.user = record_manager @@ -326,7 +326,7 @@ def test_partial_update_with_zaken(self): "items": [{"zaak": items[0].zaak.url}, {"zaak": items[1].zaak.url}], } - record_manager = UserFactory.create(role__can_start_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) request = factory.get("/foo") request.user = record_manager @@ -352,8 +352,8 @@ def test_partial_update_with_zaken(self): def test_assign_author_as_reviewer(self): record_manager = UserFactory.create( username="record_manager", - role__can_start_destruction=True, - role__can_review_destruction=True, + post__can_start_destruction=True, + post__can_review_destruction=True, ) ZaakFactory.create(url="http://localhost:8003/zaken/api/v1/zaken/111-111-111") ZaakFactory.create(url="http://localhost:8003/zaken/api/v1/zaken/222-222-222") @@ -391,10 +391,10 @@ def test_create_list_with_bulk_select_cases(self): reviewer = UserFactory.create( username="reviewer1", email="reviewer1@oab.nl", - role__can_review_destruction=True, + post__can_review_destruction=True, ) record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) ZaakFactory.create( url="http://localhost:8003/zaken/api/v1/zaken/111-111-111", @@ -453,10 +453,10 @@ def test_create_list_with_bulk_select_cases_no_filters(self): reviewer = UserFactory.create( username="reviewer", email="reviewer@oab.nl", - role__can_review_destruction=True, + post__can_review_destruction=True, ) record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) ZaakFactory.create( url="http://localhost:8003/zaken/api/v1/zaken/111-111-111", @@ -497,10 +497,10 @@ def test_no_bulk_select_and_no_items(self): reviewer = UserFactory.create( username="reviewer", email="reviewer@oab.nl", - role__can_review_destruction=True, + post__can_review_destruction=True, ) record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) request = factory.get("/foo") @@ -529,10 +529,10 @@ def test_zaak_filters_validation(self): reviewer = UserFactory.create( username="reviewer", email="reviewer@oab.nl", - role__can_review_destruction=True, + post__can_review_destruction=True, ) record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) request = factory.get("/foo") @@ -580,7 +580,7 @@ def test_zaak_filters_validation(self): def test_update_with_bulk_select(self): record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) destruction_list = DestructionListFactory.create( @@ -645,12 +645,12 @@ def test_if_user_not_assigned_cannot_create_review(self): reviewer1 = UserFactory.create( username="reviewer1", email="reviewer1@oab.nl", - role__can_review_destruction=True, + post__can_review_destruction=True, ) reviewer2 = UserFactory.create( username="reviewer2", email="reviewer2@oab.nl", - role__can_review_destruction=True, + post__can_review_destruction=True, ) destruction_list = DestructionListFactory.create(assignee=reviewer1) @@ -679,8 +679,8 @@ def test_if_list_in_wrong_status_cannot_be_reviewed(self): reviewer = UserFactory.create( username="reviewer", email="reviewer@oab.nl", - role__can_review_destruction=True, - role__can_review_final_list=True, + post__can_review_destruction=True, + post__can_review_final_list=True, ) destruction_list = DestructionListFactory.create( assignee=reviewer, status=ListStatus.changes_requested @@ -710,7 +710,7 @@ def test_if_user_not_a_reviewer_cannot_create_review(self): reviewer = UserFactory.create( username="reviewer", email="reviewer@oab.nl", - role__can_review_destruction=False, + post__can_review_destruction=False, ) destruction_list = DestructionListFactory.create( assignee=reviewer, status=ListStatus.ready_to_review @@ -740,7 +740,7 @@ def test_if_user_not_an_archivist_cannot_create_review(self): reviewer = UserFactory.create( username="reviewer", email="reviewer@oab.nl", - role__can_review_final_list=False, + post__can_review_final_list=False, ) destruction_list = DestructionListFactory.create( assignee=reviewer, status=ListStatus.ready_for_archivist @@ -769,7 +769,7 @@ def test_create_review_accepted(self): reviewer = UserFactory.create( username="reviewer", email="reviewer@oab.nl", - role__can_review_destruction=True, + post__can_review_destruction=True, ) destruction_list = DestructionListFactory.create( assignee=reviewer, @@ -828,7 +828,7 @@ def test_create_review_accepted_cannot_have_item_reviews(self): reviewer = UserFactory.create( username="reviewer", email="reviewer@oab.nl", - role__can_review_destruction=True, + post__can_review_destruction=True, ) destruction_list = DestructionListFactory.create( assignee=reviewer, status=ListStatus.ready_to_review @@ -865,7 +865,7 @@ def test_create_review_rejected_must_have_item_reviews(self): reviewer = UserFactory.create( username="reviewer", email="reviewer@oab.nl", - role__can_review_destruction=True, + post__can_review_destruction=True, ) destruction_list = DestructionListFactory.create( assignee=reviewer, status=ListStatus.ready_to_review @@ -893,7 +893,7 @@ def test_create_review_rejected(self): reviewer = UserFactory.create( username="reviewer", email="reviewer@oab.nl", - role__can_review_destruction=True, + post__can_review_destruction=True, ) destruction_list = DestructionListFactory.create( assignee=reviewer, name="Test list", status=ListStatus.ready_to_review @@ -956,7 +956,7 @@ def test_reviewing_cases_not_in_destruction_list(self): reviewer = UserFactory.create( username="reviewer", email="reviewer@oab.nl", - role__can_review_destruction=True, + post__can_review_destruction=True, ) destruction_list = DestructionListFactory.create( assignee=reviewer, status=ListStatus.ready_to_review @@ -996,7 +996,7 @@ def test_reviewing_cases_removed_from_destruction_list(self): reviewer = UserFactory.create( username="reviewer", email="reviewer@oab.nl", - role__can_review_destruction=True, + post__can_review_destruction=True, ) destruction_list = DestructionListFactory.create( assignee=reviewer, status=ListStatus.ready_to_review diff --git a/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py b/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py index 6517f1e8..e64cb443 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py +++ b/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py @@ -429,7 +429,7 @@ def mock_exceptions(zaak, result_store): @override_settings(CELERY_TASK_ALWAYS_EAGER=True) def test_deleting_list_with_zaken_archiefactiedatum_in_the_future(self): record_manager = UserFactory.create( - username="record_manager", role__can_start_destruction=True + username="record_manager", post__can_start_destruction=True ) destruction_list = DestructionListFactory.create( name="A test list", diff --git a/backend/src/openarchiefbeheer/destruction/tests/test_utils.py b/backend/src/openarchiefbeheer/destruction/tests/test_utils.py index e45291c4..10f8cdbe 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/test_utils.py +++ b/backend/src/openarchiefbeheer/destruction/tests/test_utils.py @@ -19,7 +19,7 @@ def test_process_assignees(self): 3, role=ListRole.reviewer, destruction_list=destruction_list ) - new_reviewer = UserFactory.create(role__can_review_destruction=True) + new_reviewer = UserFactory.create(post__can_review_destruction=True) process_new_reviewer(destruction_list, new_reviewer) diff --git a/backend/src/openarchiefbeheer/destruction/tests/vcr/test_tasks.py b/backend/src/openarchiefbeheer/destruction/tests/vcr/test_tasks.py index b02c7001..608bd089 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/vcr/test_tasks.py +++ b/backend/src/openarchiefbeheer/destruction/tests/vcr/test_tasks.py @@ -40,9 +40,9 @@ def test_process_response(self): with freeze_time("2024-08-29T16:00:00+02:00"): retrieve_and_cache_zaken_from_openzaak() - record_manager = UserFactory.create(role__can_start_destruction=True) + record_manager = UserFactory.create(post__can_start_destruction=True) reviewer = UserFactory.create( - role__can_review_destruction=True, + post__can_review_destruction=True, ) zaak = Zaak.objects.get(identificatie="ZAAK-01") diff --git a/backend/src/openarchiefbeheer/fixtures/default_admin_index.json b/backend/src/openarchiefbeheer/fixtures/default_admin_index.json index f999e7bd..93482bb2 100644 --- a/backend/src/openarchiefbeheer/fixtures/default_admin_index.json +++ b/backend/src/openarchiefbeheer/fixtures/default_admin_index.json @@ -19,7 +19,7 @@ "slug": "users", "models": [ ["accounts", "user"], - ["accounts", "role"] + ["auth", "group"] ] } }, diff --git a/backend/src/openarchiefbeheer/utils/tests/e2e.py b/backend/src/openarchiefbeheer/utils/tests/e2e.py index 6059f03a..0302d6e3 100644 --- a/backend/src/openarchiefbeheer/utils/tests/e2e.py +++ b/backend/src/openarchiefbeheer/utils/tests/e2e.py @@ -46,6 +46,7 @@ async def browser_page_with_tracing(): class PlaywrightTestCase(StaticLiveServerTestCase): port = settings.E2E_PORT + fixtures = ["permissions.json"] def setUp(self): super().setUp() diff --git a/backend/src/openarchiefbeheer/utils/tests/gherkin.py b/backend/src/openarchiefbeheer/utils/tests/gherkin.py index c138a7de..82a8f58c 100644 --- a/backend/src/openarchiefbeheer/utils/tests/gherkin.py +++ b/backend/src/openarchiefbeheer/utils/tests/gherkin.py @@ -99,7 +99,7 @@ async def record_manager_exists(self, **kwargs): "username": "Record Manager", "first_name": "Record", "last_name": "Manager", - "role__can_start_destruction": True, + "post__can_start_destruction": True, } merged_kwargs = {**base_kwargs, **kwargs} return await self.user_exists(**merged_kwargs) @@ -109,7 +109,7 @@ async def reviewer_exists(self, **kwargs): "username": "Beoordelaar", "first_name": "Beoor", "last_name": "del Laar", - "role__can_review_destruction": True, + "post__can_review_destruction": True, } merged_kwargs = {**base_kwargs, **kwargs} return await self.user_exists(**merged_kwargs) @@ -119,7 +119,7 @@ async def archivist_exists(self, **kwargs): "username": "Achivaris", "first_name": "Archi", "last_name": "Varis", - "role__can_review_final_list": True, + "post__can_review_final_list": True, } merged_kwargs = {**base_kwargs, **kwargs} return await self.user_exists(**merged_kwargs) @@ -256,7 +256,15 @@ async def _get_or_create(self, factory, **kwargs): get_kwargs = kwargs.copy() if "password" in get_kwargs: get_kwargs.pop("password") - return await self._orm_get(factory._meta.model, **get_kwargs) + + # Remove any traits/postgeneration attributes of the factory + orm_params = { + key: value + for key, value in get_kwargs.items() + if key not in factory._meta.parameters + and not key.startswith("post__") + } + return await self._orm_get(factory._meta.model, **orm_params) except factory._meta.model.DoesNotExist: return await self._factory_create(factory, **kwargs) diff --git a/backend/src/openarchiefbeheer/zaken/tests/test_filtersets.py b/backend/src/openarchiefbeheer/zaken/tests/test_filtersets.py index d411f9fe..5f2eb72c 100644 --- a/backend/src/openarchiefbeheer/zaken/tests/test_filtersets.py +++ b/backend/src/openarchiefbeheer/zaken/tests/test_filtersets.py @@ -26,7 +26,7 @@ def test_filter_out_zaken_already_in_destruction_lists(self): # This zaak SHOULD be returned by the endpoint (it was included in a destruction list, but was then excluded) DestructionListItemFactory.create(status=ListItemStatus.removed, with_zaak=True) - user = UserFactory(username="record_manager", role__can_start_destruction=True) + user = UserFactory(username="record_manager", post__can_start_destruction=True) endpoint = furl(reverse("api:zaken-list")) endpoint.args["not_in_destruction_list"] = "True" @@ -46,7 +46,7 @@ def test_using_query_params_to_filter(self): ZaakFactory.create_batch(2, startdatum=date(2020, 1, 1)) recent_zaken = ZaakFactory.create_batch(3, startdatum=date(2022, 1, 1)) - user = UserFactory(username="record_manager", role__can_start_destruction=True) + user = UserFactory(username="record_manager", post__can_start_destruction=True) endpoint = furl(reverse("api:zaken-list")) endpoint.args["startdatum__gt"] = "2021-01-01" @@ -90,7 +90,7 @@ def test_filter_resultaattype(self): }, ) - user = UserFactory(username="record_manager", role__can_start_destruction=True) + user = UserFactory(username="record_manager", post__can_start_destruction=True) endpoint = furl(reverse("api:zaken-list")) endpoint.args["_expand__resultaat__resultaattype"] = ( @@ -122,7 +122,7 @@ def test_filter_bewaartermijn(self): }, ) - user = UserFactory(username="record_manager", role__can_start_destruction=True) + user = UserFactory(username="record_manager", post__can_start_destruction=True) endpoint = furl(reverse("api:zaken-list")) endpoint.args["bewaartermijn"] = "P1D" @@ -142,7 +142,7 @@ def test_filter_vcs(self): 2, post___expand={"zaaktype": {"selectielijst_procestype": {"nummer": 2}}} ) - user = UserFactory(username="record_manager", role__can_start_destruction=True) + user = UserFactory(username="record_manager", post__can_start_destruction=True) endpoint = furl(reverse("api:zaken-list")) endpoint.args["vcs"] = 1 @@ -168,7 +168,7 @@ def test_filter_heeft_relaties(self): ) no_relations_zaken = ZaakFactory.create_batch(2, relevante_andere_zaken=[]) - user = UserFactory(username="record_manager", role__can_start_destruction=True) + user = UserFactory(username="record_manager", post__can_start_destruction=True) endpoint = furl(reverse("api:zaken-list")) endpoint.args["heeft_relaties"] = True @@ -212,7 +212,7 @@ def test_partial_filter(self): post___expand={"zaaktype": {"omschrijving": "Aangifte behandelen"}}, ) - user = UserFactory(username="record_manager", role__can_start_destruction=True) + user = UserFactory(username="record_manager", post__can_start_destruction=True) endpoint = furl(reverse("api:zaken-list")) endpoint.args["identificatie__icontains"] = "ABC" @@ -240,7 +240,7 @@ def test_filter_out_zaken_already_in_destruction_lists_except_one(self): status=ListItemStatus.suggested, with_zaak=True ) - user = UserFactory(username="record_manager", role__can_start_destruction=True) + user = UserFactory(username="record_manager", post__can_start_destruction=True) endpoint = furl(reverse("api:zaken-list")) endpoint.args["not_in_destruction_list_except"] = item.destruction_list.uuid @@ -311,7 +311,7 @@ def test_filter_behandelend_afdeling(self): } ) - user = UserFactory(username="record_manager", role__can_start_destruction=True) + user = UserFactory(username="record_manager", post__can_start_destruction=True) endpoint = furl(reverse("api:zaken-list")) endpoint.args["behandelend_afdeling__icontains"] = "BLA" @@ -328,7 +328,7 @@ def test_ordering(self): zaak_1 = ZaakFactory.create(identificatie="ZAAK-0000-0000000001") zaak_3 = ZaakFactory.create(identificatie="ZAAK-0000-0000000003") - user = UserFactory(username="record_manager", role__can_start_destruction=True) + user = UserFactory(username="record_manager", post__can_start_destruction=True) self.client.force_authenticate(user) @@ -375,7 +375,7 @@ def test_filter_on_destruction_list(self): destruction_list=destruction_list, ) - user = UserFactory(username="record_manager", role__can_start_destruction=True) + user = UserFactory(username="record_manager", post__can_start_destruction=True) endpoint = furl(reverse("api:zaken-list")) endpoint.args["in_destruction_list"] = destruction_list.uuid @@ -392,7 +392,7 @@ def test_filter_on_zaaktype(self): ZaakFactory.create_batch(3, identificatie="ZAAK-01") zaken_2 = ZaakFactory.create_batch(2, identificatie="ZAAK-02") - user = UserFactory(username="record_manager", role__can_start_destruction=True) + user = UserFactory(username="record_manager", post__can_start_destruction=True) endpoint = furl(reverse("api:zaken-list")) endpoint.args["zaaktype__in"] = ",".join( diff --git a/backend/src/openarchiefbeheer/zaken/tests/test_tasks.py b/backend/src/openarchiefbeheer/zaken/tests/test_tasks.py index c61f85ba..ee446cac 100644 --- a/backend/src/openarchiefbeheer/zaken/tests/test_tasks.py +++ b/backend/src/openarchiefbeheer/zaken/tests/test_tasks.py @@ -347,6 +347,10 @@ def test_retrieve_zaken_with_geometry(self, m): @Mocker() class RetrieveCachedZakenWithProcestypeTest(TransactionTestCase): + # Needed, because the test teardown calls the management command "flush", which + # removes the permissions created with the data migration from the db. + fixtures = ["permissions.json"] + def setUp(self): super().setUp() diff --git a/backend/src/openarchiefbeheer/zaken/tests/test_views.py b/backend/src/openarchiefbeheer/zaken/tests/test_views.py index 11551374..c44e9ad7 100644 --- a/backend/src/openarchiefbeheer/zaken/tests/test_views.py +++ b/backend/src/openarchiefbeheer/zaken/tests/test_views.py @@ -423,7 +423,7 @@ def test_retrieve_choices(self, m): api_type=APITypes.orc, api_root="http://selectielijst.nl/api/v1", ) - user = UserFactory.create(role__can_start_destruction=True) + user = UserFactory.create(post__can_start_destruction=True) zaak = ZaakFactory.create() process_type_url = zaak._expand["zaaktype"]["selectielijst_procestype"]["url"] @@ -505,7 +505,7 @@ def test_retrieve_choices_without_zaak(self, m): ) # Create a user with the appropriate role - user = UserFactory.create(role__can_start_destruction=True) + user = UserFactory.create(post__can_start_destruction=True) # Mock the response from the external API m.get( @@ -587,7 +587,7 @@ def test_response_cached(self, m): api_type=APITypes.orc, api_root="http://selectielijst.nl/api/v1", ) - user = UserFactory.create(role__can_start_destruction=True) + user = UserFactory.create(post__can_start_destruction=True) zaak = ZaakFactory.create() process_type_url = zaak._expand["zaaktype"]["selectielijst_procestype"]["url"] diff --git a/backend/src/openarchiefbeheer/zaken/tests/test_viewsets.py b/backend/src/openarchiefbeheer/zaken/tests/test_viewsets.py index 7c9e9d67..02461d92 100644 --- a/backend/src/openarchiefbeheer/zaken/tests/test_viewsets.py +++ b/backend/src/openarchiefbeheer/zaken/tests/test_viewsets.py @@ -25,7 +25,7 @@ def test_not_authenticated(self): self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) def test_authenticated_without_permission(self): - user = UserFactory.create(role__can_start_destruction=False) + user = UserFactory.create(post__can_start_destruction=False) self.client.force_authenticate(user=user) endpoint = reverse("api:zaken-list") @@ -37,7 +37,7 @@ def test_authenticated_without_permission(self): def test_retrieve_all_zaken_as_record_manager(self): ZaakFactory.create_batch(4) - user = UserFactory(username="record_manager", role__can_start_destruction=True) + user = UserFactory(username="record_manager", post__can_start_destruction=True) self.client.force_authenticate(user) response = self.client.get(reverse("api:zaken-list")) @@ -49,7 +49,7 @@ def test_retrieve_all_zaken_as_record_manager(self): def test_retrieve_all_zaken_as_reviewer(self): ZaakFactory.create_batch(4) - user = UserFactory(username="reviewer", role__can_review_destruction=True) + user = UserFactory(username="reviewer", post__can_review_destruction=True) self.client.force_authenticate(user) response = self.client.get(reverse("api:zaken-list")) @@ -68,7 +68,7 @@ def test_retrieve_all_zaken_with_removed_zaken(self): processing_status=InternalStatus.succeeded, ) - user = UserFactory(username="record_manager", role__can_start_destruction=True) + user = UserFactory(username="record_manager", post__can_start_destruction=True) self.client.force_authenticate(user) @@ -94,7 +94,7 @@ def test_filter_zaken_with_removed_zaken(self): for zaak in zaken_in_list: DestructionListItemFactory.create(destruction_list=list, zaak=zaak) - user = UserFactory(username="record_manager", role__can_start_destruction=True) + user = UserFactory(username="record_manager", post__can_start_destruction=True) self.client.force_authenticate(user) endpoint = furl(reverse("api:zaken-list"))