Beispiel #1
0
    def test_list_members(self):
        """
        To test the listing of the members with and without page parameter.
        """

        # create strange member
        weird = ProfileFactory()
        weird.user.username = u"ïtrema718"
        weird.user.email = u"foo@\xfbgmail.com"
        weird.user.save()

        # list of members.
        result = self.client.get(
            reverse('member-list'),
            follow=False
        )
        self.assertEqual(result.status_code, 200)

        nb_users = len(result.context['members'])

        # Test that inactive user don't show up
        unactive_user = UserFactory()
        unactive_user.is_active = False
        unactive_user.save()
        result = self.client.get(
            reverse('member-list'),
            follow=False
        )
        self.assertEqual(result.status_code, 200)
        self.assertEqual(nb_users, len(result.context['members']))

        # list of members with page parameter.
        result = self.client.get(
            reverse('member-list') + u'?page=1',
            follow=False
        )
        self.assertEqual(result.status_code, 200)

        # page which doesn't exist.
        result = self.client.get(
            reverse('member-list') +
            u'?page=1534',
            follow=False
        )
        self.assertEqual(result.status_code, 404)

        # page parameter isn't an integer.
        result = self.client.get(
            reverse('member-list') +
            u'?page=abcd',
            follow=False
        )
        self.assertEqual(result.status_code, 404)
Beispiel #2
0
 def test_update_private_topic_with_unreachable_user(self):
     """
     Tries to update a private topic with an unreachable user.
     """
     anonymous_user = UserFactory(
         username=ZDS_APP["member"]["anonymous_account"])
     anonymous_user.groups.add(self.bot_group)
     anonymous_user.save()
     data = {
         'participants': anonymous_user.id,
     }
     response = self.client.put(
         reverse('api-mp-detail', args=[self.private_topic.id]), data)
     self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
     self.assertNotEqual(
         response.data.get('participants')[0], data.get('participants'))
Beispiel #3
0
 def test_create_private_topic_with_unreachable_user(self):
     """
     Tries to create a new private topic with an unreachable user.
     """
     anonymous_user = UserFactory(
         username=ZDS_APP["member"]["anonymous_account"])
     anonymous_user.groups.add(self.bot_group)
     anonymous_user.save()
     data = {
         'title': 'I love ice cream!',
         'subtitle': 'Come eat one with me.',
         'participants': anonymous_user.id,
     }
     response = self.client.post(reverse('api-mp-list'), data)
     self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
     private_topics = PrivateTopic.objects.get_private_topics_of_user(
         anonymous_user.id)
     self.assertEqual(0, len(private_topics))
