def setup(self):
        self.loadstatement = '{% load forum_permission_tags %}'
        self.request_factory = RequestFactory()

        self.g1 = GroupFactory.create()
        self.u1 = UserFactory.create()
        self.u2 = UserFactory.create()
        self.u1.groups.add(self.g1)
        self.u2.groups.add(self.g1)
        self.moderators = GroupFactory.create()
        self.moderator = UserFactory.create()
        self.moderator.groups.add(self.moderators)
        self.superuser = UserFactory.create(is_superuser=True)

        # Permission handler
        self.perm_handler = PermissionHandler()

        # Set up a top-level category
        self.top_level_cat = create_category_forum()

        # Set up some forums
        self.forum_1 = create_forum(parent=self.top_level_cat)
        self.forum_2 = create_forum(parent=self.top_level_cat)

        # Set up some topics and posts
        self.forum_1_topic = create_topic(forum=self.forum_1, poster=self.u1)
        self.forum_2_topic = create_topic(forum=self.forum_2, poster=self.u2)
        self.post_1 = PostFactory.create(topic=self.forum_1_topic, poster=self.u1)
        self.post_2 = PostFactory.create(topic=self.forum_2_topic, poster=self.u2)
    def setUp(self):
        self.loadstatement = '{% load forum_tracking_tags %}'
        self.request_factory = RequestFactory()

        # Tracking handler
        self.tracks_handler = TrackingHandler()

        self.g1 = GroupFactory.create()
        self.u1 = UserFactory.create()
        self.u2 = UserFactory.create()
        self.u1.groups.add(self.g1)
        self.u2.groups.add(self.g1)

        # Set up a top-level category
        self.top_level_cat = create_category_forum()

        # Set up some forums
        self.forum_1 = create_forum(parent=self.top_level_cat)
        self.forum_2 = create_forum(parent=self.top_level_cat)

        # Set up some topics and posts
        self.forum_1_topic = create_topic(forum=self.forum_1, poster=self.u1)
        self.forum_2_topic = create_topic(forum=self.forum_2, poster=self.u1)
        self.post_1 = PostFactory.create(topic=self.forum_1_topic, poster=self.u1)
        self.post_2 = PostFactory.create(topic=self.forum_2_topic, poster=self.u1)

        # Assign some permissions
        assign_perm('can_see_forum', self.g1, self.top_level_cat)
        assign_perm('can_read_forum', self.g1, self.top_level_cat)
        assign_perm('can_see_forum', self.g1, self.forum_1)
        assign_perm('can_read_forum', self.g1, self.forum_1)
        assign_perm('can_see_forum', self.g1, self.forum_2)
        assign_perm('can_read_forum', self.g1, self.forum_2)
Esempio n. 3
0
 def test_knows_the_forums_whose_topics_can_be_moved(self):
     # Setup
     assign_perm('can_move_topics', self.u1, self.forum_1)
     u2 = UserFactory.create(is_superuser=True)
     u3 = UserFactory.create()
     # Run & check
     assert set(self.perm_handler.get_movable_forums(self.u1)) == set([self.forum_1, ])
     assert set(self.perm_handler.get_movable_forums(u2)) == set(Forum.objects.all())
     assert list(self.perm_handler.get_movable_forums(u3)) == []
Esempio n. 4
0
 def test_knows_the_forums_that_can_receive_moved_topics(self):
     # Setup
     assign_perm('can_move_topics', self.u1, self.forum_1)
     u2 = UserFactory.create(is_superuser=True)
     u3 = UserFactory.create()
     # Run & check
     assert set(self.perm_handler.get_target_forums_for_moved_topics(self.u1)) == set([self.forum_1, ])
     assert set(self.perm_handler.get_target_forums_for_moved_topics(u2)) == set(Forum.objects.filter(
         type=Forum.TYPE_CHOICES.forum_post))
     assert list(self.perm_handler.get_target_forums_for_moved_topics(u3)) == []
