diff --git a/mayan/apps/common/tests/test_views.py b/mayan/apps/common/tests/test_views.py index 82e09510e1..63412b2b32 100644 --- a/mayan/apps/common/tests/test_views.py +++ b/mayan/apps/common/tests/test_views.py @@ -2,19 +2,26 @@ from __future__ import absolute_import, unicode_literals from django.conf.urls import url from django.contrib.auth import get_user_model +from django.contrib.contenttypes.models import ContentType from django.http import HttpResponse from django.template import Context, Template from django.test.utils import ContextList from django.urls import clear_url_caches, reverse +from acls import ModelPermission from user_management.tests import ( TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME, TEST_USER_USERNAME, TEST_USER_PASSWORD ) +from ..models import ErrorLogEntry +from ..permissions_runtime import permission_error_log_view + from .base import BaseTestCase from .literals import TEST_VIEW_NAME, TEST_VIEW_URL +TEST_ERROR_LOG_ENTRY_RESULT = 'test_error_log_entry_result_text' + class GenericViewTestCase(BaseTestCase): def setUp(self): @@ -94,7 +101,55 @@ class GenericViewTestCase(BaseTestCase): class CommonViewTestCase(GenericViewTestCase): def test_about_view(self): - self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) + self.login_user() response = self.get('common:about_view') self.assertContains(response, text='About', status_code=200) + + def _create_error_log_entry(self): + ModelPermission.register( + model=get_user_model(), permissions=(permission_error_log_view,) + ) + ErrorLogEntry.objects.register(model=get_user_model()) + + self.error_log_entry = self.user.error_logs.create( + result=TEST_ERROR_LOG_ENTRY_RESULT + ) + + def _request_object_error_log_list(self): + content_type = ContentType.objects.get_for_model(model=self.user) + + return self.get( + 'common:object_error_list', kwargs={ + 'app_label': content_type.app_label, + 'model': content_type.model, + 'object_id': self.user.pk + }, follow=True + ) + + def test_object_error_list_view_with_permissions(self): + self._create_error_log_entry() + + self.login_user() + self.grant_access( + obj=self.user, permission=permission_error_log_view + ) + + response = self._request_object_error_log_list() + + self.assertContains( + response=response, text=TEST_ERROR_LOG_ENTRY_RESULT, + status_code=200 + ) + + def test_object_error_list_view_no_permissions(self): + self._create_error_log_entry() + + self.login_user() + + response = self._request_object_error_log_list() + + self.assertNotContains( + response=response, text=TEST_ERROR_LOG_ENTRY_RESULT, + status_code=403 + )