from datetime import timedelta from io import StringIO from django.contrib.auth import get_user_model from django.core.management import call_command from django.test import TestCase, override_settings from django.utils import timezone from misago.users.management.commands import removeoldips UserModel = get_user_model() USER_IP = "31.41.51.65" class RemoveOldIpsTests(TestCase): def test_removeoldips_recent_user(self): """command is not removing user's IP if its recent""" user = UserModel.objects.create_user( "Bob", "bob@bob.com", joined_from_ip=USER_IP ) out = StringIO() call_command(removeoldips.Command(), stdout=out) user_joined_from_ip = UserModel.objects.get(pk=user.pk).joined_from_ip self.assertEqual(user_joined_from_ip, USER_IP) def test_removeoldips_old_user(self): """command removes user's IP if its old""" joined_on_past = timezone.now() - timedelta(days=50) user = UserModel.objects.create_user( "Bob1", "bob1@bob.com", joined_from_ip=USER_IP ) user.joined_on = joined_on_past user.save() out = StringIO() call_command(removeoldips.Command(), stdout=out) user_joined_from_ip = UserModel.objects.get(pk=user.pk).joined_from_ip self.assertIsNone(user_joined_from_ip) @override_settings(MISAGO_IP_STORE_TIME=None) def test_not_removing_user_ip(self): """command is not removing user's IP if removing is disabled""" user = UserModel.objects.create_user( "Bob1", "bob1@bob.com", joined_from_ip=USER_IP ) out = StringIO() call_command(removeoldips.Command(), stdout=out) command_output = out.getvalue().splitlines()[0].strip() self.assertEqual(command_output, "Old IP removal is disabled.") user_joined_from_ip = UserModel.objects.get(pk=user.pk).joined_from_ip self.assertEqual(user_joined_from_ip, USER_IP)