test_deleteinactiveusers.py 4.0 KB

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