from django.conf import settings from django.contrib.auth import get_user_model from django.core.urlresolvers import reverse from django.test import TestCase from misago.users.views.avatarserver import clean_size class AvatarServerTests(TestCase): def test_user_avatar_serving(self): """avatar server handles user avatar requests""" User = get_user_model() test_user = User.objects.create_user('Bob', 'bob@bob.com', 'pass123', set_default_avatar=True) avatar_url = reverse('misago:user_avatar', kwargs={'user_id': test_user.pk, 'size': 150}) response = self.client.get(avatar_url) self.assertEqual(response.status_code, 200) self.assertEqual(response['Content-Type'], 'image/png') def test_deleted_user_avatar_serving(self): """avatar server handles deleted user avatar requests""" avatar_url = reverse('misago:user_avatar', kwargs={'user_id': 123, 'size': 150}) response = self.client.get(avatar_url) self.assertEqual(response.status_code, 200) self.assertEqual(response['Content-Type'], 'image/png') def test_blank_avatar_serving(self): """avatar server handles blank avatar requests""" response = self.client.get(reverse('misago:blank_avatar', kwargs={'size': 150})) self.assertEqual(response.status_code, 200) self.assertEqual(response['Content-Type'], 'image/png') class CleanSizeTests(TestCase): def test_size_too_big(self): """clean_size returns max for too big size""" max_size = max(settings.MISAGO_AVATARS_SIZES) too_big = max_size * 2 self.assertEqual(clean_size(too_big), max_size) def test_size_too_small(self): """clean_size returns min for too small size""" min_size = min(settings.MISAGO_AVATARS_SIZES) too_small = min_size / 2 self.assertEqual(clean_size(too_small), min_size) def test_mid_sizes(self): """clean_size returns approximates for little invalid sizes""" for size in settings.MISAGO_AVATARS_SIZES: self.assertEqual(clean_size(size - 1), size) def test_valid_sizes(self): """clean_size returns valid sizes untouched""" for size in settings.MISAGO_AVATARS_SIZES: self.assertEqual(clean_size(size), size)