test_avatarserver_views.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. from django.conf import settings
  2. from django.contrib.auth import get_user_model
  3. from django.test import TestCase
  4. from django.urls import reverse
  5. from ..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', kwargs={
  13. 'pk': test_user.pk,
  14. 'hash': test_user.avatar_hash,
  15. 'size': 150,
  16. })
  17. response = self.client.get(avatar_url)
  18. self.assertEqual(response.status_code, 200)
  19. self.assertEqual(response['Content-Type'], 'image/png')
  20. def test_deleted_user_avatar_serving(self):
  21. """avatar server handles deleted user avatar requests"""
  22. avatar_url = reverse('misago:user-avatar', kwargs={
  23. 'pk': 12345,
  24. 'hash': '12356af',
  25. 'size': 150,
  26. })
  27. response = self.client.get(avatar_url)
  28. self.assertEqual(response.status_code, 200)
  29. self.assertEqual(response['Content-Type'], 'image/png')
  30. def test_blank_avatar_serving(self):
  31. """avatar server handles blank avatar requests"""
  32. response = self.client.get(reverse('misago:blank-avatar', kwargs={
  33. 'size': 150,
  34. }))
  35. self.assertEqual(response.status_code, 200)
  36. self.assertEqual(response['Content-Type'], 'image/png')
  37. class CleanSizeTests(TestCase):
  38. def test_size_too_big(self):
  39. """clean_size returns max for too big size"""
  40. max_size = max(settings.MISAGO_AVATARS_SIZES)
  41. too_big = max_size * 2
  42. self.assertEqual(clean_size(too_big), max_size)
  43. def test_size_too_small(self):
  44. """clean_size returns min for too small size"""
  45. min_size = min(settings.MISAGO_AVATARS_SIZES)
  46. too_small = min_size / 2
  47. self.assertEqual(clean_size(too_small), min_size)
  48. def test_mid_sizes(self):
  49. """clean_size returns approximates for little invalid sizes"""
  50. for size in settings.MISAGO_AVATARS_SIZES:
  51. self.assertEqual(clean_size(size - 1), size)
  52. def test_valid_sizes(self):
  53. """clean_size returns valid sizes untouched"""
  54. for size in settings.MISAGO_AVATARS_SIZES:
  55. self.assertEqual(clean_size(size), size)