summaryrefslogtreecommitdiff
path: root/tests/modeladmin/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/modeladmin/tests.py')
-rw-r--r--tests/modeladmin/tests.py44
1 files changed, 43 insertions, 1 deletions
diff --git a/tests/modeladmin/tests.py b/tests/modeladmin/tests.py
index d0123de722..db6e9e8864 100644
--- a/tests/modeladmin/tests.py
+++ b/tests/modeladmin/tests.py
@@ -11,7 +11,7 @@ from django.contrib.admin.widgets import (
AdminDateWidget, AdminRadioSelect, AutocompleteSelect,
AutocompleteSelectMultiple,
)
-from django.contrib.auth.models import User
+from django.contrib.auth.models import Permission, User
from django.db import models
from django.forms.widgets import Select
from django.test import SimpleTestCase, TestCase
@@ -676,6 +676,18 @@ class ModelAdminTests(TestCase):
self.assertEqual(perms_needed, set())
self.assertEqual(protected, [])
+ def test_get_actions_requires_change_perm(self):
+ user = User.objects.create_user(username='bob', email='bob@test.com', password='test')
+ mock_request = MockRequest()
+ mock_request.user = user
+ mock_request.GET = {}
+ ma = ModelAdmin(Band, self.site)
+ self.assertEqual(list(ma.get_actions(mock_request).keys()), [])
+ p = Permission.objects.get(codename='change_band', content_type=get_content_type_for_model(Band()))
+ user.user_permissions.add(p)
+ mock_request.user = User.objects.get(pk=user.pk)
+ self.assertEqual(list(ma.get_actions(mock_request).keys()), ['delete_selected'])
+
class ModelAdminPermissionTests(SimpleTestCase):
@@ -683,6 +695,10 @@ class ModelAdminPermissionTests(SimpleTestCase):
def has_module_perms(self, app_label):
return app_label == 'modeladmin'
+ class MockViewUser(MockUser):
+ def has_perm(self, perm):
+ return perm == 'modeladmin.view_band'
+
class MockAddUser(MockUser):
def has_perm(self, perm):
return perm == 'modeladmin.add_band'
@@ -695,6 +711,22 @@ class ModelAdminPermissionTests(SimpleTestCase):
def has_perm(self, perm):
return perm == 'modeladmin.delete_band'
+ def test_has_view_permission(self):
+ """
+ has_view_permission() returns True for users who can view objects and
+ False for users who can't.
+ """
+ ma = ModelAdmin(Band, AdminSite())
+ request = MockRequest()
+ request.user = self.MockViewUser()
+ self.assertIs(ma.has_view_permission(request), True)
+ request.user = self.MockAddUser()
+ self.assertIs(ma.has_view_permission(request), False)
+ request.user = self.MockChangeUser()
+ self.assertIs(ma.has_view_permission(request), True)
+ request.user = self.MockDeleteUser()
+ self.assertIs(ma.has_view_permission(request), False)
+
def test_has_add_permission(self):
"""
has_add_permission returns True for users who can add objects and
@@ -702,6 +734,8 @@ class ModelAdminPermissionTests(SimpleTestCase):
"""
ma = ModelAdmin(Band, AdminSite())
request = MockRequest()
+ request.user = self.MockViewUser()
+ self.assertFalse(ma.has_add_permission(request))
request.user = self.MockAddUser()
self.assertTrue(ma.has_add_permission(request))
request.user = self.MockChangeUser()
@@ -735,6 +769,8 @@ class ModelAdminPermissionTests(SimpleTestCase):
"""
ma = ModelAdmin(Band, AdminSite())
request = MockRequest()
+ request.user = self.MockViewUser()
+ self.assertIs(ma.has_change_permission(request), False)
request.user = self.MockAddUser()
self.assertFalse(ma.has_change_permission(request))
request.user = self.MockChangeUser()
@@ -749,6 +785,8 @@ class ModelAdminPermissionTests(SimpleTestCase):
"""
ma = ModelAdmin(Band, AdminSite())
request = MockRequest()
+ request.user = self.MockViewUser()
+ self.assertIs(ma.has_delete_permission(request), False)
request.user = self.MockAddUser()
self.assertFalse(ma.has_delete_permission(request))
request.user = self.MockChangeUser()
@@ -763,6 +801,8 @@ class ModelAdminPermissionTests(SimpleTestCase):
"""
ma = ModelAdmin(Band, AdminSite())
request = MockRequest()
+ request.user = self.MockViewUser()
+ self.assertIs(ma.has_module_permission(request), True)
request.user = self.MockAddUser()
self.assertTrue(ma.has_module_permission(request))
request.user = self.MockChangeUser()
@@ -773,6 +813,8 @@ class ModelAdminPermissionTests(SimpleTestCase):
original_app_label = ma.opts.app_label
ma.opts.app_label = 'anotherapp'
try:
+ request.user = self.MockViewUser()
+ self.assertIs(ma.has_module_permission(request), False)
request.user = self.MockAddUser()
self.assertFalse(ma.has_module_permission(request))
request.user = self.MockChangeUser()