test_user_model.py 3.1 KB

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