test_deleteinactiveusers.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. from datetime import timedelta
  2. from io import StringIO
  3. from django.contrib.auth import get_user_model
  4. from django.core.management import call_command
  5. from django.test import TestCase
  6. from django.utils import timezone
  7. from ...conf.test import override_dynamic_settings
  8. from ..management.commands import deleteinactiveusers
  9. from ..models import DeletedUser
  10. from ..test import create_test_user
  11. User = get_user_model()
  12. class DeleteInactiveUsersTests(TestCase):
  13. def setUp(self):
  14. self.user = create_test_user("User", "user@example.com")
  15. @override_dynamic_settings(new_inactive_accounts_delete=2)
  16. def test_delete_user_activation_user(self):
  17. """deletes user that didn't activate their account within required time"""
  18. self.user.joined_on = timezone.now() - timedelta(days=2)
  19. self.user.requires_activation = User.ACTIVATION_USER
  20. self.user.save()
  21. out = StringIO()
  22. call_command(deleteinactiveusers.Command(), stdout=out)
  23. command_output = out.getvalue().splitlines()[0].strip()
  24. self.assertEqual(command_output, "Deleted inactive user accounts: 1")
  25. with self.assertRaises(User.DoesNotExist):
  26. self.user.refresh_from_db()
  27. @override_dynamic_settings(new_inactive_accounts_delete=2)
  28. def test_delete_user_activation_admin(self):
  29. """deletes user that wasn't activated by admin within required time"""
  30. self.user.joined_on = timezone.now() - timedelta(days=2)
  31. self.user.requires_activation = User.ACTIVATION_ADMIN
  32. self.user.save()
  33. out = StringIO()
  34. call_command(deleteinactiveusers.Command(), stdout=out)
  35. command_output = out.getvalue().splitlines()[0].strip()
  36. self.assertEqual(command_output, "Deleted inactive user accounts: 1")
  37. with self.assertRaises(User.DoesNotExist):
  38. self.user.refresh_from_db()
  39. @override_dynamic_settings(new_inactive_accounts_delete=2)
  40. def test_inactive_user_deletion_is_recorded(self):
  41. self.user.joined_on = timezone.now() - timedelta(days=2)
  42. self.user.requires_activation = User.ACTIVATION_USER
  43. self.user.save()
  44. out = StringIO()
  45. call_command(deleteinactiveusers.Command(), stdout=out)
  46. command_output = out.getvalue().splitlines()[0].strip()
  47. self.assertEqual(command_output, "Deleted inactive user accounts: 1")
  48. DeletedUser.objects.get(deleted_by=DeletedUser.DELETED_BY_SYSTEM)
  49. @override_dynamic_settings(new_inactive_accounts_delete=2)
  50. def test_skip_new_user_activation_user(self):
  51. """skips inactive user that is too new"""
  52. self.user.joined_on = timezone.now() - timedelta(days=1)
  53. self.user.requires_activation = User.ACTIVATION_USER
  54. self.user.save()
  55. out = StringIO()
  56. call_command(deleteinactiveusers.Command(), stdout=out)
  57. command_output = out.getvalue().splitlines()[0].strip()
  58. self.assertEqual(command_output, "Deleted inactive user accounts: 0")
  59. self.user.refresh_from_db()
  60. @override_dynamic_settings(new_inactive_accounts_delete=2)
  61. def test_skip_new_user_activation_admin(self):
  62. """skips admin-activated user that is too new"""
  63. self.user.joined_on = timezone.now() - timedelta(days=1)
  64. self.user.requires_activation = User.ACTIVATION_ADMIN
  65. self.user.save()
  66. out = StringIO()
  67. call_command(deleteinactiveusers.Command(), stdout=out)
  68. command_output = out.getvalue().splitlines()[0].strip()
  69. self.assertEqual(command_output, "Deleted inactive user accounts: 0")
  70. self.user.refresh_from_db()
  71. @override_dynamic_settings(new_inactive_accounts_delete=2)
  72. def test_skip_active_user(self):
  73. """skips active user"""
  74. self.user.joined_on = timezone.now() - timedelta(days=1)
  75. self.user.save()
  76. out = StringIO()
  77. call_command(deleteinactiveusers.Command(), stdout=out)
  78. command_output = out.getvalue().splitlines()[0].strip()
  79. self.assertEqual(command_output, "Deleted inactive user accounts: 0")
  80. self.user.refresh_from_db()
  81. @override_dynamic_settings(new_inactive_accounts_delete=0)
  82. def test_delete_inactive_is_disabled(self):
  83. """skips active user"""
  84. self.user.joined_on = timezone.now() - timedelta(days=1)
  85. self.user.requires_activation = User.ACTIVATION_ADMIN
  86. self.user.save()
  87. out = StringIO()
  88. call_command(deleteinactiveusers.Command(), stdout=out)
  89. command_output = out.getvalue().splitlines()[0].strip()
  90. self.assertEqual(
  91. command_output,
  92. "Automatic deletion of inactive user accounts is currently disabled.",
  93. )
  94. self.user.refresh_from_db()