test_user_model.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. from pathlib import Path
  2. import pytest
  3. from ...conf import settings
  4. from ...core.utils import slugify
  5. from ..avatars import dynamic
  6. from ..datadownloads import request_user_data_download
  7. from ..models import Avatar, DataDownload, User
  8. from ..utils import hash_email
  9. def test_username_and_slug_is_anonymized(user):
  10. user.anonymize_data(anonymous_username="Deleted")
  11. assert user.username == "Deleted"
  12. assert user.slug == slugify("Deleted")
  13. def test_user_avatar_files_are_deleted_during_user_deletion(user):
  14. dynamic.set_avatar(user)
  15. user.save()
  16. user_avatars = []
  17. for avatar in user.avatar_set.all():
  18. avatar_path = Path(avatar.image.path)
  19. assert avatar_path.exists()
  20. assert avatar_path.is_file()
  21. user_avatars.append(avatar)
  22. assert user_avatars
  23. user.delete(anonymous_username="Deleted")
  24. for removed_avatar in user_avatars:
  25. avatar_path = Path(removed_avatar.image.path)
  26. assert not avatar_path.exists()
  27. assert not avatar_path.is_file()
  28. with pytest.raises(Avatar.DoesNotExist):
  29. Avatar.objects.get(pk=removed_avatar.pk)
  30. def test_username_setter_also_sets_slug():
  31. user = User()
  32. user.set_username("TestUser")
  33. assert user.username == "TestUser"
  34. assert user.slug == "testuser"
  35. def test_django_username_getters_return_username(user):
  36. assert user.get_username() == user.username
  37. assert user.get_full_name() == user.username
  38. assert user.get_short_name() == user.username
  39. def test_email_setter_normalizes_email():
  40. user = User()
  41. user.set_email("us3R@EXample.com")
  42. assert user.email == "us3R@example.com"
  43. def test_email_setter_also_sets_email_hash():
  44. user = User()
  45. user.set_email("us3R@example.com")
  46. assert user.email_hash == hash_email("us3R@example.com")
  47. def test_real_name_getter_returns_name_entered_in_profile_field(user):
  48. user.profile_fields["real_name"] = "John Doe"
  49. assert user.get_real_name() == "John Doe"
  50. def test_real_name_getter_returns_none_if_profile_field_has_no_value(user):
  51. assert user.get_real_name() is None
  52. def test_marking_user_for_deletion_deactivates_their_account_in_db(user):
  53. user.mark_for_delete()
  54. assert not user.is_active
  55. assert user.is_deleting_account
  56. user.refresh_from_db()
  57. assert not user.is_active
  58. assert user.is_deleting_account
  59. def test_user_data_downloads_are_removed_by_anonymization(user):
  60. data_download = request_user_data_download(user)
  61. user.anonymize_data(anonymous_username="Deleted")
  62. with pytest.raises(DataDownload.DoesNotExist):
  63. data_download.refresh_from_db()
  64. def test_deleting_user_also_deletes_their_data_downloads(user):
  65. data_download = request_user_data_download(user)
  66. user.delete(anonymous_username="Deleted")
  67. with pytest.raises(DataDownload.DoesNotExist):
  68. data_download.refresh_from_db()