test_bans.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. from datetime import date, timedelta
  2. from django.contrib.auth import get_user_model
  3. from django.test import TestCase
  4. from misago.users.bans import get_user_ban, get_request_ip_ban
  5. from misago.users.models import Ban, BAN_IP
  6. class UserBansTests(TestCase):
  7. def setUp(self):
  8. User = get_user_model()
  9. self.user = User.objects.create_user('Bob',
  10. 'bob@boberson.com',
  11. 'pass123')
  12. def test_no_ban(self):
  13. """user is not caught by ban"""
  14. self.assertIsNone(get_user_ban(self.user))
  15. self.assertFalse(self.user.ban_cache.is_banned)
  16. def test_permanent_ban(self):
  17. """user is caught by permanent ban"""
  18. Ban.objects.create(banned_value='bob',
  19. user_message='User reason',
  20. staff_message='Staff reason')
  21. user_ban = get_user_ban(self.user)
  22. self.assertIsNotNone(user_ban)
  23. self.assertEqual(user_ban.user_message, 'User reason')
  24. self.assertEqual(user_ban.staff_message, 'Staff reason')
  25. self.assertTrue(self.user.ban_cache.is_banned)
  26. def test_temporary_ban(self):
  27. """user is caught by temporary ban"""
  28. Ban.objects.create(banned_value='bo*',
  29. user_message='User reason',
  30. staff_message='Staff reason',
  31. valid_until=date.today() + timedelta(days=7))
  32. user_ban = get_user_ban(self.user)
  33. self.assertIsNotNone(user_ban)
  34. self.assertEqual(user_ban.user_message, 'User reason')
  35. self.assertEqual(user_ban.staff_message, 'Staff reason')
  36. self.assertTrue(self.user.ban_cache.is_banned)
  37. def test_expired_ban(self):
  38. """user is not caught by expired ban"""
  39. Ban.objects.create(banned_value='bo*',
  40. valid_until=date.today() - timedelta(days=7))
  41. self.assertIsNone(get_user_ban(self.user))
  42. self.assertFalse(self.user.ban_cache.is_banned)
  43. class FakeRequest(object):
  44. def __init__(self):
  45. self._misago_real_ip = '127.0.0.1'
  46. self.session = {}
  47. class RequestIPBansTests(TestCase):
  48. def test_no_ban(self):
  49. """no ban found"""
  50. ip_ban = get_request_ip_ban(FakeRequest())
  51. self.assertIsNone(ip_ban)
  52. def test_permanent_ban(self):
  53. """ip is caught by permanent ban"""
  54. Ban.objects.create(test=BAN_IP,
  55. banned_value='127.0.0.1',
  56. user_message='User reason')
  57. ip_ban = get_request_ip_ban(FakeRequest())
  58. self.assertTrue(ip_ban['is_banned'])
  59. self.assertEqual(ip_ban['ip'], '127.0.0.1')
  60. self.assertEqual(ip_ban['message'], 'User reason')
  61. def test_temporary_ban(self):
  62. """ip is caught by temporary ban"""
  63. Ban.objects.create(test=BAN_IP,
  64. banned_value='127.0.0.1',
  65. user_message='User reason',
  66. valid_until=date.today() + timedelta(days=7))
  67. ip_ban = get_request_ip_ban(FakeRequest())
  68. self.assertTrue(ip_ban['is_banned'])
  69. self.assertEqual(ip_ban['ip'], '127.0.0.1')
  70. self.assertEqual(ip_ban['message'], 'User reason')
  71. def test_expired_ban(self):
  72. """ip is not caught by expired ban"""
  73. Ban.objects.create(test=BAN_IP,
  74. banned_value='127.0.0.1',
  75. user_message='User reason',
  76. valid_until=date.today() - timedelta(days=7))
  77. ip_ban = get_request_ip_ban(FakeRequest())
  78. self.assertIsNone(ip_ban)