def test_can_render_a_list_of_forums_according_to_their_minimum_tree_level( self): # Setup forums = Forum.objects.all() request = self.request_factory.get('/') middleware = SessionMiddleware() middleware.process_request(request) request.session.save() request.user = self.user ForumPermissionMiddleware().process_request(request) t = Template(self.loadstatement + '{% forum_list forums %}') c = Context({ 'forums': ForumVisibilityContentTree.from_forums(forums), 'request': request }) expected_out = render_to_string( 'machina/forum/forum_list.html', { 'forum_contents': ForumVisibilityContentTree.from_forums(forums), 'user': self.user, 'root_level': 0, 'root_level_middle': 1, 'root_level_sub': 2, }) # Run rendered = t.render(c) # Check assert rendered != '' assert rendered == expected_out
def test_raises_if_the_required_arguments_are_not_passed(self): # Setup request = self.get_request() request.user = self.u1 ForumPermissionMiddleware().process_request(request) context = Context({'request': request}) templates = [ '{% get_permission \'can_download_files\' request.user as user_can_download_files %}' '{% if user_can_download_files %}CAN_DOWNLOAD{% else %}CANNOT_DOWNLOAD{% endif %}', '{% get_permission \'can_edit_post\' request.user as user_can_edit_post %}' '{% if user_can_edit_post %}CAN_EDIT{% else %}CANNOT_EDIT{% endif %}', '{% get_permission \'can_edit_post\' request.user as user_can_edit_post %}' '{% if user_can_edit_post %}CAN_EDIT{% else %}CANNOT_EDIT{% endif %}', '{% get_permission \'can_add_post\' request.user as user_can_add_post %}' '{% if user_can_add_post %}CAN_ADD_POST{% else %}CANNOT_ADD_POST{% endif %}', '{% get_permission \'can_vote_in_poll\' request.user as user_can_vote_in_poll %}' '{% if user_can_vote_in_poll %}CAN_VOTE{% else %}CANNOT_VOTE{% endif %}', ] # Run & check for raw_template in templates: t = Template(self.loadstatement + raw_template) with pytest.raises(TypeError): t.render(context)
def get_rendered(topics, user): request = self.get_request() request.user = user ForumPermissionMiddleware().process_request(request) t = Template( self.loadstatement + '{% get_unread_topics topics request.user as unread_topics %}') c = Context({'topics': topics, 'request': request}) rendered = t.render(c) return c, rendered
def test_should_return_http_response_forbiden_to_logged_in_users_if_access_is_not_granted(self): # Setup self.mixin.object = self.forum self.mixin.permission_required = ['can_read_forum', ] request = self.get_request() request.user = self.user ForumPermissionMiddleware().process_request(request) # Run & check with pytest.raises(PermissionDenied): self.mixin.dispatch(request)
def test_should_raise_if_the_permission_required_attribute_is_set_with_an_incorrect_value(self): # Setup self.mixin.object = self.forum self.mixin.permission_required = 10 request = self.get_request() request.user = self.user ForumPermissionMiddleware().process_request(request) # Run & check with pytest.raises(ImproperlyConfigured): self.mixin.check_permissions(request)
def test_should_redirect_anonymous_users_to_login_url_if_access_is_not_granted(self): # Setup self.mixin.object = self.forum self.mixin.permission_required = 'can_read_forum' request = self.get_request() request.user = AnonymousUser() ForumPermissionMiddleware().process_request(request) # Run response = self.mixin.dispatch(request) # Check assert response.status_code == 302 # Moved temporarily
def get_rendered(post, user): request = self.get_request() request.user = user ForumPermissionMiddleware().process_request(request) t = Template( self.loadstatement + '{% get_permission \'can_download_files\' post.topic.forum request.user as user_can_download_files %}' # noqa '{% if user_can_download_files %}CAN_DOWNLOAD{% else %}CANNOT_DOWNLOAD{% endif %}') c = Context({'post': post, 'request': request}) rendered = t.render(c) return rendered
def get_rendered(user): request = self.get_request() request.user = user ForumPermissionMiddleware().process_request(request) t = Template( self.loadstatement + '{% get_permission \'can_access_moderation_queue\' request.user as user_can_access_moderation_queue %}' # noqa '{% if user_can_access_moderation_queue %}CAN_ACCESS{% else %}CANNOT_ACCESS{% endif %}') # noqa c = Context({'request': request}) rendered = t.render(c) return rendered
def get_rendered(forum, user): request = self.get_request() request.user = user ForumPermissionMiddleware().process_request(request) t = Template( self.loadstatement + '{% get_permission \'can_add_topic\' forum request.user as user_can_add_topic %}' '{% if user_can_add_topic %}CAN_START_TOPICS{% else %}CANNOT_START_TOPICS{% endif %}') # noqa c = Context({'forum': forum, 'request': request}) rendered = t.render(c) return rendered
def get_rendered(poll, user): request = self.get_request() request.user = user ForumPermissionMiddleware().process_request(request) t = Template( self.loadstatement + '{% get_permission \'can_vote_in_poll\' poll request.user as user_can_vote_in_poll %}' # noqa '{% if user_can_vote_in_poll %}CAN_VOTE{% else %}CANNOT_VOTE{% endif %}') c = Context({'poll': poll, 'request': request}) rendered = t.render(c) return rendered
def get_rendered(topic, user): request = self.get_request() request.user = user ForumPermissionMiddleware().process_request(request) t = Template( self.loadstatement + '{% get_permission \'can_add_post\' topic request.user as user_can_add_post %}' '{% if user_can_add_post %}CAN_ADD_POST{% else %}CANNOT_ADD_POST{% endif %}') c = Context({'topic': topic, 'request': request}) rendered = t.render(c) return rendered
def get_rendered(post, user): request = self.get_request() request.user = user ForumPermissionMiddleware().process_request(request) t = Template( self.loadstatement + '{% get_permission \'can_delete_post\' post request.user as user_can_delete_post %}' '{% if user_can_delete_post %}CAN_DELETE{% else %}CANNOT_DELETE{% endif %}') c = Context({'post': post, 'request': request}) rendered = t.render(c) return rendered
def test_should_return_a_valid_response_if_access_is_granted(self): # Setup class ForumTestView(PermissionRequiredMixin, DetailView): permission_required = ['can_see_forum', ] def get_queryset(self): return Forum.objects.all() forum_view = ForumTestView() request = self.get_request() request.user = self.user ForumPermissionMiddleware().process_request(request) # Run response = forum_view.dispatch(request, pk=self.forum.pk) # Check assert response.status_code == 200
def test_raises_if_the_considered_handler_method_is_unknown(self): # Setup request = self.get_request() request.user = self.u1 ForumPermissionMiddleware().process_request(request) context = Context({'request': request}) templates = [ '{% get_permission \'can_download_files_unknown\' request.user as user_can_download_files %}' # noqa '{% if user_can_download_files %}CAN_DOWNLOAD{% else %}CANNOT_DOWNLOAD{% endif %}', '{% get_permission \'can_edit_post___\' request.user as user_can_edit_post %}' '{% if user_can_edit_post %}CAN_EDIT{% else %}CANNOT_EDIT{% endif %}', ] # Run & check for raw_template in templates: t = Template(self.loadstatement + raw_template) with pytest.raises(TemplateSyntaxError): t.render(context)
def test_should_consider_controlled_object_prior_to_builtin_objet_or_get_object_attributes(self): # noqa forum = self.forum # Setup class UserTestView(PermissionRequiredMixin, DetailView): permission_required = ['can_see_forum', ] def get_queryset(self): return User.objects.all() def get_controlled_object(self): return forum user_view = UserTestView() request = self.get_request() request.user = self.user ForumPermissionMiddleware().process_request(request) # Run response = user_view.dispatch(request, pk=self.user.pk) # Check assert response.status_code == 200