Example #1
0
 def setUp(self):
     """Setup the images test"""
     # Make a popular image and an unpopular image
     self.superuser = self.create_superuser()
     self.popular_image = get_in_memory_image_instance(user=self.superuser)
     self.popular_image.view_count = 10000
     self.popular_image.save()
     self.unpopular_image = get_in_memory_image_instance(user=self.superuser)
Example #2
0
 def setUp(self):
     """Setup the images test"""
     # Make a popular image and an unpopular image
     self.superuser = self.create_superuser()
     self.popular_image = get_in_memory_image_instance(user=self.superuser)
     self.popular_image.view_count = 10000
     self.popular_image.save()
     self.unpopular_image = get_in_memory_image_instance(
         user=self.superuser)
Example #3
0
 def test_non_display_image_view_does_not_increment_view_count(self):
     """Viewing an alternate size (thumbnail) should not increment count."""
     image = get_in_memory_image_instance(self.user)
     response = image_view(self.request, image.uuid, image_type='thumbnail')
     self.assertEqual(response.url, image.get_thumbnail.url)
     small_image = Image.objects.get(pk=image.pk)
     self.assertEqual(small_image.view_count, 0)
Example #4
0
 def test_admin_gallery_does_not_have_direct_message_images(self):
     """admin gallery should not include images from direct messages."""
     image = get_in_memory_image_instance(self.user)
     direct_message = self.create_thread(direct=True)
     direct_message.first_message.images.add(image)
     response = self.client.get(reverse('admin_gallery'))
     self.assertNotContains(response, image.uuid)
Example #5
0
 def test_non_display_image_view_does_not_increment_view_count(self):
     """Viewing an alternate size (thumbnail) should not increment count."""
     image = get_in_memory_image_instance(self.user)
     response = image_view(self.request, image.uuid, image_type='thumbnail')
     self.assertEqual(response.url, image.get_thumbnail.url)
     small_image = Image.objects.get(pk=image.pk)
     self.assertEqual(small_image.view_count, 0)
Example #6
0
 def test_admin_gallery_does_not_have_direct_message_images(self):
     """admin gallery should not include images from direct messages."""
     image = get_in_memory_image_instance(self.user)
     direct_message = self.create_thread(direct=True)
     direct_message.first_message.images.add(image)
     response = self.client.get(reverse('admin_gallery'))
     self.assertNotContains(response, image.uuid)
Example #7
0
 def test_filename_too_long(self):
     """If the filename is too long, it should trigger an error."""
     user = self.create_user()
     image = get_in_memory_image_instance(user)
     image.image.name = (
         'fjkdslajgdkslajgdlskajfdlskajfldsjafldjsalfkdsjalfkdjsalkfjdsalkjf'
         'dlsakfjdslajfdlksajfdlsajfdlsajfdkslajfdlksajjflkdjlfkjdsklfjaldkj'
         'aflkdjsafkldsjaflkdsjaflkdsjaflkdjsalkfdjsalkfdjsalkfjdsalkfdjsalk'
         'fdjsalkfjdslkajfdlsajfdlasjfdsafdlksajflkdsjalkfjdsalkfjdslakjfsal'
         'fjdsalkfjdslafjdslkajfldsjalfjdslkafjdksalfkdjsalkfjdsa'
     )
     image.save()
     group = maker.make('groups.Group')
     form = ResourceForm(
         data={'name': 'fjkdsl', 'groups': [group.pk]},
         files={
             'attachment': SimpleUploadedFile(
                 image.image.name, image.image.read())
         }
     )
     self.assertFalse(form.is_valid())
     self.assertEqual(
         form.errors,
         {'attachment': [u'Filename cannot exceed 200 characters.']}
     )
Example #8
0
 def test_my_images(self):
     """my_images should return list of images a user has uploaded."""
     image1 = get_in_memory_image_instance(self.user)
     image2 = get_in_memory_image_instance(self.user)
     response = self.client.get(reverse('my_images'))
     content = json.loads(response.content)
     expected = [
         {u'thumb': image1.get_thumbnail.url,
          u'image': image1.get_absolute_url(),
          u'id': image1.pk},
         {u'thumb': image2.get_thumbnail.url,
          u'image': image2.get_absolute_url(),
          u'id': image2.pk}
     ]
     self.assertEqual(len(content), len(expected))
     for image in content:
         self.assertIn(image, expected)