Beispiel #4
0
class AddParticipantViewTest(TestCase):

    def setUp(self):
        self.profile1 = ProfileFactory()
        self.profile2 = ProfileFactory()
        self.anonymous_account = UserFactory(username=settings.ZDS_APP['member']['anonymous_account'])
        self.bot_group = Group()
        self.bot_group.name = settings.ZDS_APP['member']['bot_group']
        self.bot_group.save()
        self.anonymous_account.groups.add(self.bot_group)
        self.anonymous_account.save()
        self.topic1 = PrivateTopicFactory(author=self.profile1.user)
        self.topic1.participants.add(self.profile2.user)
        self.post1 = PrivatePostFactory(
            privatetopic=self.topic1,
            author=self.profile1.user,
            position_in_topic=1)

        self.post2 = PrivatePostFactory(
            privatetopic=self.topic1,
            author=self.profile2.user,
            position_in_topic=2)

        self.assertTrue(
            self.client.login(
                username=self.profile1.user.username,
                password='******'
            )
        )

    def test_denies_anonymous(self):

        self.client.logout()
        response = self.client.get(
            reverse('mp-edit-participant', args=[1, 'private-topic']),
            follow=True
        )

        self.assertRedirects(
            response,
            reverse('member-login') +
            '?next=' + reverse('mp-edit-participant', args=[1, 'private-topic']))

    def test_fail_add_participant_topic_no_exist(self):

        response = self.client.post(
            reverse('mp-edit-participant', args=[451, 'private-topic']),
            follow=True
        )

        self.assertEqual(404, response.status_code)

    def test_test_fail_add_bot_as_participant(self):
        self.client.logout()
        self.assertTrue(
            self.client.login(
                username=self.profile1.user.username,
                password='******'
            )
        )

        self.client.post(
            reverse('mp-edit-participant', args=[self.topic1.pk, self.topic1.slug]),
            {
                'username': self.anonymous_account.username
            }
        )
        self.assertFalse(self.anonymous_account in self.topic1.participants.all())

    def test_fail_add_participant_who_no_exist(self):

        response = self.client.post(
            reverse('mp-edit-participant', args=[self.topic1.pk, self.topic1.slug]),
            {
                'username': '******'
            },
            follow=True
        )

        self.assertEqual(200, response.status_code)
        self.assertEqual(1, len(response.context['messages']))

    def test_fail_add_participant_with_no_right(self):
        profile3 = ProfileFactory()

        self.client.logout()
        self.assertTrue(
            self.client.login(
                username=profile3.user.username,
                password='******'
            )
        )

        response = self.client.post(
            reverse('mp-edit-participant', args=[self.topic1.pk, self.topic1.slug]),
            {
                'username': profile3.user.username
            }
        )

        self.assertEqual(403, response.status_code)
        self.assertNotIn(
            profile3.user,
            PrivateTopic.objects.get(pk=self.topic1.pk).participants.all()
        )

    def test_fail_add_participant_already_in(self):

        response = self.client.post(
            reverse('mp-edit-participant', args=[self.topic1.pk, self.topic1.slug]),
            {
                'username': self.profile2.user.username
            },
            follow=True
        )

        self.assertEqual(200, response.status_code)
        self.assertEqual(1, len(response.context['messages']))

    def test_success_add_participant(self):

        profile3 = ProfileFactory()

        response = self.client.post(
            reverse('mp-edit-participant', args=[self.topic1.pk, self.topic1.slug]),
            {
                'username': profile3.user.username
            },
            follow=True
        )

        self.assertEqual(200, response.status_code)
        self.assertEqual(1, len(response.context['messages']))
        self.assertIn(
            profile3.user,
            PrivateTopic.objects.get(pk=self.topic1.pk).participants.all()
        )
Beispiel #5
0
class LeaveViewTest(TestCase):

    def setUp(self):
        self.profile1 = ProfileFactory()
        self.profile2 = ProfileFactory()

        self.anonymous_account = UserFactory(username=settings.ZDS_APP['member']['anonymous_account'])
        self.bot_group = Group()
        self.bot_group.name = settings.ZDS_APP['member']['bot_group']
        self.bot_group.save()
        self.anonymous_account.groups.add(self.bot_group)
        self.anonymous_account.save()

        self.topic1 = PrivateTopicFactory(author=self.profile1.user)
        self.topic1.participants.add(self.profile2.user)
        self.post1 = PrivatePostFactory(
            privatetopic=self.topic1,
            author=self.profile1.user,
            position_in_topic=1)

        self.post2 = PrivatePostFactory(
            privatetopic=self.topic1,
            author=self.profile2.user,
            position_in_topic=2)

        self.assertTrue(
            self.client.login(
                username=self.profile1.user.username,
                password='******'
            )
        )

    def test_denies_anonymous(self):

        self.client.logout()
        response = self.client.get(reverse('mp-delete', args=[1, 'private-topic']), follow=True)

        self.assertRedirects(
            response,
            reverse('member-login') +
            '?next=' + reverse('mp-delete', args=[1, 'private-topic']))

    def test_fail_leave_topic_no_exist(self):

        response = self.client.post(reverse('mp-delete', args=[999, 'private-topic']))

        self.assertEqual(404, response.status_code)

    def test_success_leave_topic_as_author_no_participants(self):

        self.topic1.participants.clear()
        self.topic1.save()

        response = self.client.post(reverse('mp-delete', args=[self.topic1.pk, self.topic1.slug]), follow=True)

        self.assertEqual(200, response.status_code)
        self.assertEqual(
            0,
            PrivateTopic.objects.filter(pk=self.topic1.pk).all().count()
        )

    def test_success_leave_topic_as_author(self):

        response = self.client.post(reverse('mp-delete', args=[self.topic1.pk, self.topic1.slug]), follow=True)

        self.assertEqual(200, response.status_code)
        self.assertEqual(
            1,
            PrivateTopic.objects.filter(pk=self.topic1.pk).all().count()
        )

        self.assertEqual(
            self.profile2.user,
            PrivateTopic.objects.get(pk=self.topic1.pk).author
        )

    def test_success_leave_topic_as_participant(self):

        self.client.logout()
        self.assertTrue(
            self.client.login(
                username=self.profile2.user.username,
                password='******'
            )
        )

        response = self.client.post(reverse('mp-delete', args=[self.topic1.pk, self.topic1.slug]), follow=True)

        self.assertEqual(200, response.status_code)

        self.assertNotIn(
            self.profile2.user,
            PrivateTopic.objects.get(pk=self.topic1.pk).participants.all()
        )

        self.assertNotEqual(
            self.profile2.user,
            PrivateTopic.objects.get(pk=self.topic1.pk).author
        )
