您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

test_auth.py 2.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import unittest
  2. from django.contrib.auth import authenticate
  3. from django.core import mail
  4. from django.test import TestCase
  5. from oscar.core.compat import get_user_model
  6. User = get_user_model()
  7. class TestEmailAuthBackend(TestCase):
  8. def test_authenticates_multiple_users(self):
  9. password = "lookmanohands"
  10. users = [
  11. User.objects.create_user(email, email, password=password)
  12. for email in ["user1@example.com", "user2@example.com"]
  13. ]
  14. for created_user in users:
  15. user = authenticate(username=created_user.email, password=password)
  16. self.assertEqual(user, created_user)
  17. def test_authenticates_different_email_spelling(self):
  18. email = password = "person@example.com"
  19. created_user = User.objects.create_user("user1", email, password=password)
  20. for email_variation in [
  21. "Person@example.com",
  22. "Person@EXAMPLE.COM",
  23. "person@Example.com",
  24. ]:
  25. user = authenticate(username=email_variation, password=password)
  26. self.assertEqual(user, created_user)
  27. # Skip these tests for now as they only make sense when there isn't a unique
  28. # index on the user class. The test suite currently uses a custom model that
  29. # *does* have a unique index on email. When I figure out how to swap the user
  30. # model per test, we can re-enable this testcase.
  31. @unittest.skip
  32. class TestEmailAuthBackendWhenUsersShareAnEmail(TestCase):
  33. def test_authenticates_when_passwords_are_different(self):
  34. # Create two users with the same email address
  35. email = "person@example.com"
  36. for username in ["user1", "user2"]:
  37. User.objects.create_user(username, email, password=username)
  38. user = authenticate(username=email, password="user1")
  39. self.assertTrue(user is not None)
  40. def test_rejects_when_passwords_match(self):
  41. # Create two users with the same email address
  42. email = "person@example.com"
  43. for username in ["user1", "user2"]:
  44. User.objects.create_user(username, email, password="password")
  45. user = authenticate(username=email, password="password")
  46. self.assertTrue(user is None)
  47. def test_mails_admins_when_passwords_match(self):
  48. # Create two users with the same email address
  49. email = "person@example.com"
  50. for username in ["user1", "user2"]:
  51. User.objects.create_user(username, email, password="password")
  52. authenticate(username=email, password="password")
  53. self.assertEqual(1, len(mail.outbox))