示例#1
0
    def setUp(self):
        """Setup for image popularity manager tests"""
        self.banned_user = self.create_user(is_banned=True, is_superuser=True)
        self.super_user = self.create_superuser()
        self.normal_user = self.create_user()
        self.group = mommy.make('groups.Group')
        self.banned_user.add_to_group(self.group.pk)
        self.super_user.add_to_group(self.group.pk)
        self.normal_user.add_to_group(self.group.pk)

        self.client.login(username=self.super_user.email, password='******')

        path = os.path.dirname(os.path.abspath(__file__))
        self.largefile = path + '/1000x500.png'
        self.smallfile = path + '/200x200.png'

        self.largeimage = Image()
        self.largeimage.image = File(open(self.largefile))
        self.largeimage.user = self.super_user
        self.largeimage.save()

        self.smallimage = Image()
        self.smallimage.image = File(open(self.smallfile))
        self.smallimage.user = self.super_user
        self.smallimage.save()
示例#2
0
    def test_images_from_a_banned_user_are_visible_to_banned_user(self):
        """Images posted by banned members are visible to the banned member."""
        banned_user = self.create_user(is_banned=True)
        group = mommy.make(Group)
        banned_user.add_to_group(group.pk)
        self.user2.add_to_group(group.pk)

        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=group)
        message = mommy.make(
            'connectmessages.Message', thread=thread, sender=banned_user)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        client = Client()
        client.post(
            reverse('login'),
            {'username': banned_user.email, 'password': '******'}
        )
        result = client.get(
            reverse('group_images', kwargs={'group_id': group.pk}))
        self.assertIn(image1, result.context['images'])
示例#3
0
    def setUp(self):
        """Setup for image popularity manager tests"""
        self.banned_user = self.create_user(is_banned=True, is_superuser=True)
        self.super_user = self.create_superuser()
        self.normal_user = self.create_user()
        self.group = mommy.make('groups.Group')
        self.banned_user.add_to_group(self.group.pk)
        self.super_user.add_to_group(self.group.pk)
        self.normal_user.add_to_group(self.group.pk)

        self.client.login(username=self.super_user.email, password='******')

        path = os.path.dirname(os.path.abspath(__file__))
        self.largefile = path + '/1000x500.png'
        self.smallfile = path + '/200x200.png'

        self.largeimage = Image()
        self.largeimage.image = File(open(self.largefile))
        self.largeimage.user = self.super_user
        self.largeimage.save()

        self.smallimage = Image()
        self.smallimage.image = File(open(self.smallfile))
        self.smallimage.user = self.super_user
        self.smallimage.save()
示例#4
0
    def setUp(self):
        """Setup the GroupImagesViewTest TestCase"""
        super(GroupImagesViewTest, self).setUp()
        path = os.path.dirname(os.path.abspath(__file__))
        self.smallfile = path + '/200x200.gif'

        self.message1img = Image()
        self.message1img.user = self.message1.sender
        self.message1img.image = File(open(self.smallfile))
        self.message1img.save()
        self.message1.images.add(self.message1img)

        self.message3img = Image()
        self.message3img.user = self.message3.sender
        self.message3img.image = File(open(self.smallfile))
        self.message3img.save()
        self.message3.images.add(self.message3img)

        self.client2 = Client()
        self.client2.post(
            reverse('login'),
            {
                'username': '******',
                'password': '******'
            })
示例#5
0
 def get_image(self, filename):
     """Returns the specified image."""
     path = os.path.join(self.path, filename)
     image = Image()
     image.image = File(open(path))
     image.user = self.create_user()
     image.save(process=False)
     return image
