def setUp(self): # Permissions for objects we're testing self.edit_page = Permission.objects.get_by_natural_key( 'edit_page', 'glitter_pages', 'page' ) self.publish_page = Permission.objects.get_by_natural_key( 'publish_page', 'glitter_pages', 'page' ) self.edit_book = Permission.objects.get_by_natural_key( 'edit_book', 'sample', 'book' ) self.publish_book = Permission.objects.get_by_natural_key( 'publish_book', 'sample', 'book' ) # Superuser User = get_user_model() self.superuser = User.objects.create_superuser( username='******', email='', password=None ) # Editor with editing permissions self.editor = User.objects.create_user(username='******', email='', password=None) self.editor.is_staff = True self.editor.save() self.editor.user_permissions.add(self.edit_page, self.edit_book) # Publisher with edit and publish permissions self.publisher = User.objects.create_user(username='******', email='', password=None) self.publisher.is_staff = True self.publisher.save() self.publisher.user_permissions.add( self.edit_page, self.publish_page, self.edit_book, self.publish_book ) # Staff with no editing permissions self.staff = User.objects.create_user(username='******', email='', password=None) self.staff.is_staff = True self.staff.save() # Page with an unsaved page version self.page = Page.objects.create(url='/test/', title='Test page') self.page_version = Version.objects.create( content_type=ContentType.objects.get_for_model(Page), object_id=self.page.id, template_name='glitter/sample.html', owner=self.editor, ) self.page_admin = PageAdmin(Page, AdminSite()) # Sample model self.book = Book.objects.create(title='Hello') self.book_admin = PageAdmin(Book, AdminSite())
def setUp(self): # Permissions self.edit_permissions = Permission.objects.get_by_natural_key( 'edit_page', 'glitter_pages', 'page' ) # Page self.page = Page.objects.create(url='/test/', title='Test page') # Information about model self.info = self.page._meta.app_label, self.page._meta.model_name # Superuser User = get_user_model() self.super_user = User.objects.create_superuser('test', '*****@*****.**', 'test') self.super_user_client = Client() self.super_user_client.login(username='******', password='******') # Editor with editing permissions self.editor = User.objects.create_user('editor', '*****@*****.**', 'editor') self.editor.is_staff = True self.editor.user_permissions.add(self.edit_permissions) self.editor.save() self.editor_client = Client() self.editor_client.login(username='******', password='******') # Editor with not editing permissions self.editor_no_permissions = User.objects.create_user( 'editor_no_perm', '*****@*****.**', 'editor_no_perm' ) self.editor_no_permissions.is_staff = True self.editor_no_permissions.save() self.editor_no_permissions_client = Client() self.editor_no_permissions_client.login( username='******', password='******' ) # Page version. self.page_version = Version.objects.create( content_type=ContentType.objects.get_for_model(Page), object_id=self.page.id, template_name='glitter/sample.html', owner=self.editor ) self.page_admin = PageAdmin(Page, AdminSite()) self.change_obj_url = reverse('admin:glitter_pages_page_change', args=(self.page.id,)) self.add_obj_url = reverse('admin:glitter_pages_page_add') self.page_redirect_url = reverse('admin:glitter_pages_page_redirect', args=(self.page.id,))
class TestAdmin(TestCase): def setUp(self): # Permissions self.edit_permissions = Permission.objects.get_by_natural_key( 'edit_page', 'glitter_pages', 'page' ) # Page self.page = Page.objects.create(url='/test/', title='Test page') # Information about model self.info = self.page._meta.app_label, self.page._meta.model_name # Superuser User = get_user_model() self.super_user = User.objects.create_superuser('test', '*****@*****.**', 'test') self.super_user_client = Client() self.super_user_client.login(username='******', password='******') # Editor with editing permissions self.editor = User.objects.create_user('editor', '*****@*****.**', 'editor') self.editor.is_staff = True self.editor.user_permissions.add(self.edit_permissions) self.editor.save() self.editor_client = Client() self.editor_client.login(username='******', password='******') # Editor with not editing permissions self.editor_no_permissions = User.objects.create_user( 'editor_no_perm', '*****@*****.**', 'editor_no_perm' ) self.editor_no_permissions.is_staff = True self.editor_no_permissions.save() self.editor_no_permissions_client = Client() self.editor_no_permissions_client.login( username='******', password='******' ) # Page version. self.page_version = Version.objects.create( content_type=ContentType.objects.get_for_model(Page), object_id=self.page.id, template_name='glitter/sample.html', owner=self.editor ) self.page_admin = PageAdmin(Page, AdminSite()) self.change_obj_url = reverse('admin:glitter_pages_page_change', args=(self.page.id,)) self.add_obj_url = reverse('admin:glitter_pages_page_add') self.page_redirect_url = reverse('admin:glitter_pages_page_redirect', args=(self.page.id,)) def test_data_for_change_and_add_response(self): response_data = {'url': '/testing2/', 'title': 'Testing2'} response_save_and_edit_data = { 'url': '/testing223/', 'title': 'Testing2', '_saveandedit': True } response_save_and_continue_edit = { 'url': '/testing223/', 'title': 'Testing2', '_continue': True } return response_data, response_save_and_edit_data, response_save_and_continue_edit def test_admin_url(self): self.page_admin.view_url(self.page) def test_unpublish_count(self): self.page_admin.admin_unpublished_count(self.page) def test_response_change(self): response_data, response_save_and_edit_data, response_save_and_continue_edit = ( self.test_data_for_change_and_add_response() ) self.super_user_client.post(self.change_obj_url, response_save_and_edit_data) self.super_user_client.post(self.change_obj_url, response_data) self.super_user_client.post(self.change_obj_url, response_save_and_continue_edit) self.super_user_client.get(self.page_redirect_url) def test_response_add(self): response_data, response_save_and_edit_data, response_save_and_continue_edit = ( self.test_data_for_change_and_add_response() ) response_data['_saveasnew'] = 'Testing' self.super_user_client.post(self.add_obj_url, response_data) self.super_user_client.post(self.add_obj_url, response_save_and_edit_data) self.super_user_client.post(self.add_obj_url, response_save_and_continue_edit) self.super_user_client.get(self.page_redirect_url) def test_show_login(self): self.factory = RequestFactory() request = self.factory.get('/') self.assertEqual( self.page_admin.get_fields(request), ['url', 'title', 'parent', 'login_required', 'show_in_navigation'] )
class TestPermissions(TestCase): def setUp(self): # Permissions for objects we're testing self.edit_page = Permission.objects.get_by_natural_key( 'edit_page', 'glitter_pages', 'page' ) self.publish_page = Permission.objects.get_by_natural_key( 'publish_page', 'glitter_pages', 'page' ) self.edit_book = Permission.objects.get_by_natural_key( 'edit_book', 'sample', 'book' ) self.publish_book = Permission.objects.get_by_natural_key( 'publish_book', 'sample', 'book' ) # Superuser User = get_user_model() self.superuser = User.objects.create_superuser( username='******', email='', password=None ) # Editor with editing permissions self.editor = User.objects.create_user(username='******', email='', password=None) self.editor.is_staff = True self.editor.save() self.editor.user_permissions.add(self.edit_page, self.edit_book) # Publisher with edit and publish permissions self.publisher = User.objects.create_user(username='******', email='', password=None) self.publisher.is_staff = True self.publisher.save() self.publisher.user_permissions.add( self.edit_page, self.publish_page, self.edit_book, self.publish_book ) # Staff with no editing permissions self.staff = User.objects.create_user(username='******', email='', password=None) self.staff.is_staff = True self.staff.save() # Page with an unsaved page version self.page = Page.objects.create(url='/test/', title='Test page') self.page_version = Version.objects.create( content_type=ContentType.objects.get_for_model(Page), object_id=self.page.id, template_name='glitter/sample.html', owner=self.editor, ) self.page_admin = PageAdmin(Page, AdminSite()) # Sample model self.book = Book.objects.create(title='Hello') self.book_admin = PageAdmin(Book, AdminSite()) def test_edit_permission(self): # Only people with glitter_pages.edit_page have edit permission request = HttpRequest() request.user = self.editor self.assertTrue(self.page_admin.has_edit_permission(request=request)) request.user = self.staff self.assertFalse(self.page_admin.has_edit_permission(request=request)) def test_edit_version(self): # Only the creator of an unsaved version can edit it request = HttpRequest() request.user = self.superuser self.assertFalse(self.page_admin.has_edit_permission( request=request, version=self.page_version )) request.user = self.editor self.assertTrue(self.page_admin.has_edit_permission( request=request, version=self.page_version )) def test_publish_permission(self): # Only people with glitter_pages.publish_page have publish permission request = HttpRequest() request.user = self.publisher self.assertTrue(self.page_admin.has_publish_permission(request=request)) request.user = self.staff self.assertFalse(self.page_admin.has_publish_permission(request=request)) def test_book_model(self): # Test that permissions work with different types of models request = HttpRequest() request.user = self.editor self.assertTrue(self.book_admin.has_edit_permission(request=request)) request.user = self.publisher self.assertTrue(self.book_admin.has_publish_permission(request=request)) request.user = self.staff self.assertFalse(self.book_admin.has_edit_permission(request=request)) self.assertFalse(self.book_admin.has_publish_permission(request=request))