Add permission tests for search promotions views

This ensures we don't miss adding permission_policy to the views
pull/11950/merge
Sage Abdullah 2024-11-22 16:34:09 +00:00 zatwierdzone przez Matt Westcott
rodzic 4bbd26d5a4
commit 5f3235fa4f
1 zmienionych plików z 111 dodań i 1 usunięć
wagtail/contrib/search_promotions

Wyświetl plik

@ -805,6 +805,40 @@ class TestSearchPromotionsAddView(AdminTemplateTestUtils, WagtailTestUtils, Test
self.assertFormSetError(response.context["searchpicks_formset"], 0, None, [])
self.assertFormSetError(response.context["searchpicks_formset"], None, None, [])
def test_get_with_no_permission(self):
self.user.is_superuser = False
self.user.save()
# Only basic access_admin permission is given
self.user.user_permissions.add(
Permission.objects.get(
content_type__app_label="wagtailadmin",
codename="access_admin",
)
)
response = self.client.get(reverse("wagtailsearchpromotions:add"))
self.assertEqual(response.status_code, 302)
self.assertRedirects(response, reverse("wagtailadmin_home"))
def test_get_with_add_permission_only(self):
self.user.is_superuser = False
self.user.save()
# Only basic access_admin permission is given
self.user.user_permissions.add(
Permission.objects.get(
content_type__app_label="wagtailadmin",
codename="access_admin",
),
Permission.objects.get(
content_type__app_label="wagtailsearchpromotions",
codename="add_searchpromotion",
),
)
response = self.client.get(reverse("wagtailsearchpromotions:add"))
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, "wagtailsearchpromotions/add.html")
class TestSearchPromotionsEditView(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
def setUp(self):
@ -1282,10 +1316,48 @@ class TestSearchPromotionsEditView(AdminTemplateTestUtils, WagtailTestUtils, Tes
self.assertFormSetError(response.context["searchpicks_formset"], 1, None, [])
self.assertFormSetError(response.context["searchpicks_formset"], None, None, [])
def test_get_with_no_permission(self):
self.user.is_superuser = False
self.user.save()
# Only basic access_admin permission is given
self.user.user_permissions.add(
Permission.objects.get(
content_type__app_label="wagtailadmin",
codename="access_admin",
)
)
response = self.client.get(
reverse("wagtailsearchpromotions:edit", args=(self.query.id,)),
)
self.assertEqual(response.status_code, 302)
self.assertRedirects(response, reverse("wagtailadmin_home"))
def test_get_with_edit_permission_only(self):
self.user.is_superuser = False
self.user.save()
# Only basic access_admin permission is given
self.user.user_permissions.add(
Permission.objects.get(
content_type__app_label="wagtailadmin",
codename="access_admin",
),
Permission.objects.get(
content_type__app_label="wagtailsearchpromotions",
codename="change_searchpromotion",
),
)
response = self.client.get(
reverse("wagtailsearchpromotions:edit", args=(self.query.id,)),
)
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, "wagtailsearchpromotions/edit.html")
class TestSearchPromotionsDeleteView(WagtailTestUtils, TestCase):
def setUp(self):
self.login()
self.user = self.login()
# Create a search pick to delete
self.query = Query.get("Hello")
@ -1322,6 +1394,44 @@ class TestSearchPromotionsDeleteView(WagtailTestUtils, TestCase):
SearchPromotion.objects.filter(id=self.search_pick.id).exists()
)
def test_get_with_no_permission(self):
self.user.is_superuser = False
self.user.save()
# Only basic access_admin permission is given
self.user.user_permissions.add(
Permission.objects.get(
content_type__app_label="wagtailadmin",
codename="access_admin",
)
)
response = self.client.get(
reverse("wagtailsearchpromotions:delete", args=(self.query.id,)),
)
self.assertEqual(response.status_code, 302)
self.assertRedirects(response, reverse("wagtailadmin_home"))
def test_get_with_edit_permission_only(self):
self.user.is_superuser = False
self.user.save()
# Only basic access_admin permission is given
self.user.user_permissions.add(
Permission.objects.get(
content_type__app_label="wagtailadmin",
codename="access_admin",
),
Permission.objects.get(
content_type__app_label="wagtailsearchpromotions",
codename="delete_searchpromotion",
),
)
response = self.client.get(
reverse("wagtailsearchpromotions:delete", args=(self.query.id,)),
)
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, "wagtailsearchpromotions/confirm_delete.html")
class TestGarbageCollectManagementCommand(TestCase):
def test_garbage_collect_command(self):