Esempio n. 5
0
    def setup(self):
        self.u1 = UserFactory.create()

        # Set up top-level forums: a category, a default forum and a link forum
        self.top_level_cat = create_category_forum()
        self.top_level_forum = create_forum()
        self.top_level_link = create_link_forum()
Esempio n. 6
0
    def setup(self):
        # Add some users
        self.u1 = UserFactory.create()
        self.g1 = GroupFactory.create()
        self.u1.groups.add(self.g1)
        self.user.groups.add(self.g1)

        # Permission handler
        self.perm_handler = PermissionHandler()

        self.top_level_cat_1 = create_category_forum()

        self.forum_1 = create_forum(parent=self.top_level_cat_1)
        self.forum_2 = create_forum(parent=self.top_level_cat_1)
        self.forum_3 = create_forum(parent=self.top_level_cat_1)

        self.topic_1 = create_topic(forum=self.forum_2, poster=self.u1)
        PostFactory.create(topic=self.topic_1, poster=self.u1)
        PostFactory.create(topic=self.topic_1, poster=self.user)

        self.topic_2 = create_topic(forum=self.forum_1, poster=self.user)
        PostFactory.create(topic=self.topic_2, poster=self.user)
        PostFactory.create(topic=self.topic_2, poster=self.u1)

        self.topic_3 = create_topic(forum=self.forum_2, poster=self.u1)
        PostFactory.create(topic=self.topic_3, poster=self.u1)

        self.topic_4 = create_topic(forum=self.forum_2, poster=self.user)
        PostFactory.create(topic=self.topic_4, poster=self.user)

        # Assign some permissions
        assign_perm('can_read_forum', self.g1, self.top_level_cat_1)
        assign_perm('can_read_forum', self.g1, self.forum_1)
        assign_perm('can_read_forum', self.g1, self.forum_2)
Esempio n. 7
0
 def test_can_use_global_permissions(self):
     # Setup
     user = UserFactory.create()
     assign_perm('can_read_forum', user, None)  # global permission
     checker = ForumPermissionChecker(user)
     # Run & check
     assert checker.has_perm('can_read_forum', self.forum)
Esempio n. 8
0
 def test_knows_if_a_user_can_approve_posts(self):
     # Setup
     u2 = UserFactory.create()
     assign_perm('can_approve_posts', self.u1, self.forum_1)
     # Run & check
     assert self.perm_handler.can_approve_posts(self.forum_1, self.u1)
     assert not self.perm_handler.can_approve_posts(self.forum_1, u2)
Esempio n. 9
0
 def test_knows_if_a_user_can_add_posts_to_a_topic(self):
     # Setup
     u2 = UserFactory.create()
     assign_perm('can_reply_to_topics', self.u1, self.forum_1)
     # Run & check
     assert self.perm_handler.can_add_post(self.forum_1_topic, self.u1)
     assert not self.perm_handler.can_add_post(self.forum_1_topic, u2)
Esempio n. 10
0
    def setup(self):
        self.u1 = UserFactory.create()

        # Set up a top-level forum, an associated topic and a post
        self.top_level_forum = create_forum()
        self.topic = create_topic(forum=self.top_level_forum, poster=self.u1)
        self.post = PostFactory.create(topic=self.topic, poster=self.u1)
Esempio n. 11
0
    def setup(self):
        # Create a basic user
        self.user = UserFactory.create()

        # Permission handler
        self.perm_handler = PermissionHandler()

        # Set up a top-level forum
        self.cat = create_category_forum()
        self.top_level_forum = create_forum()
        self.other_forum = create_forum()

        # Set up a topic and some posts
        self.topic = create_topic(forum=self.top_level_forum, poster=self.user)
        self.first_post = PostFactory.create(topic=self.topic, poster=self.user)
        self.post = PostFactory.create(topic=self.topic, poster=self.user)

        # Mark the forum as read
        ForumReadTrackFactory.create(forum=self.top_level_forum, user=self.user)

        # Assign some permissions
        assign_perm('can_read_forum', self.user, self.top_level_forum)
        assign_perm('can_reply_to_topics', self.user, self.top_level_forum)
        assign_perm('can_edit_own_posts', self.user, self.top_level_forum)
        assign_perm('can_delete_own_posts', self.user, self.top_level_forum)
        assign_perm('can_lock_topics', self.user, self.top_level_forum)
