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)
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'))
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))
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() )
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 )
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())
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() )
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 )