test_validators.py 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. #-*- coding: utf-8 -*-
  2. from django.contrib.auth import get_user_model
  3. from django.core.exceptions import ValidationError
  4. from django.test import TestCase
  5. from misago.conf import settings
  6. from misago.users.models import Ban, BAN_USERNAME, BAN_EMAIL
  7. from misago.users.validators import (validate_email,
  8. validate_email_available,
  9. validate_email_banned,
  10. validate_password,
  11. validate_username,
  12. validate_username_available,
  13. validate_username_banned,
  14. validate_username_content,
  15. validate_username_length)
  16. class ValidateEmailAvailableTests(TestCase):
  17. def setUp(self):
  18. User = get_user_model()
  19. self.test_user = User.objects.create_user('EricTheFish',
  20. 'eric@test.com',
  21. 'pass123')
  22. def test_valid_email(self):
  23. """validate_email_available allows available emails"""
  24. validate_email_available('bob@boberson.com')
  25. validate_email_available(self.test_user.email, exclude=self.test_user)
  26. def test_invalid_email(self):
  27. """validate_email_available disallows unvailable emails"""
  28. with self.assertRaises(ValidationError):
  29. validate_email_available(self.test_user.email)
  30. class ValidateEmailBannedTests(TestCase):
  31. def setUp(self):
  32. Ban.objects.create(check_type=BAN_EMAIL, banned_value="ban@test.com")
  33. def test_unbanned_name(self):
  34. """unbanned email passes validation"""
  35. validate_email_banned('noban@test.com')
  36. def test_banned_name(self):
  37. """banned email fails validation"""
  38. with self.assertRaises(ValidationError):
  39. validate_email_banned('ban@test.com')
  40. class ValidateEmailTests(TestCase):
  41. def test_validate_email(self):
  42. """validate_email has no crashes"""
  43. validate_email('bob@boberson.com')
  44. with self.assertRaises(ValidationError):
  45. validate_email('*')
  46. class ValidatePasswordTests(TestCase):
  47. def test_valid_password(self):
  48. """validate_password allows valid password"""
  49. validate_password('A' * (settings.password_length_min + 1))
  50. def test_invalid_name(self):
  51. """validate_password disallows invalid password"""
  52. with self.assertRaises(ValidationError):
  53. validate_password('A' * (settings.password_length_min - 1))
  54. class ValidateUsernameTests(TestCase):
  55. def test_validate_username(self):
  56. """validate_username has no crashes"""
  57. validate_username('LeBob')
  58. with self.assertRaises(ValidationError):
  59. validate_username('*')
  60. class ValidateUsernameAvailableTests(TestCase):
  61. def setUp(self):
  62. User = get_user_model()
  63. self.test_user = User.objects.create_user('EricTheFish',
  64. 'eric@test.com',
  65. 'pass123')
  66. def test_valid_name(self):
  67. """validate_username_available allows available names"""
  68. validate_username_available('BobBoberson')
  69. validate_username_available(self.test_user.username,
  70. exclude=self.test_user)
  71. def test_invalid_name(self):
  72. """validate_username_available disallows unvailable names"""
  73. with self.assertRaises(ValidationError):
  74. validate_username_available(self.test_user.username)
  75. class ValidateUsernameBannedTests(TestCase):
  76. def setUp(self):
  77. Ban.objects.create(check_type=BAN_USERNAME, banned_value="Bob")
  78. def test_unbanned_name(self):
  79. """unbanned name passes validation"""
  80. validate_username_banned('Luke')
  81. def test_banned_name(self):
  82. """banned name fails validation"""
  83. with self.assertRaises(ValidationError):
  84. validate_username_banned('Bob')
  85. class ValidateUsernameContentTests(TestCase):
  86. def test_valid_name(self):
  87. """validate_username_content allows valid names"""
  88. validate_username_content('123')
  89. validate_username_content('Bob')
  90. validate_username_content('Bob123')
  91. def test_invalid_name(self):
  92. """validate_username_content disallows invalid names"""
  93. with self.assertRaises(ValidationError):
  94. validate_username_content('!')
  95. with self.assertRaises(ValidationError):
  96. validate_username_content('Bob!')
  97. with self.assertRaises(ValidationError):
  98. validate_username_content('Bob Boberson')
  99. with self.assertRaises(ValidationError):
  100. validate_username_content(u'Rafał')
  101. with self.assertRaises(ValidationError):
  102. validate_username_content(u'初音 ミク')
  103. class ValidateUsernameLengthTests(TestCase):
  104. def test_valid_name(self):
  105. """validate_username_length allows valid names"""
  106. validate_username_length('a' * settings.username_length_min)
  107. validate_username_length('a' * settings.username_length_max)
  108. def test_invalid_name(self):
  109. """validate_username_length disallows invalid names"""
  110. with self.assertRaises(ValidationError):
  111. validate_username_length('a' * (settings.username_length_min - 1))
  112. with self.assertRaises(ValidationError):
  113. validate_username_length('a' * (settings.username_length_max + 1))