test_avatarserver_views.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. from django.conf import settings
  2. from django.contrib.auth import get_user_model
  3. from django.core.urlresolvers import reverse
  4. from django.test import TestCase
  5. from misago.users.views.avatarserver import clean_size
  6. class AvatarServerTests(TestCase):
  7. def test_user_avatar_serving(self):
  8. """avatar server handles user avatar requests"""
  9. User = get_user_model()
  10. test_user = User.objects.create_user('Bob', 'bob@bob.com', 'pass123',
  11. set_default_avatar=True)
  12. avatar_url = reverse('misago:user_avatar',
  13. kwargs={'user_id': test_user.pk, 'size': 150})
  14. response = self.client.get(avatar_url)
  15. self.assertEqual(response.status_code, 200)
  16. self.assertEqual(response['Content-Type'], 'image/png')
  17. def test_deleted_user_avatar_serving(self):
  18. """avatar server handles deleted user avatar requests"""
  19. avatar_url = reverse('misago:user_avatar',
  20. kwargs={'user_id': 123, 'size': 150})
  21. response = self.client.get(avatar_url)
  22. self.assertEqual(response.status_code, 200)
  23. self.assertEqual(response['Content-Type'], 'image/png')
  24. def test_blank_avatar_serving(self):
  25. """avatar server handles blank avatar requests"""
  26. response = self.client.get(reverse('misago:blank_avatar',
  27. kwargs={'size': 150}))
  28. self.assertEqual(response.status_code, 200)
  29. self.assertEqual(response['Content-Type'], 'image/png')
  30. class CleanSizeTests(TestCase):
  31. def test_size_too_big(self):
  32. """clean_size returns max for too big size"""
  33. max_size = max(settings.MISAGO_AVATARS_SIZES)
  34. too_big = max_size * 2
  35. self.assertEqual(clean_size(too_big), max_size)
  36. def test_size_too_small(self):
  37. """clean_size returns min for too small size"""
  38. min_size = min(settings.MISAGO_AVATARS_SIZES)
  39. too_small = min_size / 2
  40. self.assertEqual(clean_size(too_small), min_size)
  41. def test_mid_sizes(self):
  42. """clean_size returns approximates for little invalid sizes"""
  43. for size in settings.MISAGO_AVATARS_SIZES:
  44. self.assertEqual(clean_size(size - 1), size)
  45. def test_valid_sizes(self):
  46. """clean_size returns valid sizes untouched"""
  47. for size in settings.MISAGO_AVATARS_SIZES:
  48. self.assertEqual(clean_size(size), size)