示例#6
0
    def test_with_user_no_images_from_banned_users(self):
        """Images from banned users shouldn't be present."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=self.group)
        message = mommy.make(
            'connectmessages.Message', thread=thread, sender=self.banned_user)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertNotIn(image1, result.context['images'])
示例#7
0
    def test_moderated_messages_properly_appear(self):
        """
        Test that messages appear differently to different users
        depending on the message's moderation status
        """

        # Create a new group
        group = mommy.make(Group)
        self.user1.add_to_group(group.pk)
        self.user2.add_to_group(group.pk)

        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=group)
        message = mommy.make(
            'connectmessages.Message', thread=thread, sender=self.user1)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        # Test the visibility of an image when the message has not yet been
        # approved by a group moderator
        message.status = 'pending'
        message.save()
        sender_response, receiver_response = self.request_multiple_users(group)
        self.assertContains(sender_response, image1.get_thumbnail)
        self.assertNotContains(receiver_response, image1.get_thumbnail)

        # Test the visibility when the message has been approved
        message.status = 'approved'
        message.save()
        sender_response, receiver_response = self.request_multiple_users(group)
        self.assertContains(sender_response, image1.get_thumbnail)
        self.assertContains(receiver_response, image1.get_thumbnail)

        # As we want spammers to think their content was approved, test when
        # a message has been marked as spam
        message.status = 'spam'
        message.save()
        sender_response, receiver_response = self.request_multiple_users(group)
        self.assertContains(sender_response, image1.get_thumbnail)
        self.assertNotContains(receiver_response, image1.get_thumbnail)
示例#8
0
    def test_with_user(self):
        """Should return images attached to approved messages."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=self.group)
        message = mommy.make(
            'connectmessages.Message',
            thread=thread,
            sender=self.normal_user,
            status='approved'
        )

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertIn(image1, result.context['images'])
示例#9
0
    def test_with_user_message_not_approved_user_is_sender(self):
        """Images that are not approved should be returned to the sender."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=self.group)
        message = mommy.make(
            'connectmessages.Message',
            thread=thread,
            sender=self.super_user,
            status='spam'
        )

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertIn(image1, result.context['images'])
示例#10
0
    def test_images_from_a_banned_user_are_visible_to_banned_user(self):
        """Images posted by banned members are visible to the banned member."""
        banned_user = self.create_user(is_banned=True)

        group = self.create_group()
        banned_user.add_to_group(group.pk)

        thread = self.create_thread(group=group)
        message = mommy.make('connectmessages.Message',
                             thread=thread,
                             sender=banned_user)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        self.login(banned_user)

        result = self.client.get(
            reverse('group_images', kwargs={'group_id': group.pk}))

        self.assertIn(image1, result.context['images'])
示例#11
0
def get_in_memory_image_instance(user):
    """Returns an instance of Image with an in-memory image."""
    image = Image()
    image.image = get_in_memory_image_file()
    image.user = user
    image.save()
    return image
示例#12
0
    def test_images_from_a_banned_user_are_visible_to_banned_user(self):
        """Images posted by banned members are visible to the banned member."""
        banned_user = self.create_user(is_banned=True)
        group = mommy.make(Group)
        banned_user.add_to_group(group.pk)
        self.user2.add_to_group(group.pk)

        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=group)
        message = mommy.make('connectmessages.Message',
                             thread=thread,
                             sender=banned_user)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        client = Client()
        client.post(reverse('login'), {
            'username': banned_user.email,
            'password': '******'
        })
        result = client.get(
            reverse('group_images', kwargs={'group_id': group.pk}))
        self.assertIn(image1, result.context['images'])
示例#13
0
    def test_no_images_from_banned_users(self):
        """Test that images posted by banned users are not visible."""
        banned_user = mommy.make('accounts.User', is_banned=True)
        group = mommy.make(Group)
        banned_user.add_to_group(group.pk)
        self.user2.add_to_group(group.pk)

        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=group)
        message = mommy.make(
            'connectmessages.Message', thread=thread, sender=banned_user)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(
            reverse('group_images', kwargs={'group_id': group.pk}))
        self.assertNotIn(image1, result.context['images'])
示例#14
0
    def test_with_user_non_group_message(self):
        """Images posted in direct messages shouldn't be returned."""
        # Create a new thread and message
        thread = mommy.make(
            'connectmessages.Thread', group=None, thread_type='direct')
        message = mommy.make(
            'connectmessages.Message',
            thread=thread,
            sender=self.normal_user,
            status='spam'
        )

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertNotIn(image1, result.context['images'])
示例#15
0
 def get_image(self, filename):
     """Returns the specified image."""
     path = os.path.join(self.path, filename)
     image = Image()
     image.image = File(open(path))
     image.user = self.create_user()
     image.save(process=False)
     return image