Example #9
0
 def test_image_view_redirects_to_image_url(self):
     """image_view should redirect to the actual image url."""
     image = get_in_memory_image_instance(self.user)
     response = self.client.get(
         reverse('image', kwargs={'image_uuid': image.uuid}))
     # assertRedirects doesn't work here because there's no staticfiles
     # in the test client
     self.assertEqual(response._headers['location'][1],
                      'http://testserver%s' % image.image.url)
Example #10
0
 def test_promote_image_view(self):
     """promote image view should return json with status and uuid."""
     image = get_in_memory_image_instance(self.user)
     self.assertFalse(image.promoted)
     response = self.client.post(
         reverse('promote_image'), {'uuid': image.uuid})
     result = json.loads(response.content)
     image = Image.objects.get(pk=image.pk)
     self.assertTrue(image.promoted)
     self.assertEqual(result['status'], 'success')
     self.assertEqual(result['uuid'], image.uuid)
Example #11
0
 def test_promote_image_view(self):
     """promote image view should return json with status and uuid."""
     image = get_in_memory_image_instance(self.user)
     self.assertFalse(image.promoted)
     response = self.client.post(reverse('promote_image'),
                                 {'uuid': image.uuid})
     result = json.loads(response.content)
     image = Image.objects.get(pk=image.pk)
     self.assertTrue(image.promoted)
     self.assertEqual(result['status'], 'success')
     self.assertEqual(result['uuid'], image.uuid)
Example #12
0
 def test_image_view_redirects_to_image_url(self):
     """image_view should redirect to the actual image url."""
     image = get_in_memory_image_instance(self.user)
     response = self.client.get(
         reverse('image', kwargs={'image_uuid': image.uuid}))
     # assertRedirects doesn't work here because there's no staticfiles
     # in the test client
     self.assertEqual(
         response._headers['location'][1],
         'http://testserver%s' % image.image.url
     )
Example #13
0
    def test_image_view_returns_cache_if_possible(self, mock):
        """If possible, return what's in the cache"""
        mock.get.return_value = 'http://razzmatazz.local/great.gif'
        image = get_in_memory_image_instance(self.user)
        image.uuid = 'uuid-here'
        image.save()

        response = image_view(
            self.request, image.uuid, image_type='display_image')
        self.assertEqual(response.url, 'http://razzmatazz.local/great.gif')
        mock.get.assert_called_once_with(
            'imageurlcache_display_image_uuid-here')
        display_image = Image.objects.get(pk=image.pk)
        self.assertEqual(display_image.view_count, 1)
Example #14
0
 def test_clear_image(self):
     """A user's image should be removed if clear is selected."""
     self.user.image = get_in_memory_image_instance(self.user)
     self.user.save()
     data = {
         'image-clear': True,
         'image': None,
         'timezone': 'US/Central',
         'group_notification_period': 'none',
         'email': self.user.email
     }
     response = self.client.post(
         reverse('update_user', args=(self.user.uuid, )), data)
     self.assertRedirects(
         response,
         reverse('user_details', kwargs={'user_uuid': self.user.uuid}))
     user = User.objects.get(pk=self.user.pk)
     self.assertIsNone(user.image)
Example #15
0
    def test_image_view_uses_correct_hash_key(self, mock):
        """Viewing an alternate size (thumbnail) should not increment count."""
        mock.get.return_value = None
        image = get_in_memory_image_instance(self.user)
        image.uuid = 'uuid-here'
        image.save()

        response = image_view(self.request,
                              image.uuid,
                              image_type='display_image')
        self.assertEqual(response.url, image.get_display_image.url)
        mock.get.assert_called_once_with(
            'imageurlcache_display_image_uuid-here')
        mock.set.assert_called_once_with(
            'imageurlcache_display_image_uuid-here',
            image.get_display_image.url, 2700)
        display_image = Image.objects.get(pk=image.pk)
        self.assertEqual(display_image.view_count, 1)
