|
@@ -4,8 +4,11 @@ from django.contrib.auth import get_user_model
|
|
from django.test import TestCase
|
|
from django.test import TestCase
|
|
from django.utils import timezone
|
|
from django.utils import timezone
|
|
|
|
|
|
|
|
+from misago.cache.versions import get_cache_versions_from_db
|
|
|
|
+
|
|
from misago.users.bans import (
|
|
from misago.users.bans import (
|
|
ban_ip, ban_user, get_email_ban, get_ip_ban, get_request_ip_ban, get_user_ban, get_username_ban)
|
|
ban_ip, ban_user, get_email_ban, get_ip_ban, get_request_ip_ban, get_user_ban, get_username_ban)
|
|
|
|
+from misago.users.constants import BANS_CACHE
|
|
from misago.users.models import Ban
|
|
from misago.users.models import Ban
|
|
|
|
|
|
|
|
|
|
@@ -40,13 +43,13 @@ class GetBanTests(TestCase):
|
|
)
|
|
)
|
|
self.assertEqual(get_username_ban('admiral').pk, valid_ban.pk)
|
|
self.assertEqual(get_username_ban('admiral').pk, valid_ban.pk)
|
|
|
|
|
|
- regitration_ban = Ban.objects.create(
|
|
|
|
|
|
+ registration_ban = Ban.objects.create(
|
|
banned_value='bob*',
|
|
banned_value='bob*',
|
|
expires_on=timezone.now() + timedelta(days=7),
|
|
expires_on=timezone.now() + timedelta(days=7),
|
|
registration_only=True,
|
|
registration_only=True,
|
|
)
|
|
)
|
|
self.assertIsNone(get_username_ban('boberson'))
|
|
self.assertIsNone(get_username_ban('boberson'))
|
|
- self.assertEqual(get_username_ban('boberson', True).pk, regitration_ban.pk)
|
|
|
|
|
|
+ self.assertEqual(get_username_ban('boberson', True).pk, registration_ban.pk)
|
|
|
|
|
|
def test_get_email_ban(self):
|
|
def test_get_email_ban(self):
|
|
"""get_email_ban returns valid ban"""
|
|
"""get_email_ban returns valid ban"""
|
|
@@ -77,14 +80,14 @@ class GetBanTests(TestCase):
|
|
)
|
|
)
|
|
self.assertEqual(get_email_ban('banned@mail.ru').pk, valid_ban.pk)
|
|
self.assertEqual(get_email_ban('banned@mail.ru').pk, valid_ban.pk)
|
|
|
|
|
|
- regitration_ban = Ban.objects.create(
|
|
|
|
|
|
+ registration_ban = Ban.objects.create(
|
|
banned_value='*.ua',
|
|
banned_value='*.ua',
|
|
check_type=Ban.EMAIL,
|
|
check_type=Ban.EMAIL,
|
|
expires_on=timezone.now() + timedelta(days=7),
|
|
expires_on=timezone.now() + timedelta(days=7),
|
|
registration_only=True,
|
|
registration_only=True,
|
|
)
|
|
)
|
|
self.assertIsNone(get_email_ban('banned@mail.ua'))
|
|
self.assertIsNone(get_email_ban('banned@mail.ua'))
|
|
- self.assertEqual(get_email_ban('banned@mail.ua', True).pk, regitration_ban.pk)
|
|
|
|
|
|
+ self.assertEqual(get_email_ban('banned@mail.ua', True).pk, registration_ban.pk)
|
|
|
|
|
|
def test_get_ip_ban(self):
|
|
def test_get_ip_ban(self):
|
|
"""get_ip_ban returns valid ban"""
|
|
"""get_ip_ban returns valid ban"""
|
|
@@ -115,14 +118,14 @@ class GetBanTests(TestCase):
|
|
)
|
|
)
|
|
self.assertEqual(get_ip_ban('125.0.0.1').pk, valid_ban.pk)
|
|
self.assertEqual(get_ip_ban('125.0.0.1').pk, valid_ban.pk)
|
|
|
|
|
|
- regitration_ban = Ban.objects.create(
|
|
|
|
|
|
+ registration_ban = Ban.objects.create(
|
|
banned_value='188.*',
|
|
banned_value='188.*',
|
|
check_type=Ban.IP,
|
|
check_type=Ban.IP,
|
|
expires_on=timezone.now() + timedelta(days=7),
|
|
expires_on=timezone.now() + timedelta(days=7),
|
|
registration_only=True,
|
|
registration_only=True,
|
|
)
|
|
)
|
|
self.assertIsNone(get_ip_ban('188.12.12.41'))
|
|
self.assertIsNone(get_ip_ban('188.12.12.41'))
|
|
- self.assertEqual(get_ip_ban('188.12.12.41', True).pk, regitration_ban.pk)
|
|
|
|
|
|
+ self.assertEqual(get_ip_ban('188.12.12.41', True).pk, registration_ban.pk)
|
|
|
|
|
|
|
|
|
|
class UserBansTests(TestCase):
|
|
class UserBansTests(TestCase):
|
|
@@ -131,7 +134,7 @@ class UserBansTests(TestCase):
|
|
|
|
|
|
def test_no_ban(self):
|
|
def test_no_ban(self):
|
|
"""user is not caught by ban"""
|
|
"""user is not caught by ban"""
|
|
- self.assertIsNone(get_user_ban(self.user))
|
|
|
|
|
|
+ self.assertIsNone(get_user_ban(self.user, get_cache_versions_from_db()))
|
|
self.assertFalse(self.user.ban_cache.is_banned)
|
|
self.assertFalse(self.user.ban_cache.is_banned)
|
|
|
|
|
|
def test_permanent_ban(self):
|
|
def test_permanent_ban(self):
|
|
@@ -142,7 +145,7 @@ class UserBansTests(TestCase):
|
|
staff_message='Staff reason',
|
|
staff_message='Staff reason',
|
|
)
|
|
)
|
|
|
|
|
|
- user_ban = get_user_ban(self.user)
|
|
|
|
|
|
+ user_ban = get_user_ban(self.user, get_cache_versions_from_db())
|
|
self.assertIsNotNone(user_ban)
|
|
self.assertIsNotNone(user_ban)
|
|
self.assertEqual(user_ban.user_message, 'User reason')
|
|
self.assertEqual(user_ban.user_message, 'User reason')
|
|
self.assertEqual(user_ban.staff_message, 'Staff reason')
|
|
self.assertEqual(user_ban.staff_message, 'Staff reason')
|
|
@@ -157,7 +160,7 @@ class UserBansTests(TestCase):
|
|
expires_on=timezone.now() + timedelta(days=7),
|
|
expires_on=timezone.now() + timedelta(days=7),
|
|
)
|
|
)
|
|
|
|
|
|
- user_ban = get_user_ban(self.user)
|
|
|
|
|
|
+ user_ban = get_user_ban(self.user, get_cache_versions_from_db())
|
|
self.assertIsNotNone(user_ban)
|
|
self.assertIsNotNone(user_ban)
|
|
self.assertEqual(user_ban.user_message, 'User reason')
|
|
self.assertEqual(user_ban.user_message, 'User reason')
|
|
self.assertEqual(user_ban.staff_message, 'Staff reason')
|
|
self.assertEqual(user_ban.staff_message, 'Staff reason')
|
|
@@ -170,7 +173,7 @@ class UserBansTests(TestCase):
|
|
expires_on=timezone.now() - timedelta(days=7),
|
|
expires_on=timezone.now() - timedelta(days=7),
|
|
)
|
|
)
|
|
|
|
|
|
- self.assertIsNone(get_user_ban(self.user))
|
|
|
|
|
|
+ self.assertIsNone(get_user_ban(self.user, get_cache_versions_from_db()))
|
|
self.assertFalse(self.user.ban_cache.is_banned)
|
|
self.assertFalse(self.user.ban_cache.is_banned)
|
|
|
|
|
|
def test_expired_non_flagged_ban(self):
|
|
def test_expired_non_flagged_ban(self):
|
|
@@ -181,7 +184,7 @@ class UserBansTests(TestCase):
|
|
)
|
|
)
|
|
Ban.objects.update(is_checked=True)
|
|
Ban.objects.update(is_checked=True)
|
|
|
|
|
|
- self.assertIsNone(get_user_ban(self.user))
|
|
|
|
|
|
+ self.assertIsNone(get_user_ban(self.user, get_cache_versions_from_db()))
|
|
self.assertFalse(self.user.ban_cache.is_banned)
|
|
self.assertFalse(self.user.ban_cache.is_banned)
|
|
|
|
|
|
|
|
|
|
@@ -189,6 +192,9 @@ class MockRequest(object):
|
|
def __init__(self):
|
|
def __init__(self):
|
|
self.user_ip = '127.0.0.1'
|
|
self.user_ip = '127.0.0.1'
|
|
self.session = {}
|
|
self.session = {}
|
|
|
|
+ self.cache_versions = {
|
|
|
|
+ BANS_CACHE: "abcdefgh"
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
class RequestIPBansTests(TestCase):
|
|
class RequestIPBansTests(TestCase):
|
|
@@ -255,7 +261,7 @@ class BanUserTests(TestCase):
|
|
self.assertEqual(ban.user_message, 'User reason')
|
|
self.assertEqual(ban.user_message, 'User reason')
|
|
self.assertEqual(ban.staff_message, 'Staff reason')
|
|
self.assertEqual(ban.staff_message, 'Staff reason')
|
|
|
|
|
|
- db_ban = get_user_ban(user)
|
|
|
|
|
|
+ db_ban = get_user_ban(user, get_cache_versions_from_db())
|
|
self.assertEqual(ban.pk, db_ban.ban_id)
|
|
self.assertEqual(ban.pk, db_ban.ban_id)
|
|
|
|
|
|
|
|
|
|
@@ -267,4 +273,4 @@ class BanIpTests(TestCase):
|
|
self.assertEqual(ban.staff_message, 'Staff reason')
|
|
self.assertEqual(ban.staff_message, 'Staff reason')
|
|
|
|
|
|
db_ban = get_ip_ban('127.0.0.1')
|
|
db_ban = get_ip_ban('127.0.0.1')
|
|
- self.assertEqual(ban.pk, db_ban.pk)
|
|
|
|
|
|
+ self.assertEqual(ban.pk, db_ban.pk)
|