test_deleteinactiveusers.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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 ..test import create_test_user
  10. User = get_user_model()
  11. class DeleteInactiveUsersTests(TestCase):
  12. def setUp(self):
  13. self.user = create_test_user("User", "user@example.com")
  14. @override_dynamic_settings(new_inactive_accounts_delete=2)
  15. def test_delete_user_activation_user(self):
  16. """deletes user that didn't activate their account within required time"""
  17. self.user.joined_on = timezone.now() - timedelta(days=2)
  18. self.user.requires_activation = User.ACTIVATION_USER
  19. self.user.save()
  20. out = StringIO()
  21. call_command(deleteinactiveusers.Command(), stdout=out)
  22. command_output = out.getvalue().splitlines()[0].strip()
  23. self.assertEqual(command_output, "Deleted inactive user accounts: 1")
  24. with self.assertRaises(User.DoesNotExist):
  25. self.user.refresh_from_db()
  26. @override_dynamic_settings(new_inactive_accounts_delete=2)
  27. def test_delete_user_activation_admin(self):
  28. """deletes user that wasn't activated by admin within required time"""
  29. self.user.joined_on = timezone.now() - timedelta(days=2)
  30. self.user.requires_activation = User.ACTIVATION_ADMIN
  31. self.user.save()
  32. out = StringIO()
  33. call_command(deleteinactiveusers.Command(), stdout=out)
  34. command_output = out.getvalue().splitlines()[0].strip()
  35. self.assertEqual(command_output, "Deleted inactive user accounts: 1")
  36. with self.assertRaises(User.DoesNotExist):
  37. self.user.refresh_from_db()
  38. @override_dynamic_settings(new_inactive_accounts_delete=2)
  39. def test_skip_new_user_activation_user(self):
  40. """skips inactive user that is too new"""
  41. self.user.joined_on = timezone.now() - timedelta(days=1)
  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: 0")
  48. self.user.refresh_from_db()
  49. @override_dynamic_settings(new_inactive_accounts_delete=2)
  50. def test_skip_new_user_activation_admin(self):
  51. """skips admin-activated user that is too new"""
  52. self.user.joined_on = timezone.now() - timedelta(days=1)
  53. self.user.requires_activation = User.ACTIVATION_ADMIN
  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_active_user(self):
  62. """skips active user"""
  63. self.user.joined_on = timezone.now() - timedelta(days=1)
  64. self.user.save()
  65. out = StringIO()
  66. call_command(deleteinactiveusers.Command(), stdout=out)
  67. command_output = out.getvalue().splitlines()[0].strip()
  68. self.assertEqual(command_output, "Deleted inactive user accounts: 0")
  69. self.user.refresh_from_db()
  70. @override_dynamic_settings(new_inactive_accounts_delete=0)
  71. def test_delete_inactive_is_disabled(self):
  72. """skips active user"""
  73. self.user.joined_on = timezone.now() - timedelta(days=1)
  74. self.user.requires_activation = User.ACTIVATION_ADMIN
  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(
  80. command_output,
  81. "Automatic deletion of inactive user accounts is currently disabled.",
  82. )
  83. self.user.refresh_from_db()