Esempio n. 12
0
 def test_knows_if_a_user_has_subscribed_to_the_topic(self):
     # Setup
     self.topic.subscribers.add(self.u1)
     u2 = UserFactory.create()
     # Run & check
     assert self.topic.has_subscriber(self.u1)
     assert not self.topic.has_subscriber(u2)
Esempio n. 13
0
 def setUp(self):
     self.rf = RequestFactory()
     self.u1 = UserFactory.create()
     self.top_level_forum = create_forum()
     self.topic = create_topic(forum=self.top_level_forum, poster=self.u1)
     self.post = PostFactory.create(topic=self.topic, poster=self.u1)
     self.topic_pk = self.topic.pk
Esempio n. 14
0
 def test_knows_if_a_user_can_download_files(self):
     # Setup
     u2 = UserFactory.create()
     assign_perm('can_download_file', self.u1, self.forum_1)
     # Run & check
     assert self.perm_handler.can_download_files(self.forum_1, self.u1)
     assert not self.perm_handler.can_download_files(self.forum_1, u2)
Esempio n. 15
0
    def setup(self):
        self.u1 = UserFactory.create()
        self.g1 = GroupFactory.create()
        self.u1.groups.add(self.g1)

        # Permission handler
        self.perm_handler = PermissionHandler()

        # Set up a top-level category
        self.top_level_cat = create_category_forum()

        # Set up some forums
        self.forum_1 = create_forum(parent=self.top_level_cat)
        self.forum_2 = create_forum(parent=self.top_level_cat)
        self.forum_3 = create_link_forum(parent=self.top_level_cat)

        # Set up a top-level forum link
        self.top_level_link = create_link_forum()

        # Set up some topics
        self.forum_1_topic = create_topic(forum=self.forum_1, poster=self.u1)
        self.forum_3_topic = create_topic(forum=self.forum_3, poster=self.u1)
        self.forum_3_topic_2 = create_topic(
            forum=self.forum_3, poster=self.u1, status=Topic.TOPIC_LOCKED)

        # Set up some posts
        self.post_1 = PostFactory.create(topic=self.forum_1_topic, poster=self.u1)
        self.post_2 = PostFactory.create(topic=self.forum_3_topic, poster=self.u1)

        # Assign some permissions
        assign_perm('can_see_forum', self.u1, self.top_level_cat)
        assign_perm('can_see_forum', self.u1, self.forum_1)
        assign_perm('can_read_forum', self.g1, self.forum_3)
Esempio n. 16
0
 def test_knows_the_list_of_forums_eligible_to_the_moderation_queue_for_a_given_user(self):
     # Setup
     u2 = UserFactory.create()
     assign_perm('can_approve_posts', self.u1, self.forum_1)
     # Run & check
     assert set(self.perm_handler.get_moderation_queue_forums(self.u1)) == set([self.forum_1, ])
     assert set(self.perm_handler.get_moderation_queue_forums(u2)) == set([])
Esempio n. 17
0
 def test_knows_if_a_user_can_update_topics_to_normal_topics(self):
     # Setup
     u2 = UserFactory.create()
     assign_perm('can_edit_posts', self.u1, self.forum_1)
     # Run & check
     assert self.perm_handler.can_update_topics_to_normal_topics(self.forum_1, self.u1)
     assert not self.perm_handler.can_update_topics_to_normal_topics(self.forum_1, u2)
Esempio n. 18
0
 def test_knows_if_a_moderator_can_delete_a_post(self):
     # Setup
     moderator = UserFactory.create()
     assign_perm('can_delete_posts', moderator, self.forum_1)
     # Run & check
     assert self.perm_handler.can_delete_post(self.post_1, moderator)
     assert not self.perm_handler.can_delete_post(self.post_2, moderator)
