diff options
| author | olivierdalang <olivier.dalang@gmail.com> | 2018-05-02 20:39:12 +1200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2018-05-16 06:44:55 -0400 |
| commit | 825f0beda804e48e9197fcf3b0d909f9f548aa47 (patch) | |
| tree | be5036c256efa1cd06a72b3265ed97884afc39cb /tests/modeladmin | |
| parent | 35b6a348dea6b019679fe35fd443be875bdb028e (diff) | |
Fixed #8936 -- Added a view permission and a read-only admin.
Co-authored-by: Petr Dlouhy <petr.dlouhy@email.cz>
Co-authored-by: Olivier Dalang <olivier.dalang@gmail.com>
Diffstat (limited to 'tests/modeladmin')
| -rw-r--r-- | tests/modeladmin/tests.py | 44 |
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() |
