summaryrefslogtreecommitdiff
path: root/tests/admin_views
diff options
context:
space:
mode:
Diffstat (limited to 'tests/admin_views')
-rw-r--r--tests/admin_views/admin.py1
-rw-r--r--tests/admin_views/tests.py29
2 files changed, 19 insertions, 11 deletions
diff --git a/tests/admin_views/admin.py b/tests/admin_views/admin.py
index 5a9923848f..be38a14b03 100644
--- a/tests/admin_views/admin.py
+++ b/tests/admin_views/admin.py
@@ -1019,3 +1019,4 @@ site2.register(Person, save_as_continue=False)
site7 = admin.AdminSite(name="admin7")
site7.register(Article, ArticleAdmin2)
+site7.register(Section)
diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py
index 3007764b5d..0eae2e467a 100644
--- a/tests/admin_views/tests.py
+++ b/tests/admin_views/tests.py
@@ -1926,10 +1926,9 @@ class AdminViewPermissionsTest(TestCase):
response = self.client.get(reverse('secure_view'), follow=True)
self.assertContains(response, 'id="login-form"')
- def test_app_index_fail_early(self):
+ def test_app_list_permissions(self):
"""
- If a user has no module perms, avoid iterating over all the modeladmins
- in the registry.
+ If a user has no module perms, the app list returns a 404.
"""
opts = Article._meta
change_user = User.objects.get(username='changeuser')
@@ -1937,10 +1936,10 @@ class AdminViewPermissionsTest(TestCase):
self.client.force_login(self.changeuser)
- # the user has no module permissions, because this module doesn't exist
+ # the user has no module permissions
change_user.user_permissions.remove(permission)
response = self.client.get(reverse('admin:app_list', args=('admin_views',)))
- self.assertEqual(response.status_code, 403)
+ self.assertEqual(response.status_code, 404)
# the user now has module permissions
change_user.user_permissions.add(permission)
@@ -2002,30 +2001,38 @@ class AdminViewPermissionsTest(TestCase):
In this case, it always returns False, so the module should not be
displayed on the admin index page for any users.
"""
+ articles = Article._meta.verbose_name_plural.title()
+ sections = Section._meta.verbose_name_plural.title()
index_url = reverse('admin7:index')
self.client.force_login(self.superuser)
response = self.client.get(index_url)
- self.assertNotContains(response, 'admin_views')
- self.assertNotContains(response, 'Articles')
+ self.assertContains(response, sections)
+ self.assertNotContains(response, articles)
self.client.logout()
self.client.force_login(self.adduser)
response = self.client.get(index_url)
self.assertNotContains(response, 'admin_views')
- self.assertNotContains(response, 'Articles')
+ self.assertNotContains(response, articles)
self.client.logout()
self.client.force_login(self.changeuser)
response = self.client.get(index_url)
self.assertNotContains(response, 'admin_views')
- self.assertNotContains(response, 'Articles')
+ self.assertNotContains(response, articles)
self.client.logout()
self.client.force_login(self.deleteuser)
response = self.client.get(index_url)
- self.assertNotContains(response, 'admin_views')
- self.assertNotContains(response, 'Articles')
+ self.assertNotContains(response, articles)
+
+ # The app list displays Sections but not Articles as the latter has
+ # ModelAdmin.has_module_permission() = False.
+ self.client.force_login(self.superuser)
+ response = self.client.get(reverse('admin7:app_list', args=('admin_views',)))
+ self.assertContains(response, sections)
+ self.assertNotContains(response, articles)
def test_post_save_message_no_forbidden_links_visible(self):
"""