test_user_model.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. from pathlib import Path
  2. from django.test import TestCase
  3. from misago.conf import settings
  4. from misago.core.utils import slugify
  5. from misago.users.avatars import dynamic
  6. from misago.users.models import Avatar, User
  7. class UserTests(TestCase):
  8. def test_anonymize_data(self):
  9. """anonymize_data sets username and slug to one defined in settings"""
  10. user = User.objects.create_user("User", "user@example.com")
  11. user.anonymize_data()
  12. self.assertEqual(user.username, settings.MISAGO_ANONYMOUS_USERNAME)
  13. self.assertEqual(user.slug, slugify(settings.MISAGO_ANONYMOUS_USERNAME))
  14. def test_user_avatar_files_are_deleted_together_with_user(self):
  15. """account deletion for user also deletes their avatar file"""
  16. user = User.objects.create_user("User", "user@example.com")
  17. dynamic.set_avatar(user)
  18. user.save()
  19. user_avatars = []
  20. for avatar in user.avatar_set.all():
  21. avatar_path = Path(avatar.image.path)
  22. self.assertTrue(avatar_path.exists())
  23. self.assertTrue(avatar_path.is_file())
  24. user_avatars.append(avatar)
  25. self.assertNotEqual(user_avatars, [])
  26. user.delete()
  27. for removed_avatar in user_avatars:
  28. avatar_path = Path(removed_avatar.image.path)
  29. self.assertFalse(avatar_path.exists())
  30. self.assertFalse(avatar_path.is_file())
  31. with self.assertRaises(Avatar.DoesNotExist):
  32. Avatar.objects.get(pk=removed_avatar.pk)
  33. def test_set_username(self):
  34. """set_username sets username and slug on model"""
  35. user = User()
  36. user.set_username("Username")
  37. self.assertEqual(user.username, "Username")
  38. self.assertEqual(user.slug, "username")
  39. self.assertEqual(user.get_username(), "Username")
  40. self.assertEqual(user.get_full_name(), "Username")
  41. self.assertEqual(user.get_short_name(), "Username")
  42. def test_set_email(self):
  43. """set_email sets email and hash on model"""
  44. user = User()
  45. user.set_email("us3R@EXample.com")
  46. self.assertEqual(user.email, "us3R@example.com")
  47. self.assertTrue(user.email_hash)
  48. def test_mark_for_delete(self):
  49. """mark_for_delete deactivates user and sets is_deleting_account flag"""
  50. user = User.objects.create_user("User", "user@example.com")
  51. user.mark_for_delete()
  52. self.assertFalse(user.is_active)
  53. self.assertTrue(user.is_deleting_account)
  54. user_from_db = User.objects.get(pk=user.pk)
  55. self.assertFalse(user_from_db.is_active)
  56. self.assertTrue(user_from_db.is_deleting_account)
  57. def test_get_real_name(self):
  58. """get_real_name returns user-set real name or none"""
  59. user = User.objects.create_user("User", "user@example.com")
  60. self.assertIsNone(user.get_real_name())
  61. user.profile_fields["real_name"] = "User Usererson"
  62. self.assertEqual(user.get_real_name(), "User Usererson")