test_user_creation.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import pytest
  2. from django.contrib.auth import get_user_model
  3. from ..models import Rank
  4. from ..utils import hash_email
  5. User = get_user_model()
  6. def test_user_is_created(db):
  7. user = User.objects.create_user("User", "test@example.com")
  8. assert user.pk
  9. assert user.joined_on
  10. def test_user_is_created_with_username_and_slug(db):
  11. user = User.objects.create_user("UserName", "test@example.com")
  12. assert user.slug == "username"
  13. def test_user_is_created_with_normalized_email_and_email_hash(db):
  14. user = User.objects.create_user("User", "test@eXamPLe.com")
  15. assert user.email == "test@example.com"
  16. assert user.email_hash == hash_email(user.email)
  17. def test_user_is_created_with_online_tracker(db):
  18. user = User.objects.create_user("User", "test@example.com")
  19. assert user.online_tracker
  20. assert user.online_tracker.last_click == user.last_login
  21. def test_user_is_created_with_useable_password(db):
  22. password = "password"
  23. user = User.objects.create_user("UserUserame", "test@example.com", password)
  24. assert user.check_password(password)
  25. def test_user_is_created_with_default_rank(db):
  26. user = User.objects.create_user("User", "test@example.com")
  27. assert user.rank == Rank.objects.get_default()
  28. def test_user_is_created_with_custom_rank(db):
  29. rank = Rank.objects.create(name="Test rank")
  30. user = User.objects.create_user("User", "test@example.com", rank=rank)
  31. assert user.rank == rank
  32. def test_newly_created_user_last_login_is_same_as_join_date(db):
  33. user = User.objects.create_user("User", "test@example.com")
  34. assert user.last_login == user.joined_on
  35. def test_user_is_created_with_authenticated_role(db):
  36. user = User.objects.create_user("User", "test@example.com")
  37. assert user.roles.get(special_role="authenticated")
  38. def test_user_is_created_with_diacritics_in_email(db):
  39. email = "łóć@łexąmple.com"
  40. user = User.objects.create_user("UserName", email)
  41. assert user.email == email
  42. def test_creating_user_without_username_raises_value_error(db):
  43. with pytest.raises(ValueError):
  44. User.objects.create_user("", "test@example.com")
  45. def test_creating_user_without_email_raises_value_error(db):
  46. with pytest.raises(ValueError):
  47. User.objects.create_user("User", "")
  48. def test_create_superuser(db):
  49. user = User.objects.create_superuser("User", "test@example.com")
  50. assert user.is_staff
  51. assert user.is_superuser
  52. def test_superuser_is_created_with_team_rank(db):
  53. user = User.objects.create_superuser("User", "test@example.com")
  54. assert "team" in str(user.rank)
  55. def test_creating_superuser_without_staff_status_raises_value_error(db):
  56. with pytest.raises(ValueError):
  57. User.objects.create_superuser("User", "test@example.com", is_staff=False)
  58. def test_creating_superuser_without_superuser_status_raises_value_error(db):
  59. with pytest.raises(ValueError):
  60. User.objects.create_superuser("User", "test@example.com", is_superuser=False)