test_deletemarkedusers.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. from io import StringIO
  2. from django.contrib.auth import get_user_model
  3. from django.core.management import call_command
  4. from django.test import TestCase
  5. from ...conf.test import override_dynamic_settings
  6. from ..management.commands import deletemarkedusers
  7. from ..test import create_test_user
  8. User = get_user_model()
  9. class DeleteMarkedUsersTests(TestCase):
  10. def setUp(self):
  11. self.user = create_test_user("User", "user@example.com")
  12. self.user.mark_for_delete()
  13. def test_delete_marked_user(self):
  14. """deletes marked user"""
  15. out = StringIO()
  16. call_command(deletemarkedusers.Command(), stdout=out)
  17. command_output = out.getvalue().splitlines()[0].strip()
  18. self.assertEqual(command_output, "Deleted users: 1")
  19. with self.assertRaises(User.DoesNotExist):
  20. self.user.refresh_from_db()
  21. @override_dynamic_settings(allow_delete_own_account=False)
  22. def test_delete_disabled(self):
  23. """deletion respects user decision even if configuration has changed"""
  24. out = StringIO()
  25. call_command(deletemarkedusers.Command(), stdout=out)
  26. command_output = out.getvalue().splitlines()[0].strip()
  27. self.assertEqual(command_output, "Deleted users: 1")
  28. with self.assertRaises(User.DoesNotExist):
  29. self.user.refresh_from_db()
  30. def test_delete_not_marked(self):
  31. """user has to be marked to be deletable"""
  32. self.user.is_deleting_account = False
  33. self.user.save()
  34. out = StringIO()
  35. call_command(deletemarkedusers.Command(), stdout=out)
  36. command_output = out.getvalue().splitlines()[0].strip()
  37. self.assertEqual(command_output, "Deleted users: 0")
  38. self.user.refresh_from_db()
  39. def test_delete_is_staff(self):
  40. """staff users are extempt from deletion"""
  41. self.user.is_staff = True
  42. self.user.save()
  43. out = StringIO()
  44. call_command(deletemarkedusers.Command(), stdout=out)
  45. command_output = out.getvalue().splitlines()[0].strip()
  46. self.assertEqual(command_output, "Deleted users: 0")
  47. self.user.refresh_from_db()
  48. def test_delete_superuser(self):
  49. """superusers are extempt from deletion"""
  50. self.user.is_superuser = True
  51. self.user.save()
  52. out = StringIO()
  53. call_command(deletemarkedusers.Command(), stdout=out)
  54. command_output = out.getvalue().splitlines()[0].strip()
  55. self.assertEqual(command_output, "Deleted users: 0")
  56. self.user.refresh_from_db()