test_deletemarkedusers.py 2.5 KB

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