Beispiel #6
0
class AddParticipantViewTest(TestCase):
    def setUp(self):
        self.profile1 = ProfileFactory()
        self.profile2 = ProfileFactory()
        self.anonymous_account = UserFactory(username=settings.ZDS_APP["member"]["anonymous_account"])
        self.bot_group = Group()
        self.bot_group.name = settings.ZDS_APP["member"]["bot_group"]
        self.bot_group.save()
        self.anonymous_account.groups.add(self.bot_group)
        self.anonymous_account.save()
        self.topic1 = PrivateTopicFactory(author=self.profile1.user)
        self.topic1.participants.add(self.profile2.user)
        self.post1 = PrivatePostFactory(privatetopic=self.topic1, author=self.profile1.user, position_in_topic=1)

        self.post2 = PrivatePostFactory(privatetopic=self.topic1, author=self.profile2.user, position_in_topic=2)

        self.assertTrue(self.client.login(username=self.profile1.user.username, password="******"))

    def test_denies_anonymous(self):

        self.client.logout()
        response = self.client.get(reverse("mp-edit-participant", args=[1, "private-topic"]), follow=True)

        self.assertRedirects(
            response, reverse("member-login") + "?next=" + reverse("mp-edit-participant", args=[1, "private-topic"])
        )

    def test_fail_add_participant_topic_no_exist(self):

        response = self.client.post(reverse("mp-edit-participant", args=[451, "private-topic"]), follow=True)

        self.assertEqual(404, response.status_code)

    def test_test_fail_add_bot_as_participant(self):
        self.client.logout()
        self.assertTrue(self.client.login(username=self.profile1.user.username, password="******"))

        self.client.post(
            reverse("mp-edit-participant", args=[self.topic1.pk, self.topic1.slug]),
            {"username": self.anonymous_account.username},
        )

        # TODO (Arnaud-D): this test actually succeeds because of a Http404.
        #  NotReachableError is not raised.
        self.assertFalse(self.anonymous_account in self.topic1.participants.all())

    def test_fail_add_participant_who_no_exist(self):

        response = self.client.post(
            reverse("mp-edit-participant", args=[self.topic1.pk, self.topic1.slug]), {"username": "******"}, follow=True
        )

        self.assertEqual(200, response.status_code)
        self.assertEqual(1, len(response.context["messages"]))

    def test_fail_add_participant_with_no_right(self):
        profile3 = ProfileFactory()

        self.client.logout()
        self.assertTrue(self.client.login(username=profile3.user.username, password="******"))

        response = self.client.post(
            reverse("mp-edit-participant", args=[self.topic1.pk, self.topic1.slug]),
            {"username": profile3.user.username},
        )

        self.assertEqual(403, response.status_code)
        self.assertNotIn(profile3.user, PrivateTopic.objects.get(pk=self.topic1.pk).participants.all())

    def test_fail_add_participant_already_in(self):

        response = self.client.post(
            reverse("mp-edit-participant", args=[self.topic1.pk, self.topic1.slug]),
            {"username": self.profile2.user.username},
            follow=True,
        )

        self.assertEqual(200, response.status_code)
        self.assertEqual(1, len(response.context["messages"]))

    def test_success_add_participant(self):

        profile3 = ProfileFactory()

        response = self.client.post(
            reverse("mp-edit-participant", args=[self.topic1.pk, self.topic1.slug]),
            {"username": profile3.user.username},
            follow=True,
        )

        self.assertEqual(200, response.status_code)
        self.assertEqual(1, len(response.context["messages"]))
        self.assertIn(profile3.user, PrivateTopic.objects.get(pk=self.topic1.pk).participants.all())
