|
@@ -0,0 +1,69 @@
|
|
|
+from django.conf import settings
|
|
|
+from django.contrib.auth import get_user_model
|
|
|
+from django.test import TestCase
|
|
|
+from django.urls import reverse
|
|
|
+
|
|
|
+
|
|
|
+class AvatarServerTests(TestCase):
|
|
|
+ def setUp(self):
|
|
|
+ User = get_user_model()
|
|
|
+ self.user = User.objects.create_user('Bob', 'bob@bob.com', 'Pass123')
|
|
|
+
|
|
|
+ self.user.avatars = [
|
|
|
+ {
|
|
|
+ 'size': 200,
|
|
|
+ 'url': '/media/avatars/avatar-200.png'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 'size': 100,
|
|
|
+ 'url': '/media/avatars/avatar-100.png'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 'size': 50,
|
|
|
+ 'url': '/media/avatars/avatar-50.png'
|
|
|
+ },
|
|
|
+ ]
|
|
|
+
|
|
|
+ self.user.save()
|
|
|
+
|
|
|
+ def test_get_user_avatar_exact_size(self):
|
|
|
+ """avatar server resolved valid avatar url for user"""
|
|
|
+ avatar_url = reverse('misago:user-avatar', kwargs={
|
|
|
+ 'pk': self.user.pk,
|
|
|
+ 'size': 100,
|
|
|
+ })
|
|
|
+
|
|
|
+ response = self.client.get(avatar_url)
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 302)
|
|
|
+ self.assertEqual(response['location'], self.user.avatars[1]['url'])
|
|
|
+
|
|
|
+ def test_get_user_avatar_inexact_size(self):
|
|
|
+ """avatar server resolved valid avatar fallback for user"""
|
|
|
+ avatar_url = reverse('misago:user-avatar', kwargs={
|
|
|
+ 'pk': self.user.pk,
|
|
|
+ 'size': 150,
|
|
|
+ })
|
|
|
+
|
|
|
+ response = self.client.get(avatar_url)
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 302)
|
|
|
+ self.assertEqual(response['location'], self.user.avatars[0]['url'])
|
|
|
+
|
|
|
+ def test_get_notfound_user_avatar(self):
|
|
|
+ """avatar server handles deleted user avatar requests"""
|
|
|
+ avatar_url = reverse('misago:user-avatar', kwargs={
|
|
|
+ 'pk': self.user.pk + 1,
|
|
|
+ 'size': 150,
|
|
|
+ })
|
|
|
+ response = self.client.get(avatar_url)
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 302)
|
|
|
+ self.assertTrue(response['location'].endswith(settings.MISAGO_BLANK_AVATAR))
|
|
|
+
|
|
|
+ def test_blank_avatar_serving(self):
|
|
|
+ """avatar server handles blank avatar requests"""
|
|
|
+ response = self.client.get(reverse('misago:blank-avatar'))
|
|
|
+
|
|
|
+ self.assertEqual(response.status_code, 302)
|
|
|
+ self.assertTrue(response['location'].endswith(settings.MISAGO_BLANK_AVATAR))
|