test_deleteinactiveusers.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. from datetime import timedelta
  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 django.utils import timezone
  6. from django.utils.six import StringIO
  7. from misago.users.management.commands import deleteinactiveusers
  8. UserModel = get_user_model()
  9. class DeleteInactiveUsersTests(TestCase):
  10. def setUp(self):
  11. self.user = UserModel.objects.create_user('Bob', 'bob@bob.com', 'pass123')
  12. @override_settings(MISAGO_DELETE_NEW_INACTIVE_USERS_OLDER_THAN_DAYS=2)
  13. def test_delete_user_activation_user(self):
  14. """deletes user that didn't activate their account within required time"""
  15. self.user.joined_on = timezone.now() - timedelta(days=2)
  16. self.user.requires_activation = UserModel.ACTIVATION_USER
  17. self.user.save()
  18. out = StringIO()
  19. call_command(deleteinactiveusers.Command(), stdout=out)
  20. command_output = out.getvalue().splitlines()[0].strip()
  21. self.assertEqual(command_output, "Deleted users: 1")
  22. with self.assertRaises(UserModel.DoesNotExist):
  23. UserModel.objects.get(pk=self.user.pk)
  24. @override_settings(MISAGO_DELETE_NEW_INACTIVE_USERS_OLDER_THAN_DAYS=2)
  25. def test_delete_user_activation_admin(self):
  26. """deletes user that wasn't activated by admin within required time"""
  27. self.user.joined_on = timezone.now() - timedelta(days=2)
  28. self.user.requires_activation = UserModel.ACTIVATION_ADMIN
  29. self.user.save()
  30. out = StringIO()
  31. call_command(deleteinactiveusers.Command(), stdout=out)
  32. command_output = out.getvalue().splitlines()[0].strip()
  33. self.assertEqual(command_output, "Deleted users: 1")
  34. with self.assertRaises(UserModel.DoesNotExist):
  35. UserModel.objects.get(pk=self.user.pk)
  36. @override_settings(MISAGO_DELETE_NEW_INACTIVE_USERS_OLDER_THAN_DAYS=2)
  37. def test_skip_new_user_activation_user(self):
  38. """skips inactive user that is too new"""
  39. self.user.joined_on = timezone.now() - timedelta(days=1)
  40. self.user.requires_activation = UserModel.ACTIVATION_USER
  41. self.user.save()
  42. out = StringIO()
  43. call_command(deleteinactiveusers.Command(), stdout=out)
  44. command_output = out.getvalue().splitlines()[0].strip()
  45. self.assertEqual(command_output, "Deleted users: 0")
  46. UserModel.objects.get(pk=self.user.pk)
  47. @override_settings(MISAGO_DELETE_NEW_INACTIVE_USERS_OLDER_THAN_DAYS=2)
  48. def test_skip_new_user_activation_admin(self):
  49. """skips admin-activated user that is too new"""
  50. self.user.joined_on = timezone.now() - timedelta(days=1)
  51. self.user.requires_activation = UserModel.ACTIVATION_ADMIN
  52. self.user.save()
  53. out = StringIO()
  54. call_command(deleteinactiveusers.Command(), stdout=out)
  55. command_output = out.getvalue().splitlines()[0].strip()
  56. self.assertEqual(command_output, "Deleted users: 0")
  57. UserModel.objects.get(pk=self.user.pk)
  58. @override_settings(MISAGO_DELETE_NEW_INACTIVE_USERS_OLDER_THAN_DAYS=2)
  59. def test_skip_active_user(self):
  60. """skips active user"""
  61. self.user.joined_on = timezone.now() - timedelta(days=1)
  62. self.user.save()
  63. out = StringIO()
  64. call_command(deleteinactiveusers.Command(), stdout=out)
  65. command_output = out.getvalue().splitlines()[0].strip()
  66. self.assertEqual(command_output, "Deleted users: 0")
  67. UserModel.objects.get(pk=self.user.pk)
  68. @override_settings(MISAGO_DELETE_NEW_INACTIVE_USERS_OLDER_THAN_DAYS=0)
  69. def test_delete_inactive_is_disabled(self):
  70. """skips active user"""
  71. self.user.joined_on = timezone.now() - timedelta(days=1)
  72. self.user.requires_activation = UserModel.ACTIVATION_ADMIN
  73. self.user.save()
  74. out = StringIO()
  75. call_command(deleteinactiveusers.Command(), stdout=out)
  76. command_output = out.getvalue().splitlines()[0].strip()
  77. self.assertEqual(
  78. command_output, "Automatic deletion of inactive users is currently disabled.")
  79. UserModel.objects.get(pk=self.user.pk)