test_user_model.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. # -*- coding: utf-8 -*-
  2. from django.core.exceptions import ValidationError
  3. from django.test import TestCase
  4. from misago.conf import settings
  5. from misago.core.utils import slugify
  6. from misago.users.models import User
  7. class UserManagerTests(TestCase):
  8. def test_create_user(self):
  9. """create_user created new user account successfully"""
  10. user = User.objects.create_user(
  11. 'Bob',
  12. 'bob@test.com',
  13. 'Pass.123',
  14. set_default_avatar=True,
  15. )
  16. db_user = User.objects.get(id=user.pk)
  17. self.assertEqual(user.username, db_user.username)
  18. self.assertEqual(user.slug, db_user.slug)
  19. self.assertEqual(user.email, db_user.email)
  20. self.assertEqual(user.email_hash, db_user.email_hash)
  21. def test_create_user_twice(self):
  22. """create_user is raising validation error for duplicate users"""
  23. User.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
  24. with self.assertRaises(ValidationError):
  25. User.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
  26. def test_create_superuser(self):
  27. """create_superuser created new user account successfully"""
  28. user = User.objects.create_superuser('Bob', 'bob@test.com', 'Pass.123')
  29. db_user = User.objects.get(id=user.pk)
  30. self.assertTrue(user.is_staff)
  31. self.assertTrue(db_user.is_staff)
  32. self.assertTrue(user.is_superuser)
  33. self.assertTrue(db_user.is_superuser)
  34. def test_get_user(self):
  35. """get_by_ methods return user correctly"""
  36. user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
  37. db_user = User.objects.get_by_username(user.username)
  38. self.assertEqual(user.pk, db_user.pk)
  39. db_user = User.objects.get_by_email(user.email)
  40. self.assertEqual(user.pk, db_user.pk)
  41. db_user = User.objects.get_by_username_or_email(user.username)
  42. self.assertEqual(user.pk, db_user.pk)
  43. db_user = User.objects.get_by_username_or_email(user.email)
  44. self.assertEqual(user.pk, db_user.pk)
  45. def test_getters_unicode_handling(self):
  46. """get_by_ methods handle unicode"""
  47. with self.assertRaises(User.DoesNotExist):
  48. User.objects.get_by_username(u'łóć')
  49. with self.assertRaises(User.DoesNotExist):
  50. User.objects.get_by_email(u'łóć@polskimail.pl')
  51. with self.assertRaises(User.DoesNotExist):
  52. User.objects.get_by_username_or_email(u'łóć@polskimail.pl')
  53. class UserModelTests(TestCase):
  54. def test_set_username(self):
  55. """set_username sets username and slug on model"""
  56. user = User()
  57. user.set_username('Boberson')
  58. self.assertEqual(user.username, 'Boberson')
  59. self.assertEqual(user.slug, 'boberson')
  60. self.assertEqual(user.get_username(), 'Boberson')
  61. self.assertEqual(user.get_full_name(), 'Boberson')
  62. self.assertEqual(user.get_short_name(), 'Boberson')
  63. def test_set_email(self):
  64. """set_email sets email and hash on model"""
  65. user = User()
  66. user.set_email('bOb@TEst.com')
  67. self.assertEqual(user.email, 'bOb@test.com')
  68. self.assertTrue(user.email_hash)
  69. def test_anonymize_content(self):
  70. """anonymize_content sets username and slug to one defined in settings"""
  71. user = User.objects.create_user('Bob', 'bob@example.com', 'Pass.123')
  72. user.anonymize_content()
  73. self.assertEqual(user.username, settings.MISAGO_ANONYMOUS_USERNAME)
  74. self.assertEqual(user.slug, slugify(settings.MISAGO_ANONYMOUS_USERNAME))