示例#16
0
    def setUp(self):
        """Setup the GroupImagesViewTest TestCase"""
        super(GroupImagesViewTest, self).setUp()
        path = os.path.dirname(os.path.abspath(__file__))
        self.smallfile = path + '/200x200.gif'

        self.message1img = Image()
        self.message1img.user = self.message1.sender
        self.message1img.image = File(open(self.smallfile))
        self.message1img.save()
        self.message1.images.add(self.message1img)

        self.message3img = Image()
        self.message3img.user = self.message3.sender
        self.message3img.image = File(open(self.smallfile))
        self.message3img.save()
        self.message3.images.add(self.message3img)

        self.client2 = Client()
        self.client2.post(reverse('login'), {
            'username': '******',
            'password': '******'
        })
示例#17
0
    def test_with_user_current_user_is_banned(self):
        """Images from banned users should be visible to the banned user.."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=self.group)
        message = mommy.make(
            'connectmessages.Message', thread=thread, sender=self.banned_user)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        client = Client()
        client.post(
            reverse('login'),
            {'username': self.banned_user.email, 'password': '******'}
        )

        result = client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertIn(image1, result.context['images'])
示例#18
0
    def test_with_user_no_images_from_banned_users(self):
        """Images from banned users shouldn't be present."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=self.group)
        message = mommy.make(
            'connectmessages.Message', thread=thread, sender=self.banned_user)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertNotIn(image1, result.context['images'])
示例#19
0
    def test_moderated_messages_properly_appear(self):
        """
        Test that messages appear differently to different users
        depending on the message's moderation status
        """

        # Create a new group
        group = mommy.make(Group)
        self.user1.add_to_group(group.pk)
        self.user2.add_to_group(group.pk)

        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=group)
        message = mommy.make('connectmessages.Message',
                             thread=thread,
                             sender=self.user1)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        # Test the visibility of an image when the message has not yet been
        # approved by a group moderator
        message.status = 'pending'
        message.save()
        sender_response, receiver_response = self.request_multiple_users(group)
        self.assertContains(sender_response, image1.get_thumbnail)
        self.assertNotContains(receiver_response, image1.get_thumbnail)

        # Test the visibility when the message has been approved
        message.status = 'approved'
        message.save()
        sender_response, receiver_response = self.request_multiple_users(group)
        self.assertContains(sender_response, image1.get_thumbnail)
        self.assertContains(receiver_response, image1.get_thumbnail)

        # As we want spammers to think their content was approved, test when
        # a message has been marked as spam
        message.status = 'spam'
        message.save()
        sender_response, receiver_response = self.request_multiple_users(group)
        self.assertContains(sender_response, image1.get_thumbnail)
        self.assertNotContains(receiver_response, image1.get_thumbnail)
示例#20
0
    def test_with_user(self):
        """Should return images attached to approved messages."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=self.group)
        message = mommy.make('connectmessages.Message',
                             thread=thread,
                             sender=self.normal_user,
                             status='approved')

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertIn(image1, result.context['images'])
示例#21
0
    def test_with_user_message_not_approved_user_is_sender(self):
        """Images that are not approved should be returned to the sender."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=self.group)
        message = mommy.make('connectmessages.Message',
                             thread=thread,
                             sender=self.super_user,
                             status='spam')

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertIn(image1, result.context['images'])
示例#22
0
    def test_with_user_non_group_message(self):
        """Images posted in direct messages shouldn't be returned."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread',
                            group=None,
                            thread_type='direct')
        message = mommy.make('connectmessages.Message',
                             thread=thread,
                             sender=self.normal_user,
                             status='spam')

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertNotIn(image1, result.context['images'])
示例#23
0
    def test_with_user_current_user_is_banned(self):
        """Images from banned users should be visible to the banned user.."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=self.group)
        message = mommy.make(
            'connectmessages.Message', thread=thread, sender=self.banned_user)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        client = Client()
        client.post(
            reverse('account_login'),
            {'login': self.banned_user.email, 'password': '******'}
        )

        result = client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertIn(image1, result.context['images'])