Esempio n. 19
0
 def test_knows_if_a_user_can_subscribe_to_topics(self):
     # Setup
     u2 = UserFactory.create()
     assign_perm('can_read_forum', self.u1, self.forum_1)
     # Run & check
     assert self.perm_handler.can_subscribe_to_topic(self.forum_1_topic, self.u1)
     assert not self.perm_handler.can_subscribe_to_topic(self.forum_1_topic, u2)
Esempio n. 20
0
 def test_shows_all_forums_to_a_superuser(self):
     # Setup
     u2 = UserFactory.create(is_superuser=True)
     forums = Forum.objects.filter(parent=self.top_level_cat)
     # Run
     filtered_forums = self.perm_handler.forum_list_filter(forums, u2)
     # Check
     assert set(filtered_forums) == set([self.forum_1, self.forum_2, self.forum_3])
Esempio n. 21
0
 def test_knows_that_user_permissions_take_precedence_over_user_global_permissions(self):
     # Setup
     user = UserFactory.create()
     assign_perm('can_read_forum', user, None)  # global permission
     assign_perm('can_read_forum', user, self.forum, has_perm=False)
     checker = ForumPermissionChecker(user)
     # Run & check
     assert not checker.has_perm('can_read_forum', self.forum)
Esempio n. 22
0
 def test_knows_that_an_inactive_user_has_no_permissions(self):
     # Setup
     user = UserFactory.create(is_active=False)
     checker = ForumPermissionChecker(user)
     # Run & check
     assert not checker.has_perm('can_see_forum', self.forum)
     assert not checker.has_perm('can_read_forum', self.forum)
     assert checker.get_perms(self.forum) == []
Esempio n. 23
0
    def setup(self):
        self.loadstatement = '{% load forum_polls_tags %}'
        self.request_factory = RequestFactory()

        self.g1 = GroupFactory.create()
        self.u1 = UserFactory.create()
        self.u2 = UserFactory.create()
        self.u1.groups.add(self.g1)
        self.u2.groups.add(self.g1)
        self.moderators = GroupFactory.create()
        self.moderator = UserFactory.create()
        self.moderator.groups.add(self.moderators)
        self.superuser = UserFactory.create(is_superuser=True)

        # Permission handler
        self.perm_handler = PermissionHandler()

        # Set up a top-level category
        self.top_level_cat = create_category_forum()

        # Set up some forums
        self.forum_1 = create_forum(parent=self.top_level_cat)
        self.forum_2 = create_forum(parent=self.top_level_cat)

        # Set up some topics and posts
        self.forum_1_topic = create_topic(forum=self.forum_1, poster=self.u1)
        self.forum_2_topic = create_topic(forum=self.forum_2, poster=self.u2)
        self.post_1 = PostFactory.create(topic=self.forum_1_topic, poster=self.u1)
        self.post_2 = PostFactory.create(topic=self.forum_2_topic, poster=self.u2)
        self.poll_1 = TopicPollFactory.create(topic=self.forum_1_topic)
        self.poll_2 = TopicPollFactory.create(topic=self.forum_2_topic)

        # Assign some permissions
        assign_perm('can_see_forum', self.g1, self.forum_1)
        assign_perm('can_read_forum', self.g1, self.forum_1)
        assign_perm('can_edit_own_posts', self.g1, self.forum_1)
        assign_perm('can_delete_own_posts', self.g1, self.forum_1)
        assign_perm('can_reply_to_topics', self.g1, self.forum_1)
        assign_perm('can_see_forum', self.moderators, self.forum_1)
        assign_perm('can_read_forum', self.moderators, self.forum_1)
        assign_perm('can_edit_own_posts', self.moderators, self.forum_1)
        assign_perm('can_delete_own_posts', self.moderators, self.forum_1)
        assign_perm('can_edit_posts', self.moderators, self.forum_1)
        assign_perm('can_delete_posts', self.moderators, self.forum_1)
        assign_perm('can_vote_in_polls', self.g1, self.forum_1)