Beispiel #7
0
class AddParticipantViewTest(TestCase):

    def setUp(self):
        self.profile1 = ProfileFactory()
        self.profile2 = ProfileFactory()
        self.anonymous_account = UserFactory(username=settings.ZDS_APP['member']['anonymous_account'])
        self.bot_group = Group()
        self.bot_group.name = settings.ZDS_APP['member']['bot_group']
        self.bot_group.save()
        self.anonymous_account.groups.add(self.bot_group)
        self.anonymous_account.save()
        self.topic1 = PrivateTopicFactory(author=self.profile1.user)
        self.topic1.participants.add(self.profile2.user)
        self.post1 = PrivatePostFactory(
            privatetopic=self.topic1,
            author=self.profile1.user,
            position_in_topic=1)

        self.post2 = PrivatePostFactory(
            privatetopic=self.topic1,
            author=self.profile2.user,
            position_in_topic=2)

        self.assertTrue(
            self.client.login(
                username=self.profile1.user.username,
                password='******'
            )
        )

    def test_denies_anonymous(self):

        self.client.logout()
        response = self.client.get(
            reverse('mp-edit-participant', args=[1, 'private-topic']),
            follow=True
        )

        self.assertRedirects(
            response,
            reverse('member-login') +
            '?next=' + reverse('mp-edit-participant', args=[1, 'private-topic']))

    def test_fail_add_participant_topic_no_exist(self):

        response = self.client.post(
            reverse('mp-edit-participant', args=[451, 'private-topic']),
            follow=True
        )

        self.assertEqual(404, response.status_code)

    def test_test_fail_add_bot_as_participant(self):
        self.client.logout()
        self.assertTrue(
            self.client.login(
                username=self.profile1.user.username,
                password='******'
            )
        )

        self.client.post(
            reverse('mp-edit-participant', args=[self.topic1.pk, self.topic1.slug]),
            {
                'username': self.anonymous_account.username
            }
        )
        self.assertFalse(self.anonymous_account in self.topic1.participants.all())

    def test_fail_add_participant_who_no_exist(self):

        response = self.client.post(
            reverse('mp-edit-participant', args=[self.topic1.pk, self.topic1.slug]),
            {
                'username': '******'
            },
            follow=True
        )

        self.assertEqual(200, response.status_code)
        self.assertEqual(1, len(response.context['messages']))

    def test_fail_add_participant_with_no_right(self):
        profile3 = ProfileFactory()

        self.client.logout()
        self.assertTrue(
            self.client.login(
                username=profile3.user.username,
                password='******'
            )
        )

        response = self.client.post(
            reverse('mp-edit-participant', args=[self.topic1.pk, self.topic1.slug]),
            {
                'username': profile3.user.username
            }
        )

        self.assertEqual(403, response.status_code)
        self.assertNotIn(
            profile3.user,
            PrivateTopic.objects.get(pk=self.topic1.pk).participants.all()
        )

    def test_fail_add_participant_already_in(self):

        response = self.client.post(
            reverse('mp-edit-participant', args=[self.topic1.pk, self.topic1.slug]),
            {
                'username': self.profile2.user.username
            },
            follow=True
        )

        self.assertEqual(200, response.status_code)
        self.assertEqual(1, len(response.context['messages']))

    def test_success_add_participant(self):

        profile3 = ProfileFactory()

        response = self.client.post(
            reverse('mp-edit-participant', args=[self.topic1.pk, self.topic1.slug]),
            {
                'username': profile3.user.username
            },
            follow=True
        )

        self.assertEqual(200, response.status_code)
        self.assertEqual(1, len(response.context['messages']))
        self.assertIn(
            profile3.user,
            PrivateTopic.objects.get(pk=self.topic1.pk).participants.all()
        )
