summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2026-05-20 12:47:02 +0200
committerJacob Walls <jacobtylerwalls@gmail.com>2026-05-20 08:04:44 -0400
commit8fd29079ed1253f0cd88ccf330de30271a5d15e4 (patch)
tree49603e8dffe0f0edf1d9f03426a612905d0a8786 /tests
parent7c125f6a6660a70a0568448b2e40db273a456479 (diff)
Refs #12090 -- Aligned admin change form and list minimum permission to run action.
Diffstat (limited to 'tests')
-rw-r--r--tests/admin_views/test_actions.py31
1 files changed, 30 insertions, 1 deletions
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"&quot;obj\\&quot;", 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,
+ '<option value="external_mail">'
+ "External mail (Another awesome action)</option>",
+ 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",