from django.contrib.auth import get_user_model from django.test import TestCase from django.urls import reverse from misago.conf import settings UserModel = get_user_model() class AvatarServerTests(TestCase): def setUp(self): self.user = UserModel.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))