示例#24
0
    def test_no_images_from_banned_users(self):
        """Test that images posted by banned users are not visible."""
        banned_user = mommy.make('accounts.User', is_banned=True)
        group = mommy.make(Group)
        banned_user.add_to_group(group.pk)
        self.user2.add_to_group(group.pk)

        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=group)
        message = mommy.make('connectmessages.Message',
                             thread=thread,
                             sender=banned_user)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(
            reverse('group_images', kwargs={'group_id': group.pk}))
        self.assertNotIn(image1, result.context['images'])
示例#25
0
class GroupImagesViewTest(ConnectTestMixin, ConnectMessageTestCase):
    """Tests for GroupImagesView."""
    def setUp(self):
        """Setup the GroupImagesViewTest TestCase"""
        super(GroupImagesViewTest, self).setUp()
        path = os.path.dirname(os.path.abspath(__file__))
        self.smallfile = path + '/200x200.gif'

        self.message1img = Image()
        self.message1img.user = self.message1.sender
        self.message1img.image = File(open(self.smallfile))
        self.message1img.save()
        self.message1.images.add(self.message1img)

        self.message3img = Image()
        self.message3img.user = self.message3.sender
        self.message3img.image = File(open(self.smallfile))
        self.message3img.save()
        self.message3.images.add(self.message3img)

        self.client2 = Client()
        self.client2.post(
            reverse('login'),
            {
                'username': '******',
                'password': '******'
            })

    def request_multiple_users(self, group):
        """Requests group images as two different users."""
        user1_response = self.client.get(
            reverse('group_images', kwargs={'group_id': group.pk}))
        user2_response = self.client2.get(
            reverse('group_images', kwargs={'group_id': group.pk}))
        return user1_response, user2_response

    def test_only_images_posted_to_group_available(self):
        """Only images posted to a group should be in the group gallery."""
        response = self.client.get(
            reverse('group_images', kwargs={'group_id': self.group1.pk}))
        self.assertContains(response, self.message1img.get_thumbnail)
        self.assertContains(
            response,
            reverse('image', kwargs={'image_uuid': self.message1img.uuid})
        )
        self.assertNotContains(response, self.message3img.get_thumbnail)
        self.assertNotContains(
            response,
            reverse('image', kwargs={'image_uuid': self.message3img.uuid})
        )

    def test_moderated_messages_properly_appear(self):
        """
        Test that messages appear differently to different users
        depending on the message's moderation status
        """

        # Create a new group
        group = mommy.make(Group)
        self.user1.add_to_group(group.pk)
        self.user2.add_to_group(group.pk)

        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=group)
        message = mommy.make(
            'connectmessages.Message', thread=thread, sender=self.user1)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        # Test the visibility of an image when the message has not yet been
        # approved by a group moderator
        message.status = 'pending'
        message.save()
        sender_response, receiver_response = self.request_multiple_users(group)
        self.assertContains(sender_response, image1.get_thumbnail)
        self.assertNotContains(receiver_response, image1.get_thumbnail)

        # Test the visibility when the message has been approved
        message.status = 'approved'
        message.save()
        sender_response, receiver_response = self.request_multiple_users(group)
        self.assertContains(sender_response, image1.get_thumbnail)
        self.assertContains(receiver_response, image1.get_thumbnail)

        # As we want spammers to think their content was approved, test when
        # a message has been marked as spam
        message.status = 'spam'
        message.save()
        sender_response, receiver_response = self.request_multiple_users(group)
        self.assertContains(sender_response, image1.get_thumbnail)
        self.assertNotContains(receiver_response, image1.get_thumbnail)

    def test_no_images_from_banned_users(self):
        """Test that images posted by banned users are not visible."""
        banned_user = mommy.make('accounts.User', is_banned=True)
        group = mommy.make(Group)
        banned_user.add_to_group(group.pk)
        self.user2.add_to_group(group.pk)

        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=group)
        message = mommy.make(
            'connectmessages.Message', thread=thread, sender=banned_user)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(
            reverse('group_images', kwargs={'group_id': group.pk}))
        self.assertNotIn(image1, result.context['images'])

    def test_images_from_a_banned_user_are_visible_to_banned_user(self):
        """Images posted by banned members are visible to the banned member."""
        banned_user = self.create_user(is_banned=True)
        group = mommy.make(Group)
        banned_user.add_to_group(group.pk)
        self.user2.add_to_group(group.pk)

        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=group)
        message = mommy.make(
            'connectmessages.Message', thread=thread, sender=banned_user)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        client = Client()
        client.post(
            reverse('login'),
            {'username': banned_user.email, 'password': '******'}
        )
        result = client.get(
            reverse('group_images', kwargs={'group_id': group.pk}))
        self.assertIn(image1, result.context['images'])