Esempio n. 24
0
 def test_knows_if_an_owner_of_a_post_can_delete_it(self):
     # Setup
     u2 = UserFactory.create()
     assign_perm('can_delete_own_posts', self.u1, self.forum_1)
     assign_perm('can_delete_own_posts', u2, self.forum_1)
     # Run & check
     assert self.perm_handler.can_delete_post(self.post_1, self.u1)
     assert not self.perm_handler.can_delete_post(self.post_2, self.u1)
     assert not self.perm_handler.can_delete_post(self.post_1, u2)
Esempio n. 25
0
 def test_cannot_target_an_anonymous_user_and_a_registered_user(self):
     # Setup
     user = UserFactory.create()
     # Run & check
     with pytest.raises(ValidationError):
         perm = ForumPermissionFactory.create(is_local=True, is_global=True)
         user_perm = UserForumPermissionFactory.build(
             permission=perm, user=user, anonymous_user=True)
         user_perm.clean()
Esempio n. 26
0
 def test_knows_that_a_superuser_has_all_the_permissions(self):
     # Setup
     user = UserFactory.create(is_active=True, is_superuser=True)
     checker = ForumPermissionChecker(user)
     # Run & check
     assert checker.has_perm('can_see_forum', self.forum)
     assert checker.has_perm('can_read_forum', self.forum)
     assert checker.get_perms(self.forum) == \
         list(ForumPermission.objects.values_list('codename', flat=True))
Esempio n. 27
0
 def test_knows_that_user_permissions_take_precedence_over_group_permissions(self):
     # Setup
     user = UserFactory.create()
     group = GroupFactory.create()
     user.groups.add(group)
     assign_perm('can_read_forum', user, self.forum, has_perm=False)
     assign_perm('can_read_forum', group, self.forum, has_perm=True)
     checker = ForumPermissionChecker(user)
     # Run & check
     assert not checker.has_perm('can_read_forum', self.forum)
Esempio n. 28
0
 def test_knows_that_a_moderator_can_add_posts_to_a_locked_topic(self):
     # Setup
     assign_perm('can_reply_to_topics', self.u1, self.forum_1)
     assign_perm('can_reply_to_locked_topics', self.u1, self.forum_1)
     u2 = UserFactory.create()
     self.forum_1_topic.status = self.forum_1_topic.TOPIC_LOCKED
     self.forum_1_topic.save()
     # Run & check
     assert self.perm_handler.can_add_post(self.forum_1_topic, self.u1)
     assert not self.perm_handler.can_add_post(self.forum_1_topic, u2)
Esempio n. 29
0
    def setup(self):
        self.factory = RequestFactory()
        self.user = UserFactory.create()

        # Set up the following forum tree:
        #
        #     top_level_cat
        #         forum_1
        #         forum_2
        #             forum_2_child_1
        #     top_level_forum_1
        #     top_level_forum_2
        #         sub_cat
        #             sub_sub_forum
        #     top_level_forum_3
        #         forum_3
        #             forum_3_child_1
        #                 forum_3_child_1_1
        #                     deep_forum
        #     last_forum
        #
        self.top_level_cat = create_category_forum()

        self.forum_1 = create_forum(parent=self.top_level_cat)
        self.forum_2 = create_forum(parent=self.top_level_cat)
        self.forum_2_child_1 = create_forum(parent=self.forum_2)

        self.top_level_forum_1 = create_forum()

        self.top_level_forum_2 = create_forum()
        self.sub_cat = create_category_forum(parent=self.top_level_forum_2)
        self.sub_sub_forum = create_forum(parent=self.sub_cat)

        self.top_level_forum_3 = create_forum()
        self.forum_3 = create_forum(parent=self.top_level_forum_3)
        self.forum_3_child_1 = create_forum(parent=self.forum_3)
        self.forum_3_child_1_1 = create_forum(parent=self.forum_3_child_1)
        self.deep_forum = create_forum(parent=self.forum_3_child_1_1)

        self.last_forum = create_forum()

        # Set up a topic and some posts
        self.topic_1 = create_topic(forum=self.forum_1, poster=self.user)
        self.post_1 = PostFactory.create(topic=self.topic_1, poster=self.user)
        self.topic_2 = create_topic(forum=self.forum_2, poster=self.user)
        self.post_2 = PostFactory.create(topic=self.topic_2, poster=self.user)
        self.topic_3 = create_topic(forum=self.forum_2_child_1, poster=self.user)
        self.post_3 = PostFactory.create(topic=self.topic_3, poster=self.user)

        # Assign some permissions
        assign_perm('can_read_forum', self.user, self.top_level_cat)
        assign_perm('can_read_forum', self.user, self.forum_1)
        assign_perm('can_read_forum', self.user, self.forum_2)
        assign_perm('can_read_forum', self.user, self.forum_2_child_1)
        assign_perm('can_read_forum', self.user, self.top_level_forum_1)
