|
@@ -2,15 +2,15 @@ from django.contrib.auth import get_user_model
|
|
from django.core.urlresolvers import reverse
|
|
from django.core.urlresolvers import reverse
|
|
|
|
|
|
from misago.acl.testutils import override_acl
|
|
from misago.acl.testutils import override_acl
|
|
-from misago.admin.testutils import AdminTestCase
|
|
|
|
from misago.core import threadstore
|
|
from misago.core import threadstore
|
|
from misago.core.cache import cache
|
|
from misago.core.cache import cache
|
|
|
|
|
|
from misago.users.warnings import warn_user
|
|
from misago.users.warnings import warn_user
|
|
from misago.users.models import WarningLevel
|
|
from misago.users.models import WarningLevel
|
|
|
|
+from misago.users.testutils import AuthenticatedUserTestCase
|
|
|
|
|
|
|
|
|
|
-class WarningTestCase(AdminTestCase):
|
|
|
|
|
|
+class WarningTestCase(AuthenticatedUserTestCase):
|
|
def setUp(self):
|
|
def setUp(self):
|
|
super(WarningTestCase, self).setUp()
|
|
super(WarningTestCase, self).setUp()
|
|
self.test_user = get_user_model().objects.create_user(
|
|
self.test_user = get_user_model().objects.create_user(
|
|
@@ -28,7 +28,7 @@ class WarningTestCase(AdminTestCase):
|
|
threadstore.clear()
|
|
threadstore.clear()
|
|
|
|
|
|
def warn_user(self, reason):
|
|
def warn_user(self, reason):
|
|
- override_acl(self.test_admin, {'can_warn_users': 1})
|
|
|
|
|
|
+ override_acl(self.user, {'can_warn_users': 1})
|
|
self.client.post(reverse('misago:warn_user', kwargs=self.link_kwargs),
|
|
self.client.post(reverse('misago:warn_user', kwargs=self.link_kwargs),
|
|
data={'reason': reason})
|
|
data={'reason': reason})
|
|
|
|
|
|
@@ -36,7 +36,7 @@ class WarningTestCase(AdminTestCase):
|
|
class WarnUserTests(WarningTestCase):
|
|
class WarnUserTests(WarningTestCase):
|
|
def test_no_permission(self):
|
|
def test_no_permission(self):
|
|
"""fail to warn due to permissions"""
|
|
"""fail to warn due to permissions"""
|
|
- override_acl(self.test_admin, {
|
|
|
|
|
|
+ override_acl(self.user, {
|
|
'can_warn_users': 0,
|
|
'can_warn_users': 0,
|
|
})
|
|
})
|
|
|
|
|
|
@@ -50,13 +50,8 @@ class WarnUserTests(WarningTestCase):
|
|
|
|
|
|
def test_protected_user(self):
|
|
def test_protected_user(self):
|
|
"""fail to warn due to user's can_be_warned"""
|
|
"""fail to warn due to user's can_be_warned"""
|
|
- override_acl(self.test_admin, {
|
|
|
|
- 'can_warn_users': 1,
|
|
|
|
- })
|
|
|
|
-
|
|
|
|
- override_acl(self.test_user, {
|
|
|
|
- 'can_be_warned': 0,
|
|
|
|
- })
|
|
|
|
|
|
+ override_acl(self.user, {'can_warn_users': 1})
|
|
|
|
+ override_acl(self.test_user, {'can_be_warned': 0})
|
|
|
|
|
|
response = self.client.get(reverse('misago:warn_user',
|
|
response = self.client.get(reverse('misago:warn_user',
|
|
kwargs=self.link_kwargs))
|
|
kwargs=self.link_kwargs))
|
|
@@ -64,19 +59,16 @@ class WarnUserTests(WarningTestCase):
|
|
|
|
|
|
def test_warn_user(self):
|
|
def test_warn_user(self):
|
|
"""can warn user to the roof"""
|
|
"""can warn user to the roof"""
|
|
- override_acl(self.test_admin, {
|
|
|
|
- 'can_warn_users': 1,
|
|
|
|
- })
|
|
|
|
-
|
|
|
|
- override_acl(self.test_user, {
|
|
|
|
- 'can_be_warned': 1,
|
|
|
|
- })
|
|
|
|
-
|
|
|
|
for level in self.warning_levels:
|
|
for level in self.warning_levels:
|
|
|
|
+
|
|
|
|
+ override_acl(self.user, {'can_warn_users': 1})
|
|
|
|
+ override_acl(self.test_user, {'can_be_warned': 1})
|
|
response = self.client.get(reverse('misago:warn_user',
|
|
response = self.client.get(reverse('misago:warn_user',
|
|
kwargs=self.link_kwargs))
|
|
kwargs=self.link_kwargs))
|
|
self.assertEqual(response.status_code, 200)
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
|
|
|
|
+ override_acl(self.user, {'can_warn_users': 1})
|
|
|
|
+ override_acl(self.test_user, {'can_be_warned': 1})
|
|
response = self.client.post(
|
|
response = self.client.post(
|
|
reverse('misago:warn_user', kwargs=self.link_kwargs),
|
|
reverse('misago:warn_user', kwargs=self.link_kwargs),
|
|
data={'reason': 'Warning %s' % level.name})
|
|
data={'reason': 'Warning %s' % level.name})
|
|
@@ -87,7 +79,7 @@ class WarnUserTests(WarningTestCase):
|
|
|
|
|
|
class UserWarningsListTests(WarningTestCase):
|
|
class UserWarningsListTests(WarningTestCase):
|
|
def allow_warning(self):
|
|
def allow_warning(self):
|
|
- override_acl(self.test_admin, {
|
|
|
|
|
|
+ override_acl(self.user, {
|
|
'can_warn_users': 1,
|
|
'can_warn_users': 1,
|
|
'can_see_other_users_warnings': 1,
|
|
'can_see_other_users_warnings': 1,
|
|
})
|
|
})
|
|
@@ -100,7 +92,7 @@ class UserWarningsListTests(WarningTestCase):
|
|
"""can't see other user warnings"""
|
|
"""can't see other user warnings"""
|
|
self.warn_user('Test Warning!')
|
|
self.warn_user('Test Warning!')
|
|
|
|
|
|
- override_acl(self.test_admin, {
|
|
|
|
|
|
+ override_acl(self.user, {
|
|
'can_see_other_users_warnings': 0,
|
|
'can_see_other_users_warnings': 0,
|
|
})
|
|
})
|
|
response = self.client.get(reverse('misago:user_warnings',
|
|
response = self.client.get(reverse('misago:user_warnings',
|
|
@@ -126,14 +118,14 @@ class UserWarningsListTests(WarningTestCase):
|
|
|
|
|
|
class CancelWarningTests(WarningTestCase):
|
|
class CancelWarningTests(WarningTestCase):
|
|
def allow_cancel_owned_warning(self):
|
|
def allow_cancel_owned_warning(self):
|
|
- override_acl(self.test_admin, {
|
|
|
|
|
|
+ override_acl(self.user, {
|
|
'can_warn_users': 1,
|
|
'can_warn_users': 1,
|
|
'can_see_other_users_warnings': 1,
|
|
'can_see_other_users_warnings': 1,
|
|
'can_cancel_warnings': 1,
|
|
'can_cancel_warnings': 1,
|
|
})
|
|
})
|
|
|
|
|
|
def allow_cancel_all_warnings(self):
|
|
def allow_cancel_all_warnings(self):
|
|
- override_acl(self.test_admin, {
|
|
|
|
|
|
+ override_acl(self.user, {
|
|
'can_warn_users': 1,
|
|
'can_warn_users': 1,
|
|
'can_see_other_users_warnings': 1,
|
|
'can_see_other_users_warnings': 1,
|
|
'can_cancel_warnings': 2,
|
|
'can_cancel_warnings': 2,
|
|
@@ -141,13 +133,13 @@ class CancelWarningTests(WarningTestCase):
|
|
|
|
|
|
def test_no_permission(self):
|
|
def test_no_permission(self):
|
|
"""can't cancel warnings"""
|
|
"""can't cancel warnings"""
|
|
- override_acl(self.test_admin, {
|
|
|
|
|
|
+ override_acl(self.user, {
|
|
'can_warn_users': 1,
|
|
'can_warn_users': 1,
|
|
'can_see_other_users_warnings': 1,
|
|
'can_see_other_users_warnings': 1,
|
|
'can_cancel_warnings': 0,
|
|
'can_cancel_warnings': 0,
|
|
})
|
|
})
|
|
|
|
|
|
- warning = warn_user(self.test_admin, self.test_user)
|
|
|
|
|
|
+ warning = warn_user(self.user, self.test_user)
|
|
response = self.client.post(
|
|
response = self.client.post(
|
|
reverse('misago:cancel_warning', kwargs={
|
|
reverse('misago:cancel_warning', kwargs={
|
|
'user_slug': 'bob',
|
|
'user_slug': 'bob',
|
|
@@ -173,7 +165,7 @@ class CancelWarningTests(WarningTestCase):
|
|
self.assertFalse(
|
|
self.assertFalse(
|
|
self.test_user.warnings.get(id=warning.pk).is_canceled)
|
|
self.test_user.warnings.get(id=warning.pk).is_canceled)
|
|
|
|
|
|
- warning = warn_user(self.test_admin, self.test_user)
|
|
|
|
|
|
+ warning = warn_user(self.user, self.test_user)
|
|
self.allow_cancel_owned_warning()
|
|
self.allow_cancel_owned_warning()
|
|
response = self.client.post(
|
|
response = self.client.post(
|
|
reverse('misago:cancel_warning', kwargs={
|
|
reverse('misago:cancel_warning', kwargs={
|
|
@@ -200,7 +192,7 @@ class CancelWarningTests(WarningTestCase):
|
|
self.assertEqual(response.status_code, 302)
|
|
self.assertEqual(response.status_code, 302)
|
|
self.assertTrue(self.test_user.warnings.get(id=warning.pk).is_canceled)
|
|
self.assertTrue(self.test_user.warnings.get(id=warning.pk).is_canceled)
|
|
|
|
|
|
- warning = warn_user(self.test_admin, self.test_user)
|
|
|
|
|
|
+ warning = warn_user(self.user, self.test_user)
|
|
|
|
|
|
self.allow_cancel_all_warnings()
|
|
self.allow_cancel_all_warnings()
|
|
response = self.client.post(
|
|
response = self.client.post(
|
|
@@ -215,14 +207,14 @@ class CancelWarningTests(WarningTestCase):
|
|
|
|
|
|
class DeleteWarningTests(WarningTestCase):
|
|
class DeleteWarningTests(WarningTestCase):
|
|
def allow_delete_owned_warning(self):
|
|
def allow_delete_owned_warning(self):
|
|
- override_acl(self.test_admin, {
|
|
|
|
|
|
+ override_acl(self.user, {
|
|
'can_warn_users': 1,
|
|
'can_warn_users': 1,
|
|
'can_see_other_users_warnings': 1,
|
|
'can_see_other_users_warnings': 1,
|
|
'can_delete_warnings': 1,
|
|
'can_delete_warnings': 1,
|
|
})
|
|
})
|
|
|
|
|
|
def allow_delete_all_warnings(self):
|
|
def allow_delete_all_warnings(self):
|
|
- override_acl(self.test_admin, {
|
|
|
|
|
|
+ override_acl(self.user, {
|
|
'can_warn_users': 1,
|
|
'can_warn_users': 1,
|
|
'can_see_other_users_warnings': 1,
|
|
'can_see_other_users_warnings': 1,
|
|
'can_delete_warnings': 2,
|
|
'can_delete_warnings': 2,
|
|
@@ -230,13 +222,13 @@ class DeleteWarningTests(WarningTestCase):
|
|
|
|
|
|
def test_no_permission(self):
|
|
def test_no_permission(self):
|
|
"""can't delete warnings"""
|
|
"""can't delete warnings"""
|
|
- override_acl(self.test_admin, {
|
|
|
|
|
|
+ override_acl(self.user, {
|
|
'can_warn_users': 1,
|
|
'can_warn_users': 1,
|
|
'can_see_other_users_warnings': 1,
|
|
'can_see_other_users_warnings': 1,
|
|
'can_delete_warnings': 0,
|
|
'can_delete_warnings': 0,
|
|
})
|
|
})
|
|
|
|
|
|
- warning = warn_user(self.test_admin, self.test_user)
|
|
|
|
|
|
+ warning = warn_user(self.user, self.test_user)
|
|
response = self.client.post(
|
|
response = self.client.post(
|
|
reverse('misago:delete_warning', kwargs={
|
|
reverse('misago:delete_warning', kwargs={
|
|
'user_slug': 'bob',
|
|
'user_slug': 'bob',
|
|
@@ -260,7 +252,7 @@ class DeleteWarningTests(WarningTestCase):
|
|
self.assertEqual(response.status_code, 403)
|
|
self.assertEqual(response.status_code, 403)
|
|
self.assertEqual(self.test_user.warnings.count(), 1)
|
|
self.assertEqual(self.test_user.warnings.count(), 1)
|
|
|
|
|
|
- warning = warn_user(self.test_admin, self.test_user)
|
|
|
|
|
|
+ warning = warn_user(self.user, self.test_user)
|
|
|
|
|
|
self.allow_delete_owned_warning()
|
|
self.allow_delete_owned_warning()
|
|
response = self.client.post(
|
|
response = self.client.post(
|
|
@@ -286,7 +278,7 @@ class DeleteWarningTests(WarningTestCase):
|
|
self.assertEqual(response.status_code, 302)
|
|
self.assertEqual(response.status_code, 302)
|
|
self.assertEqual(self.test_user.warnings.count(), 0)
|
|
self.assertEqual(self.test_user.warnings.count(), 0)
|
|
|
|
|
|
- warning = warn_user(self.test_admin, self.test_user)
|
|
|
|
|
|
+ warning = warn_user(self.user, self.test_user)
|
|
|
|
|
|
self.allow_delete_all_warnings()
|
|
self.allow_delete_all_warnings()
|
|
response = self.client.post(
|
|
response = self.client.post(
|