def test_admin_node_add_page(self): """ Test that renders properly /admin/ninecms/node/add/ Also test fields exclusive to superuser Also test initial data Check that user field populates only with current user Notice that here the user field is selected by form initial data :return: None """ response = self.client.get(reverse('admin:ninecms_node_add')) self.assertEqual(response.status_code, 403) perms = {'add_node': [self.simple_group], 'change_node': [self.simple_group], 'delete_node': []} obj = self.node_rev_basic.node.page_type set_perms(obj, self.fields, '_pagetype', perms) response = self.client.get(reverse('admin:ninecms_node_add')) self.assertNotContains(response, '<label for="id_alias">Alias:</label>', html=True) self.assertNotContains(response, '<label class="vCheckboxLabel" for="id_redirect">Redirect</label>', html=True) self.assertContains(response, ('<select class="form-control form-control-inline" id="id_user" name="user" ' 'title=""><option value="">---------</option>' '<option value="%d" selected="selected">%s</option>' '</select>' % (self.simple_user.pk, self.simple_user.username)), html=True) self.assertContains(response, ('<input checked="checked" class="" id="id_status" name="status" type="checkbox" ' 'value="1">'), html=True) self.assertContains(response, '<input class="" id="id_promote" name="promote" type="checkbox">', html=True) self.assertNotContains(response, ('<input checked="checked" class="" id="id_promote" name="promote" ' 'type="checkbox">'), html=True) self.assertContains(response, '<input class="" id="id_sticky" name="sticky" type="checkbox">', html=True) self.assertNotContains(response, ('<input checked="checked" class="" id="id_sticky" name="sticky" ' 'type="checkbox">'), html=True)
def post(self, request, **kwargs): """ HTML post for /cms/types/<id>/edit :param request: the request object :param kwargs: contains node_id :return: response object """ page_type = get_object_or_404(PageType, id=kwargs['type_id']) permissions_form = self.permissions_form_class(request.POST) groups = Group.objects.all().count() if permissions_form.is_valid(): if request.user.has_perm( ('guardian.add_groupobjectpermission', 'guardian.change_groupobjectpermission', 'guardian.delete_groupobjectpermission')): set_perms(page_type, list(permissions_form.fields.keys()), '_pagetype', permissions_form.cleaned_data) messages.success( request, _("Content type '%s' has been updated.") % page_type.name) return redirect('admin:ninecms_pagetype_changelist') else: # pragma: nocover messages.warning( request, _("Content type has not been updated. Please check the form for errors." )) return render( request, 'admin/ninecms/pagetype/perms_form.html', { 'permissions_form': permissions_form, 'groups': groups, 'page_type': page_type, })
def test_admin_node_add_page(self): """ Test that renders properly /admin/ninecms/node/add/ Also test fields exclusive to superuser Also test initial data Check that user field populates only with current user Notice that here the user field is selected by form initial data :return: None """ response = self.client.get(reverse('admin:ninecms_node_add')) self.assertEqual(response.status_code, 403) perms = { 'add_node': [self.simple_group], 'change_node': [self.simple_group], 'delete_node': [] } obj = self.node_rev_basic.node.page_type set_perms(obj, self.fields, '_pagetype', perms) response = self.client.get(reverse('admin:ninecms_node_add')) self.assertNotContains(response, '<label for="id_alias">Alias:</label>', html=True) self.assertNotContains( response, '<label class="vCheckboxLabel" for="id_redirect">Redirect</label>', html=True) self.assertContains(response, ( '<select class="form-control form-control-inline" id="id_user" name="user" ' 'title=""><option value="">---------</option>' '<option value="%d" selected="selected">%s</option>' '</select>' % (self.simple_user.pk, self.simple_user.username)), html=True) self.assertContains(response, ( '<input checked="checked" class="" id="id_status" name="status" type="checkbox" ' 'value="1">'), html=True) self.assertContains( response, '<input class="" id="id_promote" name="promote" type="checkbox">', html=True) self.assertNotContains(response, ( '<input checked="checked" class="" id="id_promote" name="promote" ' 'type="checkbox">'), html=True) self.assertContains( response, '<input class="" id="id_sticky" name="sticky" type="checkbox">', html=True) self.assertNotContains( response, ('<input checked="checked" class="" id="id_sticky" name="sticky" ' 'type="checkbox">'), html=True)
def test_admin_node_changelist_page(self): """ Test view /admin/ninecms/node/ properly :return: None """ response = self.client.get(reverse('admin:ninecms_node_changelist')) self.assertEqual(response.status_code, 403) perms = {'add_node': [self.simple_group], 'change_node': [self.simple_group], 'delete_node': []} obj = self.node_rev_basic.node.page_type set_perms(obj, self.fields, '_pagetype', perms) response = self.client.get(reverse('admin:ninecms_node_changelist')) self.assertContains(response, "Basic Page") self.assertNotContains(response, "Clear cache") self.assertNotContains(response, '<option value="delete_selected">')
def test_admin_node_changelist_page(self): """ Test view /admin/ninecms/node/ properly :return: None """ response = self.client.get(reverse('admin:ninecms_node_changelist')) self.assertEqual(response.status_code, 403) perms = { 'add_node': [self.simple_group], 'change_node': [self.simple_group], 'delete_node': [] } obj = self.node_rev_basic.node.page_type set_perms(obj, self.fields, '_pagetype', perms) response = self.client.get(reverse('admin:ninecms_node_changelist')) self.assertContains(response, "Basic Page") self.assertNotContains(response, "Clear cache") self.assertNotContains(response, '<option value="delete_selected">')
def test_admin_node_change_page(self): """ Test that renders properly /admin/ninecms/node/<node_id>/ Get the basic page to test image as well Also test fields exclusive to superuser Check that user field populates only with current user Notice that here the field is not selected as there is a different user for this node, not present in queryset :return: None """ response = self.client.get(reverse( 'admin:ninecms_node_change', args=(self.node_rev_basic.node_id, )), follow=True) self.assertEqual(response.status_code, 404) # this returns a 404 perms = { 'add_node': [self.simple_group], 'change_node': [self.simple_group], 'delete_node': [] } obj = self.node_rev_basic.node.page_type set_perms(obj, self.fields, '_pagetype', perms) response = self.client.get( reverse('admin:ninecms_node_change', args=(self.node_rev_basic.node_id, ))) self.assertContains(response, ( '<input class="form-control vTextField" id="id_title" maxlength="255" ' 'name="title" placeholder="Title" required="required" title="" type="text" ' 'value="%s">' % self.node_rev_basic.node.title), html=True) self.assertNotContains(response, '<label for="id_alias">Alias:</label>', html=True) self.assertNotContains( response, '<label class="vCheckboxLabel" for="id_redirect">Redirect</label>', html=True) self.assertContains(response, ( '<select class="form-control form-control-inline" id="id_user" name="user" ' 'title=""><option value="">---------</option>' '<option value="%d">%s</option>' '</select>' % (self.simple_user.pk, self.simple_user.username)), html=True)
def post(self, request, **kwargs): """ HTML post for /cms/types/<id>/edit :param request: the request object :param kwargs: contains node_id :return: response object """ page_type = get_object_or_404(PageType, id=kwargs['type_id']) permissions_form = self.permissions_form_class(request.POST) groups = Group.objects.all().count() if permissions_form.is_valid(): if request.user.has_perm(('guardian.add_groupobjectpermission', 'guardian.change_groupobjectpermission', 'guardian.delete_groupobjectpermission')): set_perms(page_type, list(permissions_form.fields.keys()), '_pagetype', permissions_form.cleaned_data) messages.success(request, _("Content type '%s' has been updated.") % page_type.name) return redirect('admin:ninecms_pagetype_changelist') else: # pragma: nocover messages.warning(request, _("Content type has not been updated. Please check the form for errors.")) return render(request, 'admin/ninecms/pagetype/perms_form.html', { 'permissions_form': permissions_form, 'groups': groups, 'page_type': page_type, })
def test_admin_node_change_page(self): """ Test that renders properly /admin/ninecms/node/<node_id>/ Get the basic page to test image as well Also test fields exclusive to superuser Check that user field populates only with current user Notice that here the field is not selected as there is a different user for this node, not present in queryset :return: None """ response = self.client.get(reverse('admin:ninecms_node_change', args=(self.node_rev_basic.node_id,)), follow=True) self.assertEqual(response.status_code, 404) # this returns a 404 perms = {'add_node': [self.simple_group], 'change_node': [self.simple_group], 'delete_node': []} obj = self.node_rev_basic.node.page_type set_perms(obj, self.fields, '_pagetype', perms) response = self.client.get(reverse('admin:ninecms_node_change', args=(self.node_rev_basic.node_id,))) self.assertContains(response, ('<input class="form-control vTextField" id="id_title" maxlength="255" ' 'name="title" placeholder="Title" required="required" title="" type="text" ' 'value="%s">' % self.node_rev_basic.node.title), html=True) self.assertNotContains(response, '<label for="id_alias">Alias:</label>', html=True) self.assertNotContains(response, '<label class="vCheckboxLabel" for="id_redirect">Redirect</label>', html=True) self.assertContains(response, ('<select class="form-control form-control-inline" id="id_user" name="user" ' 'title=""><option value="">---------</option>' '<option value="%d">%s</option>' '</select>' % (self.simple_user.pk, self.simple_user.username)), html=True)
def test_utils_perms(self): """ Test guardian and utility permissions Performed in a single test in order to cover changes from multiple states :return: None """ obj = self.node_rev_basic.node.page_type # test set empty perms = {'change_node': [], 'delete_node': [], 'add_node': []} set_perms(obj, self.fields, '_pagetype', perms) self.assertFalse(self.simple_user.has_perm('change_node_pagetype', obj)) self.assertFalse(self.simple_user.has_perm('delete_node_pagetype', obj)) self.assertFalse(self.simple_user.has_perm('add_node_pagetype', obj)) # test set existing perms = { 'change_node': [], 'delete_node': [], 'add_node': [self.simple_group] } set_perms(obj, self.fields, '_pagetype', perms) self.assertFalse(self.simple_user.has_perm('change_node_pagetype', obj)) self.assertFalse(self.simple_user.has_perm('delete_node_pagetype', obj)) self.assertTrue(self.simple_user.has_perm('add_node_pagetype', obj)) # test set/unset perms = { 'change_node': [self.simple_group], 'delete_node': [], 'add_node': [] } set_perms(obj, self.fields, '_pagetype', perms) self.assertTrue(self.simple_user.has_perm('change_node_pagetype', obj)) self.assertFalse(self.simple_user.has_perm('delete_node_pagetype', obj)) self.assertFalse(self.simple_user.has_perm('add_node_pagetype', obj))
def test_utils_perms(self): """ Test guardian and utility permissions Performed in a single test in order to cover changes from multiple states :return: None """ obj = self.node_rev_basic.node.page_type # test set empty perms = {'change_node': [], 'delete_node': [], 'add_node': []} set_perms(obj, self.fields, '_pagetype', perms) self.assertFalse(self.simple_user.has_perm('change_node_pagetype', obj)) self.assertFalse(self.simple_user.has_perm('delete_node_pagetype', obj)) self.assertFalse(self.simple_user.has_perm('add_node_pagetype', obj)) # test set existing perms = {'change_node': [], 'delete_node': [], 'add_node': [self.simple_group]} set_perms(obj, self.fields, '_pagetype', perms) self.assertFalse(self.simple_user.has_perm('change_node_pagetype', obj)) self.assertFalse(self.simple_user.has_perm('delete_node_pagetype', obj)) self.assertTrue(self.simple_user.has_perm('add_node_pagetype', obj)) # test set/unset perms = {'change_node': [self.simple_group], 'delete_node': [], 'add_node': []} set_perms(obj, self.fields, '_pagetype', perms) self.assertTrue(self.simple_user.has_perm('change_node_pagetype', obj)) self.assertFalse(self.simple_user.has_perm('delete_node_pagetype', obj)) self.assertFalse(self.simple_user.has_perm('add_node_pagetype', obj))