Esempio n. 30
0
    def setup(self):
        self.u1 = UserFactory.create()
        self.u2 = UserFactory.create()

        self.top_level_cat_1 = create_category_forum()
        self.top_level_cat_2 = create_category_forum()

        self.forum_1 = create_forum(parent=self.top_level_cat_1)
        self.forum_2 = create_forum(parent=self.top_level_cat_1)
        self.forum_2_child_1 = create_link_forum(parent=self.forum_2)
        self.forum_2_child_2 = create_forum(parent=self.forum_2)
        self.forum_3 = create_forum(parent=self.top_level_cat_1)

        self.forum_4 = create_forum(parent=self.top_level_cat_2)

        self.topic = create_topic(forum=self.forum_2, poster=self.u1)
        PostFactory.create(topic=self.topic, poster=self.u1)

        # Initially u2 read the previously created topic
        ForumReadTrackFactory.create(forum=self.forum_2, user=self.u2)
Esempio n. 31
0
 def test_knows_that_a_superuser_can_unsubscribe_from_topics(self):
     # Setup
     u2 = UserFactory.create(is_superuser=True)
     self.forum_1_topic.subscribers.add(u2)
     # Run & check
     assert self.perm_handler.can_unsubscribe_from_topic(self.forum_1_topic, u2)
 def test_knows_that_a_superuser_can_delete_all_posts(self):
     # Setup
     u2 = UserFactory.create(is_superuser=True)
     # Run & check
     assert self.perm_handler.can_delete_post(self.post_1, u2)
 def test_knows_that_a_superuser_can_post_without_approval(self):
     # Setup
     u2 = UserFactory.create(is_superuser=True)
     # Run & check
     assert self.perm_handler.can_post_without_approval(self.forum_1, u2)
