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