test_user_getters.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import pytest
  2. from django.contrib.auth import get_user_model
  3. User = get_user_model()
  4. def test_get_user_by_username(db):
  5. user = User.objects.create_user("User", "test@example.com")
  6. assert User.objects.get_by_username("User") == user
  7. def test_getting_user_by_username_is_case_insensitive(db):
  8. user = User.objects.create_user("User", "test@example.com")
  9. assert User.objects.get_by_username("uSeR") == user
  10. def test_getting_user_by_username_raises_does_not_exist_for_no_result(db):
  11. with pytest.raises(User.DoesNotExist):
  12. User.objects.get_by_username("user")
  13. def test_getting_user_by_username_supports_diacritics(db):
  14. with pytest.raises(User.DoesNotExist):
  15. User.objects.get_by_username("łóć")
  16. def test_getting_user_by_username_is_not_doing_fuzzy_matching(db):
  17. user = User.objects.create_user("User", "test@example.com")
  18. with pytest.raises(User.DoesNotExist):
  19. User.objects.get_by_username("usar")
  20. def test_get_user_by_email(db):
  21. user = User.objects.create_user("User", "test@example.com")
  22. assert User.objects.get_by_email("test@example.com") == user
  23. def test_getting_user_by_email_is_case_insensitive(db):
  24. user = User.objects.create_user("User", "test@example.com")
  25. assert User.objects.get_by_email("tEsT@eXaMplE.com") == user
  26. def test_getting_user_by_email_supports_diacritics(db):
  27. user = User.objects.create_user("User", "łóć@łexĄmple.com")
  28. assert User.objects.get_by_email("łÓć@ŁexĄMple.com") == user
  29. def test_getting_user_by_email_raises_does_not_exist_for_no_result(db):
  30. with pytest.raises(User.DoesNotExist):
  31. User.objects.get_by_email("test@example.com")
  32. def test_get_user_by_username_using_combined_getter(db):
  33. user = User.objects.create_user("User", "test@example.com")
  34. assert User.objects.get_by_username_or_email("user") == user
  35. def test_get_user_by_email_using_combined_getter(db):
  36. user = User.objects.create_user("User", "test@example.com")
  37. assert User.objects.get_by_username_or_email("test@example.com") == user
  38. def test_combined_getter_handles_username_slug_and_email_collision(db):
  39. email_match = User.objects.create_user("Bob", "test@test.test")
  40. slug_match = User.objects.create_user("TestTestTest", "other@test.com")
  41. assert User.objects.get_by_username_or_email("test@test.test") == email_match
  42. assert User.objects.get_by_username_or_email("TestTestTest") == slug_match
  43. def test_combined_getter_raises_does_not_exist_for_no_result(db):
  44. with pytest.raises(User.DoesNotExist):
  45. User.objects.get_by_username_or_email("User")