Example #16
0
    def test_image_view_uses_correct_hash_key(self, mock):
        """Viewing an alternate size (thumbnail) should not increment count."""
        mock.get.return_value = None
        image = get_in_memory_image_instance(self.user)
        image.uuid = 'uuid-here'
        image.save()

        response = image_view(
            self.request, image.uuid, image_type='display_image')
        self.assertEqual(response.url, image.get_display_image.url)
        mock.get.assert_called_once_with(
            'imageurlcache_display_image_uuid-here')
        mock.set.assert_called_once_with(
            'imageurlcache_display_image_uuid-here',
            image.get_display_image.url,
            2700
        )
        display_image = Image.objects.get(pk=image.pk)
        self.assertEqual(display_image.view_count, 1)
Example #17
0
 def test_filename_too_long(self):
     """If the filename is too long, it should trigger an error."""
     user = self.create_user()
     image = get_in_memory_image_instance(user)
     image.image.name = (
         "fjkdslajgdkslajgdlskajfdlskajfldsjafldjsalfkdsjalfkdjsalkfjdsalkjf"
         "dlsakfjdslajfdlksajfdlsajfdlsajfdkslajfdlksajjflkdjlfkjdsklfjaldkj"
         "aflkdjsafkldsjaflkdsjaflkdsjaflkdjsalkfdjsalkfdjsalkfjdsalkfdjsalk"
         "fdjsalkfjdslkajfdlsajfdlasjfdsafdlksajflkdsjalkfjdsalkfjdslakjfsal"
         "fjdsalkfjdslafjdslkajfldsjalfjdslkafjdksalfkdjsalkfjdsa"
     )
     image.save()
     group = maker.make("groups.Group")
     form = ResourceForm(
         data={"name": "fjkdsl", "groups": [group.pk]},
         files={"attachment": SimpleUploadedFile(image.image.name, image.image.read())},
     )
     self.assertFalse(form.is_valid())
     self.assertEqual(form.errors, {"attachment": [u"Filename cannot exceed 200 characters."]})
Example #18
0
 def test_clear_image(self):
     """A user's image should be removed if clear is selected."""
     self.user.image = get_in_memory_image_instance(self.user)
     self.user.save()
     data = {
         'image-clear': True,
         'image': None,
         'timezone': 'US/Central',
         'group_notification_period': 'none',
         'email': self.user.email
     }
     response = self.client.post(
         reverse('update_user', args=(self.user.uuid,)), data)
     self.assertRedirects(
         response,
         reverse('user_profile'),
         target_status_code=302
     )
     user = User.objects.get(pk=self.user.pk)
     self.assertIsNone(user.image)
Example #19
0
    def test_admin_gallery_only_has_images_from_approved_messages(self):
        """Test that admin gallery only has images from approved messages"""
        # pylint: disable=unused-variable
        thread = self.create_thread()
        image = get_in_memory_image_instance(self.user)
        thread.first_message.images.add(image)

        for code, name in MESSAGE_STATUSES:
            thread.first_message.status = code
            thread.first_message.save()

            view = AdminGalleryView()
            view.request = self.factory.get('/')
            view.request.user = self.user
            queryset = view.get_queryset()

            if code == 'approved':
                self.assertIn(image, queryset)
            else:
                self.assertNotIn(image, queryset, msg="Status was %s." % code)
Example #20
0
    def test_admin_gallery_only_has_images_from_approved_messages(self):
        """Test that admin gallery only has images from approved messages"""
        # pylint: disable=unused-variable
        thread = self.create_thread()
        image = get_in_memory_image_instance(self.user)
        thread.first_message.images.add(image)

        for code, name in MESSAGE_STATUSES:
            thread.first_message.status = code
            thread.first_message.save()

            view = AdminGalleryView()
            view.request = self.factory.get('/')
            view.request.user = self.user
            queryset = view.get_queryset()

            if code == 'approved':
                self.assertIn(image, queryset)
            else:
                self.assertNotIn(image, queryset, msg="Status was %s." % code)
Example #21
0
 def test_image_view_increments_view_count(self):
     """Viewing an image should increase the view count."""
     image = get_in_memory_image_instance(self.user)
     image_view(self.request, image.uuid)
     small_image = Image.objects.get(pk=image.pk)
     self.assertEqual(small_image.view_count, 1)
Example #22
0
 def test_image_view_increments_view_count(self):
     """Viewing an image should increase the view count."""
     image = get_in_memory_image_instance(self.user)
     image_view(self.request, image.uuid)
     small_image = Image.objects.get(pk=image.pk)
     self.assertEqual(small_image.view_count, 1)