From 8fd29079ed1253f0cd88ccf330de30271a5d15e4 Mon Sep 17 00:00:00 2001 From: Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> Date: Wed, 20 May 2026 12:47:02 +0200 Subject: Refs #12090 -- Aligned admin change form and list minimum permission to run action. --- tests/admin_views/test_actions.py | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/admin_views/test_actions.py b/tests/admin_views/test_actions.py index b723f76914..dbed3a33b6 100644 --- a/tests/admin_views/test_actions.py +++ b/tests/admin_views/test_actions.py @@ -514,7 +514,10 @@ class AdminActionsTest(TestCase): self.assertIn(r""obj\\"", output) -@override_settings(ROOT_URLCONF="admin_views.urls") +@override_settings( + ROOT_URLCONF="admin_views.urls", + MAILERS={"default": {"BACKEND": "django.core.mail.backends.locmem.EmailBackend"}}, +) class AdminActionsPermissionTests(TestCase): @classmethod def setUpTestData(cls): @@ -568,6 +571,32 @@ class AdminActionsPermissionTests(TestCase): ) self.assertEqual(response.status_code, 403) + def test_minimum_permission(self): + permission = Permission.objects.get(codename="view_externalsubscriber") + self.user.user_permissions.add(permission) + es = ExternalSubscriber.objects.create( + name="John Doe", email="john@example.org" + ) + + cl_url = reverse("admin:admin_views_externalsubscriber_changelist") + cl_post = {ACTION_CHECKBOX_NAME: [es.pk], "action": "external_mail"} + cf_url = reverse("admin:admin_views_externalsubscriber_change", args=[es.pk]) + cf_post = {ACTION_CHECKBOX_NAME: [es.pk], "CHANGE_FORM-action": "external_mail"} + + for url, post_data in [(cl_url, cl_post), (cf_url, cf_post)]: + mail.outbox = [] + with self.subTest(url=url): + response = self.client.get(url) + self.assertContains( + response, + '", + html=True, + ) + response = self.client.post(url, post_data) + self.assertEqual(len(mail.outbox), 1) + self.assertEqual(response.status_code, 302) + @override_settings( ROOT_URLCONF="admin_views.urls", -- cgit v1.3