Beispiel #8
0
class LeaveViewTest(TestCase):

    def setUp(self):
        self.profile1 = ProfileFactory()
        self.profile2 = ProfileFactory()

        self.anonymous_account = UserFactory(username=settings.ZDS_APP['member']['anonymous_account'])
        self.bot_group = Group()
        self.bot_group.name = settings.ZDS_APP['member']['bot_group']
        self.bot_group.save()
        self.anonymous_account.groups.add(self.bot_group)
        self.anonymous_account.save()

        self.topic1 = PrivateTopicFactory(author=self.profile1.user)
        self.topic1.participants.add(self.profile2.user)
        self.post1 = PrivatePostFactory(
            privatetopic=self.topic1,
            author=self.profile1.user,
            position_in_topic=1)

        self.post2 = PrivatePostFactory(
            privatetopic=self.topic1,
            author=self.profile2.user,
            position_in_topic=2)

        self.assertTrue(
            self.client.login(
                username=self.profile1.user.username,
                password='******'
            )
        )

    def test_denies_anonymous(self):

        self.client.logout()
        response = self.client.get(reverse('mp-delete', args=[1, 'private-topic']), follow=True)

        self.assertRedirects(
            response,
            reverse('member-login') +
            '?next=' + reverse('mp-delete', args=[1, 'private-topic']))

    def test_fail_leave_topic_no_exist(self):

        response = self.client.post(reverse('mp-delete', args=[999, 'private-topic']))

        self.assertEqual(404, response.status_code)

    def test_success_leave_topic_as_author_no_participants(self):

        self.topic1.participants.clear()
        self.topic1.save()

        response = self.client.post(reverse('mp-delete', args=[self.topic1.pk, self.topic1.slug]), follow=True)

        self.assertEqual(200, response.status_code)
        self.assertEqual(
            0,
            PrivateTopic.objects.filter(pk=self.topic1.pk).all().count()
        )

    def test_success_leave_topic_as_author(self):

        response = self.client.post(reverse('mp-delete', args=[self.topic1.pk, self.topic1.slug]), follow=True)

        self.assertEqual(200, response.status_code)
        self.assertEqual(
            1,
            PrivateTopic.objects.filter(pk=self.topic1.pk).all().count()
        )

        self.assertEqual(
            self.profile2.user,
            PrivateTopic.objects.get(pk=self.topic1.pk).author
        )

    def test_success_leave_topic_as_participant(self):

        self.client.logout()
        self.assertTrue(
            self.client.login(
                username=self.profile2.user.username,
                password='******'
            )
        )

        response = self.client.post(reverse('mp-delete', args=[self.topic1.pk, self.topic1.slug]), follow=True)

        self.assertEqual(200, response.status_code)

        self.assertNotIn(
            self.profile2.user,
            PrivateTopic.objects.get(pk=self.topic1.pk).participants.all()
        )

        self.assertNotEqual(
            self.profile2.user,
            PrivateTopic.objects.get(pk=self.topic1.pk).author
        )