Esempio n. 1
0
    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
Esempio n. 2
0
    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
Esempio n. 4
0
 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)
Esempio n. 5
0
 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)
Esempio n. 6
0
 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
Esempio n. 7
0
        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
Esempio n. 8
0
        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
Esempio n. 9
0
        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
Esempio n. 10
0
        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
Esempio n. 11
0
        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
Esempio n. 12
0
        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
Esempio n. 13
0
    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
Esempio n. 14
0
    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)
Esempio n. 15
0
    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