test_avatarserver_views.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. from django.contrib.auth import get_user_model
  2. from django.test import TestCase
  3. from django.urls import reverse
  4. from misago.conf import settings
  5. UserModel = get_user_model()
  6. class AvatarServerTests(TestCase):
  7. def setUp(self):
  8. self.user = UserModel.objects.create_user("Bob", "bob@bob.com", "Pass123")
  9. self.user.avatars = [
  10. {"size": 200, "url": "/media/avatars/avatar-200.png"},
  11. {"size": 100, "url": "/media/avatars/avatar-100.png"},
  12. {"size": 50, "url": "/media/avatars/avatar-50.png"},
  13. ]
  14. self.user.save()
  15. def test_get_user_avatar_exact_size(self):
  16. """avatar server resolved valid avatar url for user"""
  17. avatar_url = reverse(
  18. "misago:user-avatar", kwargs={"pk": self.user.pk, "size": 100}
  19. )
  20. response = self.client.get(avatar_url)
  21. self.assertEqual(response.status_code, 302)
  22. self.assertEqual(response["location"], self.user.avatars[1]["url"])
  23. def test_get_user_avatar_inexact_size(self):
  24. """avatar server resolved valid avatar fallback for user"""
  25. avatar_url = reverse(
  26. "misago:user-avatar", kwargs={"pk": self.user.pk, "size": 150}
  27. )
  28. response = self.client.get(avatar_url)
  29. self.assertEqual(response.status_code, 302)
  30. self.assertEqual(response["location"], self.user.avatars[0]["url"])
  31. def test_get_notfound_user_avatar(self):
  32. """avatar server handles deleted user avatar requests"""
  33. avatar_url = reverse(
  34. "misago:user-avatar", kwargs={"pk": self.user.pk + 1, "size": 150}
  35. )
  36. response = self.client.get(avatar_url)
  37. self.assertEqual(response.status_code, 302)
  38. self.assertTrue(response["location"].endswith(settings.MISAGO_BLANK_AVATAR))
  39. def test_blank_avatar_serving(self):
  40. """avatar server handles blank avatar requests"""
  41. response = self.client.get(reverse("misago:blank-avatar"))
  42. self.assertEqual(response.status_code, 302)
  43. self.assertTrue(response["location"].endswith(settings.MISAGO_BLANK_AVATAR))