示例#26
0
class ImagePopularityManagerTest(ConnectTestMixin, TestCase):
    """Tests for the Image Popularity manager"""
    def setUp(self):
        """Setup for image popularity manager tests"""
        self.banned_user = self.create_user(is_banned=True, is_superuser=True)
        self.super_user = self.create_superuser()
        self.normal_user = self.create_user()
        self.group = mommy.make('groups.Group')
        self.banned_user.add_to_group(self.group.pk)
        self.super_user.add_to_group(self.group.pk)
        self.normal_user.add_to_group(self.group.pk)

        self.client.login(username=self.super_user.email, password='******')

        path = os.path.dirname(os.path.abspath(__file__))
        self.largefile = path + '/1000x500.png'
        self.smallfile = path + '/200x200.png'

        self.largeimage = Image()
        self.largeimage.image = File(open(self.largefile))
        self.largeimage.user = self.super_user
        self.largeimage.save()

        self.smallimage = Image()
        self.smallimage.image = File(open(self.smallfile))
        self.smallimage.user = self.super_user
        self.smallimage.save()

    def test_with_user(self):
        """Should return images attached to approved messages."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=self.group)
        message = mommy.make('connectmessages.Message',
                             thread=thread,
                             sender=self.normal_user,
                             status='approved')

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertIn(image1, result.context['images'])

    def test_with_user_non_group_message(self):
        """Images posted in direct messages shouldn't be returned."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread',
                            group=None,
                            thread_type='direct')
        message = mommy.make('connectmessages.Message',
                             thread=thread,
                             sender=self.normal_user,
                             status='spam')

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertNotIn(image1, result.context['images'])

    def test_with_user_message_not_approved(self):
        """Images that are not approved should not be returned."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=self.group)
        message = mommy.make('connectmessages.Message',
                             thread=thread,
                             sender=self.normal_user,
                             status='spam')

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertIn(image1, result.context['images'])

    def test_with_user_message_not_approved_user_is_sender(self):
        """Images that are not approved should be returned to the sender."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=self.group)
        message = mommy.make('connectmessages.Message',
                             thread=thread,
                             sender=self.super_user,
                             status='spam')

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertIn(image1, result.context['images'])

    def test_with_user_no_images_from_banned_users(self):
        """Images from banned users shouldn't be present."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=self.group)
        message = mommy.make('connectmessages.Message',
                             thread=thread,
                             sender=self.banned_user)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertNotIn(image1, result.context['images'])

    def test_with_user_current_user_is_banned(self):
        """Images from banned users should be visible to the banned user.."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=self.group)
        message = mommy.make('connectmessages.Message',
                             thread=thread,
                             sender=self.banned_user)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        client = Client()
        client.post(reverse('login'), {
            'username': self.banned_user.email,
            'password': '******'
        })

        result = client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertIn(image1, result.context['images'])
