From 0cb60d6e278f3d2706aba3859a976242a85cd6c4 Mon Sep 17 00:00:00 2001 From: Nick Smith Date: Fri, 20 Jun 2014 15:45:52 +0100 Subject: [PATCH] Add UserPagePermissionsProxy tests for a user who can access the admin only --- wagtail/tests/fixtures/test.json | 28 +++++++++++++++++++ .../tests/test_page_permissions.py | 27 ++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/wagtail/tests/fixtures/test.json b/wagtail/tests/fixtures/test.json index 11b82d9f1..3df2ec964 100644 --- a/wagtail/tests/fixtures/test.json +++ b/wagtail/tests/fixtures/test.json @@ -265,6 +265,16 @@ ] } }, +{ + "pk": 6, + "model": "auth.group", + "fields": { + "name": "Admin non-editors", + "permissions": [ + ["access_admin", "wagtailadmin", "admin"] + ] + } +}, { "pk": 1, "model": "wagtailcore.grouppagepermission", @@ -400,6 +410,24 @@ "email": "siteeditor@example.com" } }, +{ + "pk": 6, + "model": "auth.user", + "fields": { + "username": "admin_only_user", + "first_name": "", + "last_name": "", + "is_active": true, + "is_superuser": false, + "is_staff": false, + "groups": [ + ["Admin non-editors"] + ], + "user_permissions": [], + "password": "md5$seasalt$1e9bf2bf5606aa5c39852cc30f0f6f22", + "email": "admin_only_user@example.com" + } +}, { "pk": 1, diff --git a/wagtail/wagtailcore/tests/test_page_permissions.py b/wagtail/wagtailcore/tests/test_page_permissions.py index d650cdacc..11a981f8d 100644 --- a/wagtail/wagtailcore/tests/test_page_permissions.py +++ b/wagtail/wagtailcore/tests/test_page_permissions.py @@ -276,3 +276,30 @@ class TestPagePermission(TestCase): self.assertTrue(publishable_pages.filter(id=someone_elses_event_page.id).exists()) self.assertTrue(can_publish_pages) + + def test_editable_pages_for_non_editing_user(self): + user = User.objects.get(username='admin_only_user') + homepage = Page.objects.get(url_path='/home/') + christmas_page = EventPage.objects.get(url_path='/home/events/christmas/') + unpublished_event_page = EventPage.objects.get(url_path='/home/events/tentative-unpublished-event/') + someone_elses_event_page = EventPage.objects.get(url_path='/home/events/someone-elses-event/') + + user_perms = UserPagePermissionsProxy(user) + editable_pages = user_perms.editable_pages() + can_edit_pages = user_perms.can_edit_pages() + publishable_pages = user_perms.publishable_pages() + can_publish_pages = user_perms.can_publish_pages() + + self.assertFalse(editable_pages.filter(id=homepage.id).exists()) + self.assertFalse(editable_pages.filter(id=christmas_page.id).exists()) + self.assertFalse(editable_pages.filter(id=unpublished_event_page.id).exists()) + self.assertFalse(editable_pages.filter(id=someone_elses_event_page.id).exists()) + + self.assertFalse(can_edit_pages) + + self.assertFalse(publishable_pages.filter(id=homepage.id).exists()) + self.assertFalse(publishable_pages.filter(id=christmas_page.id).exists()) + self.assertFalse(publishable_pages.filter(id=unpublished_event_page.id).exists()) + self.assertFalse(publishable_pages.filter(id=someone_elses_event_page.id).exists()) + + self.assertFalse(can_publish_pages)