test_avatarserver_views.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. {
  11. 'size': 200,
  12. 'url': '/media/avatars/avatar-200.png',
  13. },
  14. {
  15. 'size': 100,
  16. 'url': '/media/avatars/avatar-100.png',
  17. },
  18. {
  19. 'size': 50,
  20. 'url': '/media/avatars/avatar-50.png',
  21. },
  22. ]
  23. self.user.save()
  24. def test_get_user_avatar_exact_size(self):
  25. """avatar server resolved valid avatar url for user"""
  26. avatar_url = reverse(
  27. 'misago:user-avatar',
  28. kwargs={
  29. 'pk': self.user.pk,
  30. 'size': 100,
  31. },
  32. )
  33. response = self.client.get(avatar_url)
  34. self.assertEqual(response.status_code, 302)
  35. self.assertEqual(response['location'], self.user.avatars[1]['url'])
  36. def test_get_user_avatar_inexact_size(self):
  37. """avatar server resolved valid avatar fallback for user"""
  38. avatar_url = reverse(
  39. 'misago:user-avatar',
  40. kwargs={
  41. 'pk': self.user.pk,
  42. 'size': 150,
  43. },
  44. )
  45. response = self.client.get(avatar_url)
  46. self.assertEqual(response.status_code, 302)
  47. self.assertEqual(response['location'], self.user.avatars[0]['url'])
  48. def test_get_notfound_user_avatar(self):
  49. """avatar server handles deleted user avatar requests"""
  50. avatar_url = reverse(
  51. 'misago:user-avatar',
  52. kwargs={
  53. 'pk': self.user.pk + 1,
  54. 'size': 150,
  55. },
  56. )
  57. response = self.client.get(avatar_url)
  58. self.assertEqual(response.status_code, 302)
  59. self.assertTrue(response['location'].endswith(settings.MISAGO_BLANK_AVATAR))
  60. def test_blank_avatar_serving(self):
  61. """avatar server handles blank avatar requests"""
  62. response = self.client.get(reverse('misago:blank-avatar'))
  63. self.assertEqual(response.status_code, 302)
  64. self.assertTrue(response['location'].endswith(settings.MISAGO_BLANK_AVATAR))