示例#27
0
class ImagePopularityManagerTest(ConnectTestMixin, TestCase):
    """Tests for the Image Popularity manager"""
    def setUp(self):
        """Setup for image popularity manager tests"""
        self.banned_user = self.create_user(is_banned=True, is_superuser=True)
        self.super_user = self.create_superuser()
        self.normal_user = self.create_user()
        self.group = mommy.make('groups.Group')
        self.banned_user.add_to_group(self.group.pk)
        self.super_user.add_to_group(self.group.pk)
        self.normal_user.add_to_group(self.group.pk)

        self.client.login(username=self.super_user.email, password='******')

        path = os.path.dirname(os.path.abspath(__file__))
        self.largefile = path + '/1000x500.png'
        self.smallfile = path + '/200x200.png'

        self.largeimage = Image()
        self.largeimage.image = File(open(self.largefile))
        self.largeimage.user = self.super_user
        self.largeimage.save()

        self.smallimage = Image()
        self.smallimage.image = File(open(self.smallfile))
        self.smallimage.user = self.super_user
        self.smallimage.save()

    def test_with_user(self):
        """Should return images attached to approved messages."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=self.group)
        message = mommy.make(
            'connectmessages.Message',
            thread=thread,
            sender=self.normal_user,
            status='approved'
        )

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertIn(image1, result.context['images'])

    def test_with_user_non_group_message(self):
        """Images posted in direct messages shouldn't be returned."""
        # Create a new thread and message
        thread = mommy.make(
            'connectmessages.Thread', group=None, thread_type='direct')
        message = mommy.make(
            'connectmessages.Message',
            thread=thread,
            sender=self.normal_user,
            status='spam'
        )

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertNotIn(image1, result.context['images'])

    def test_with_user_message_not_approved(self):
        """Images that are not approved should not be returned."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=self.group)
        message = mommy.make(
            'connectmessages.Message',
            thread=thread,
            sender=self.normal_user,
            status='spam'
        )

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertIn(image1, result.context['images'])

    def test_with_user_message_not_approved_user_is_sender(self):
        """Images that are not approved should be returned to the sender."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=self.group)
        message = mommy.make(
            'connectmessages.Message',
            thread=thread,
            sender=self.super_user,
            status='spam'
        )

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertIn(image1, result.context['images'])

    def test_with_user_no_images_from_banned_users(self):
        """Images from banned users shouldn't be present."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=self.group)
        message = mommy.make(
            'connectmessages.Message', thread=thread, sender=self.banned_user)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertNotIn(image1, result.context['images'])

    def test_with_user_current_user_is_banned(self):
        """Images from banned users should be visible to the banned user.."""
        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=self.group)
        message = mommy.make(
            'connectmessages.Message', thread=thread, sender=self.banned_user)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        client = Client()
        client.post(
            reverse('login'),
            {'username': self.banned_user.email, 'password': '******'}
        )

        result = client.get(reverse('admin_gallery'))
        self.assertEqual(result.status_code, 200)
        self.assertIn(image1, result.context['images'])
示例#28
0
class GroupImagesViewTest(ConnectTestMixin, ConnectMessageTestCase):
    """Tests for GroupImagesView."""
    def setUp(self):
        """Setup the GroupImagesViewTest TestCase"""
        super(GroupImagesViewTest, self).setUp()
        path = os.path.dirname(os.path.abspath(__file__))
        self.smallfile = path + '/200x200.gif'

        self.message1img = Image()
        self.message1img.user = self.message1.sender
        self.message1img.image = File(open(self.smallfile))
        self.message1img.save()
        self.message1.images.add(self.message1img)

        self.message3img = Image()
        self.message3img.user = self.message3.sender
        self.message3img.image = File(open(self.smallfile))
        self.message3img.save()
        self.message3.images.add(self.message3img)

        self.client2 = Client()
        self.client2.post(reverse('login'), {
            'username': '******',
            'password': '******'
        })

    def request_multiple_users(self, group):
        """Requests group images as two different users."""
        user1_response = self.client.get(
            reverse('group_images', kwargs={'group_id': group.pk}))
        user2_response = self.client2.get(
            reverse('group_images', kwargs={'group_id': group.pk}))
        return user1_response, user2_response

    def test_only_images_posted_to_group_available(self):
        """Only images posted to a group should be in the group gallery."""
        response = self.client.get(
            reverse('group_images', kwargs={'group_id': self.group1.pk}))
        self.assertContains(response, self.message1img.get_thumbnail)
        self.assertContains(
            response,
            reverse('image', kwargs={'image_uuid': self.message1img.uuid}))
        self.assertNotContains(response, self.message3img.get_thumbnail)
        self.assertNotContains(
            response,
            reverse('image', kwargs={'image_uuid': self.message3img.uuid}))

    def test_moderated_messages_properly_appear(self):
        """
        Test that messages appear differently to different users
        depending on the message's moderation status
        """

        # Create a new group
        group = mommy.make(Group)
        self.user1.add_to_group(group.pk)
        self.user2.add_to_group(group.pk)

        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=group)
        message = mommy.make('connectmessages.Message',
                             thread=thread,
                             sender=self.user1)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        # Test the visibility of an image when the message has not yet been
        # approved by a group moderator
        message.status = 'pending'
        message.save()
        sender_response, receiver_response = self.request_multiple_users(group)
        self.assertContains(sender_response, image1.get_thumbnail)
        self.assertNotContains(receiver_response, image1.get_thumbnail)

        # Test the visibility when the message has been approved
        message.status = 'approved'
        message.save()
        sender_response, receiver_response = self.request_multiple_users(group)
        self.assertContains(sender_response, image1.get_thumbnail)
        self.assertContains(receiver_response, image1.get_thumbnail)

        # As we want spammers to think their content was approved, test when
        # a message has been marked as spam
        message.status = 'spam'
        message.save()
        sender_response, receiver_response = self.request_multiple_users(group)
        self.assertContains(sender_response, image1.get_thumbnail)
        self.assertNotContains(receiver_response, image1.get_thumbnail)

    def test_no_images_from_banned_users(self):
        """Test that images posted by banned users are not visible."""
        banned_user = mommy.make('accounts.User', is_banned=True)
        group = mommy.make(Group)
        banned_user.add_to_group(group.pk)
        self.user2.add_to_group(group.pk)

        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=group)
        message = mommy.make('connectmessages.Message',
                             thread=thread,
                             sender=banned_user)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        result = self.client.get(
            reverse('group_images', kwargs={'group_id': group.pk}))
        self.assertNotIn(image1, result.context['images'])

    def test_images_from_a_banned_user_are_visible_to_banned_user(self):
        """Images posted by banned members are visible to the banned member."""
        banned_user = self.create_user(is_banned=True)
        group = mommy.make(Group)
        banned_user.add_to_group(group.pk)
        self.user2.add_to_group(group.pk)

        # Create a new thread and message
        thread = mommy.make('connectmessages.Thread', group=group)
        message = mommy.make('connectmessages.Message',
                             thread=thread,
                             sender=banned_user)

        # Create and attach a new image
        image1 = Image()
        image1.user = message.sender
        image1.image = File(open(self.smallfile))
        image1.save()
        message.images.add(image1)

        client = Client()
        client.post(reverse('login'), {
            'username': banned_user.email,
            'password': '******'
        })
        result = client.get(
            reverse('group_images', kwargs={'group_id': group.pk}))
        self.assertIn(image1, result.context['images'])