Esempio n. 34
0
    def setup(self):
        # Permission handler
        self.perm_handler = PermissionHandler()

        # Create a basic user
        self.user = UserFactory.create()

        # Set up the following forum tree:
        #
        #     top_level_cat
        #         forum_1
        #         forum_2
        #             forum_2_child_1
        #     top_level_forum_1
        #     top_level_forum_2
        #         sub_cat
        #             sub_sub_forum
        #     top_level_forum_3
        #         forum_3
        #             forum_3_child_1
        #                 forum_3_child_1_1
        #                     deep_forum
        #     last_forum
        #
        self.top_level_cat = create_category_forum()

        self.forum_1 = create_forum(parent=self.top_level_cat)
        self.forum_2 = create_forum(parent=self.top_level_cat)
        self.forum_2_child_1 = create_forum(parent=self.forum_2)

        self.top_level_forum_1 = create_forum()

        self.top_level_forum_2 = create_forum()
        self.sub_cat = create_category_forum(parent=self.top_level_forum_2)
        self.sub_sub_forum = create_forum(parent=self.sub_cat)

        self.top_level_forum_3 = create_forum()
        self.forum_3 = create_forum(parent=self.top_level_forum_3)
        self.forum_3_child_1 = create_forum(parent=self.forum_3)
        self.forum_3_child_1_1 = create_forum(parent=self.forum_3_child_1)
        self.deep_forum = create_forum(parent=self.forum_3_child_1_1)

        self.last_forum = create_forum()

        # Set up a topic and some posts
        self.topic_1 = create_topic(forum=self.forum_1, poster=self.user)
        self.post_1 = PostFactory.create(topic=self.topic_1, poster=self.user)
        self.topic_2 = create_topic(forum=self.forum_2, poster=self.user)
        self.post_2 = PostFactory.create(topic=self.topic_2, poster=self.user)
        self.topic_3 = create_topic(forum=self.forum_2_child_1,
                                    poster=self.user)
        self.post_3 = PostFactory.create(topic=self.topic_3, poster=self.user)

        # Assign some permissions
        assign_perm('can_read_forum', self.user, self.top_level_cat)
        assign_perm('can_read_forum', self.user, self.forum_1)
        assign_perm('can_read_forum', self.user, self.forum_2)
        assign_perm('can_read_forum', self.user, self.forum_2_child_1)
        assign_perm('can_read_forum', self.user, self.top_level_forum_1)

        self.sqs = SearchQuerySet()

        rebuild_index.Command().handle(interactive=False, verbosity=-1)

        yield

        # teardown
        # --

        clear_index.Command().handle(interactive=False, verbosity=-1)
 def test_knows_that_a_superuser_can_vote_in_polls(self):
     # Setup
     poll = TopicPollFactory.create(topic=self.forum_1_topic)
     u2 = UserFactory.create(is_superuser=True)
     # Run & check
     assert self.perm_handler.can_vote_in_poll(poll, u2)
Esempio n. 36
0
 def test_allows_the_use_of_default_permissions(self):
     # Setup
     user = UserFactory.create()
     checker = ForumPermissionChecker(user)
     # Run & check
     assert checker.has_perm('can_see_forum', self.forum)
 def test_knows_if_a_user_can_read_a_forum(self):
     # Setup
     u2 = UserFactory.create()
     # Run & check
     assert not self.perm_handler.can_read_forum(self.forum_1, u2)
     assert self.perm_handler.can_read_forum(self.forum_3, self.u1)
 def test_knows_that_a_superuser_can_download_files(self):
     # Setup
     u2 = UserFactory.create(is_superuser=True)
     # Run & check
     assert self.perm_handler.can_download_files(self.forum_1, u2)
 def test_knows_that_a_non_moderator_cannot_access_the_moderation_queue(
         self):
     # Setup
     u2 = UserFactory.create()
     # Run & check
     assert not self.perm_handler.can_access_moderation_queue(u2)
 def test_knows_that_a_superuser_can_access_the_moderation_queue(self):
     # Setup
     u2 = UserFactory.create(is_superuser=True)
     # Run & check
     assert self.perm_handler.can_access_moderation_queue(u2)
 def test_knows_that_a_superuser_can_update_topics_to_announces(self):
     # Setup
     u2 = UserFactory.create(is_superuser=True)
     # Run & check
     assert self.perm_handler.can_update_topics_to_announces(
         self.forum_1, u2)
Esempio n. 42
0
    def test_knows_precedence_of_permissions_is_user_group_allusers(self):
        # Setup
        machina_settings.DEFAULT_AUTHENTICATED_USER_FORUM_PERMISSIONS = []
        user = UserFactory.create()
        group = GroupFactory.create()
        user.groups.add(group)

        # 'res' in the following dict means 'expected result'
        test_list = [
            # Differing user settings, all_auth and group to True
            {'level': 'global', 'all_auth': True, 'group': True, 'user': True, 'res': True},
            {'level': 'global', 'all_auth': True, 'group': True, 'user': '******', 'res': True},
            {'level': 'global', 'all_auth': True, 'group': True, 'user': False, 'res': False},
            # Differing user settings, all_auto True, group permission False
            {'level': 'global', 'all_auth': True, 'group': False, 'user': True, 'res': True},
            {'level': 'global', 'all_auth': True, 'group': False, 'user': '******', 'res': False},
            {'level': 'global', 'all_auth': True, 'group': False, 'user': False, 'res': False},
            # Differing user settings, all_auth and group on False
            {'level': 'global', 'all_auth': False, 'group': False, 'user': True, 'res': True},
            {'level': 'global', 'all_auth': False, 'group': False, 'user': '******', 'res': False},
            {'level': 'global', 'all_auth': False, 'group': False, 'user': False, 'res': False},
            # Differing user settings, all_auth False, group permission True
            {'level': 'global', 'all_auth': False, 'group': True, 'user': True, 'res': True},
            {'level': 'global', 'all_auth': False, 'group': True, 'user': '******', 'res': True},
            {'level': 'global', 'all_auth': False, 'group': True, 'user': False, 'res': False},
            # Now on forum level instead of global
            # Differing user settings, all_auth and group to True
            {'level': 'forum', 'all_auth': True, 'group': True, 'user': True, 'res': True},
            {'level': 'forum', 'all_auth': True, 'group': True, 'user': '******', 'res': True},
            {'level': 'forum', 'all_auth': True, 'group': True, 'user': False, 'res': False},
            # Differing user settings, all_auto True, group permission False
            {'level': 'forum', 'all_auth': True, 'group': False, 'user': True, 'res': True},
            {'level': 'forum', 'all_auth': True, 'group': False, 'user': '******', 'res': False},
            {'level': 'forum', 'all_auth': True, 'group': False, 'user': False, 'res': False},
            # Differing user settings, all_auth and group on False
            {'level': 'forum', 'all_auth': False, 'group': False, 'user': True, 'res': True},
            {'level': 'forum', 'all_auth': False, 'group': False, 'user': '******', 'res': False},
            {'level': 'forum', 'all_auth': False, 'group': False, 'user': False, 'res': False},
            # Differing user settings, all_auth False, group permission True
            {'level': 'forum', 'all_auth': False, 'group': True, 'user': True, 'res': True},
            {'level': 'forum', 'all_auth': False, 'group': True, 'user': '******', 'res': True},
            {'level': 'forum', 'all_auth': False, 'group': True, 'user': False, 'res': False},
        ]

        # loop over test dict:
        for dct in test_list:
            # set each permission as instructed in the dict
            if dct['level'] == 'global':
                forum_val = None
            else:
                forum_val = self.forum
            assign_perm(
                'can_read_forum',
                ALL_AUTHENTICATED_USERS,
                forum_val,
                has_perm=dct['all_auth']
            )
            assign_perm('can_read_forum', group, forum_val, has_perm=dct['group'])
            if dct['user'] != 'unset':
                assign_perm('can_read_forum', user, forum_val, has_perm=dct['user'])

            checker = ForumPermissionChecker(user)
            # test if value is as the expected value
            assert checker.has_perm('can_read_forum', forum_val) == dct['res']

            # unset the set permissions so the next iteration goes in blankly
            remove_perm('can_read_forum', ALL_AUTHENTICATED_USERS, forum_val)
            remove_perm('can_read_forum', group, forum_val)
            if dct['user'] != 'unset':
                remove_perm('can_read_forum', user, forum_val)
 def test_knows_that_a_superuser_can_add_posts_to_a_topic(self):
     # Setup
     u2 = UserFactory.create(is_superuser=True)
     # Run & check
     assert self.perm_handler.can_add_post(self.forum_1_topic, u2)
Esempio n. 44
0
 def test_knows_if_a_user_can_subscribe_to_topics(self):
     # Setup
     u2 = UserFactory.create()
     # Run & check
     assert self.perm_handler.can_subscribe_to_topic(self.forum_1_topic, self.u1)
     assert not self.perm_handler.can_subscribe_to_topic(self.forum_1_topic, u2)
Esempio n. 45
0
 def test_returns_the_display_name_of_a_specific_user(self):
     user = UserFactory.create()
     assert forum_member_display_name(user) == user.username