Rafał Pitoń 10 years ago
parent
commit
7d9865f19f

+ 1 - 1
misago/acl/testutils.py

@@ -29,6 +29,6 @@ def override_acl(user, new_acl):
 
     user._acl_cache = final_cache
     user.acl_key = md5(unicode(user.pk)).hexdigest()[:8]
-    user.save()
+    user.save(update_fields=['acl_key'])
 
     threadstore.set('acl_%s' % user.acl_key, final_cache)

+ 13 - 13
misago/threads/tests/test_editor_view.py

@@ -2,13 +2,13 @@ from django.conf import settings
 from django.core.urlresolvers import reverse
 
 from misago.acl.testutils import override_acl
-from misago.admin.testutils import AdminTestCase
 from misago.forums.models import Forum
+from misago.users.testutils import AuthenticatedUserTestCase
 
 from misago.threads.models import Thread, Post
 
 
-class StartThreadFormTests(AdminTestCase):
+class StartThreadFormTests(AuthenticatedUserTestCase):
     def setUp(self):
         super(StartThreadFormTests, self).setUp()
 
@@ -18,39 +18,39 @@ class StartThreadFormTests(AdminTestCase):
         })
 
     def allow_start_thread(self):
-        forums_acl = self.test_admin.acl
+        forums_acl = self.user.acl
         forums_acl['visible_forums'].append(self.forum.pk)
         forums_acl['forums'][self.forum.pk] = {
             'can_see': 1,
             'can_browse': 1,
             'can_start_threads': 1,
         }
-        override_acl(self.test_admin, forums_acl)
+        override_acl(self.user, forums_acl)
 
     def test_cant_see(self):
         """has no permission to see forum"""
-        forums_acl = self.test_admin.acl
+        forums_acl = self.user.acl
         forums_acl['visible_forums'].remove(self.forum.pk)
         forums_acl['forums'][self.forum.pk] = {
             'can_see': 0,
             'can_browse': 0,
             'can_start_threads': 1,
         }
-        override_acl(self.test_admin, forums_acl)
+        override_acl(self.user, forums_acl)
 
         response = self.client.get(self.link)
         self.assertEqual(response.status_code, 404)
 
     def test_cant_browse(self):
         """has no permission to browse forum"""
-        forums_acl = self.test_admin.acl
+        forums_acl = self.user.acl
         forums_acl['visible_forums'].append(self.forum.pk)
         forums_acl['forums'][self.forum.pk] = {
             'can_see': 1,
             'can_browse': 0,
             'can_start_threads': 1,
         }
-        override_acl(self.test_admin, forums_acl)
+        override_acl(self.user, forums_acl)
 
         response = self.client.get(self.link)
         self.assertEqual(response.status_code, 403)
@@ -60,14 +60,14 @@ class StartThreadFormTests(AdminTestCase):
         self.forum.is_closed = True
         self.forum.save()
 
-        forums_acl = self.test_admin.acl
+        forums_acl = self.user.acl
         forums_acl['visible_forums'].append(self.forum.pk)
         forums_acl['forums'][self.forum.pk] = {
             'can_see': 1,
             'can_browse': 1,
             'can_start_threads': 1,
         }
-        override_acl(self.test_admin, forums_acl)
+        override_acl(self.user, forums_acl)
 
         response = self.client.get(self.link)
         self.assertEqual(response.status_code, 403)
@@ -93,11 +93,11 @@ class StartThreadFormTests(AdminTestCase):
         })
         self.assertEqual(response.status_code, 302)
 
-        updated_admin = self.test_admin.lock()
+        updated_admin = self.user.lock()
         self.assertEqual(updated_admin.threads, 1)
         self.assertEqual(updated_admin.posts, 1)
 
-        last_thread = self.test_admin.thread_set.all()[:1][0]
+        last_thread = self.user.thread_set.all()[:1][0]
         self.assertEqual(last_thread.forum_id, self.forum.pk)
         self.assertEqual(last_thread.title, "Hello, I am test thread!")
         self.assertEqual(last_thread.starter_id, updated_admin.id)
@@ -107,7 +107,7 @@ class StartThreadFormTests(AdminTestCase):
         self.assertEqual(last_thread.last_poster_name, updated_admin.username)
         self.assertEqual(last_thread.last_poster_slug, updated_admin.slug)
 
-        last_post = self.test_admin.post_set.all()[:1][0]
+        last_post = self.user.post_set.all()[:1][0]
         self.assertEqual(last_post.forum_id, self.forum.pk)
         self.assertEqual(last_post.original, 'Lorem ipsum dolor met!')
         self.assertEqual(last_post.poster_id, updated_admin.id)

+ 6 - 6
misago/users/tests/test_lists_views.py

@@ -2,15 +2,15 @@ from django.contrib.auth import get_user_model
 from django.core.urlresolvers import reverse
 
 from misago.acl.testutils import override_acl
-from misago.admin.testutils import AdminTestCase
 
 from misago.users.models import Rank
+from misago.users.testutils import AuthenticatedUserTestCase
 
 
-class UsersListTestCase(AdminTestCase):
+class UsersListTestCase(AuthenticatedUserTestCase):
     def setUp(self):
         super(UsersListTestCase, self).setUp()
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_browse_users_list': 1,
         })
 
@@ -18,7 +18,7 @@ class UsersListTestCase(AdminTestCase):
 class UsersListLanderTests(UsersListTestCase):
     def test_lander_no_permission(self):
         """lander returns 403 if user has no permission"""
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_browse_users_list': 0,
         })
 
@@ -59,7 +59,7 @@ class ActivePostersTests(UsersListTestCase):
 class OnlineUsersTests(UsersListTestCase):
     def test_no_permission(self):
         """online list returns 403 if user has no permission"""
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_browse_users_list': 1,
             'can_see_users_online_list': 0,
         })
@@ -69,7 +69,7 @@ class OnlineUsersTests(UsersListTestCase):
 
     def test_with_permission(self):
         """online list returns 200 if user has permission"""
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_browse_users_list': 1,
             'can_see_users_online_list': 1,
         })

+ 14 - 14
misago/users/tests/test_moderation_views.py

@@ -2,12 +2,12 @@ from django.contrib.auth import get_user_model
 from django.core.urlresolvers import reverse
 
 from misago.acl.testutils import override_acl
-from misago.admin.testutils import AdminTestCase
 
 from misago.users.models import Ban
+from misago.users.testutils import AuthenticatedUserTestCase
 
 
-class UserModerationTestCase(AdminTestCase):
+class UserModerationTestCase(AuthenticatedUserTestCase):
     def setUp(self):
         super(UserModerationTestCase, self).setUp()
         self.test_user = get_user_model().objects.create_user(
@@ -17,13 +17,13 @@ class UserModerationTestCase(AdminTestCase):
 
 class RenameUserTests(UserModerationTestCase):
     def allow_rename(self):
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_rename_users': 1,
         })
 
     def test_no_rename_permission(self):
         """user with no permission fails to rename other user"""
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_rename_users': 0,
         })
 
@@ -54,13 +54,13 @@ class RenameUserTests(UserModerationTestCase):
 
 class ModerateAvatarTests(UserModerationTestCase):
     def allow_avatar_mod(self):
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_moderate_avatars': 1,
         })
 
     def test_no_avatar_mod_permission(self):
         """user with no permission fails to mod other user avatar"""
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_moderate_avatars': 0,
         })
 
@@ -106,13 +106,13 @@ class ModerateAvatarTests(UserModerationTestCase):
 
 class ModerateSignatureTests(UserModerationTestCase):
     def allow_signature_mod(self):
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_moderate_signatures': 1,
         })
 
     def test_no_signature_mod_permission(self):
         """user with no permission fails to mod other user signature"""
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_moderate_signatures': 0,
         })
 
@@ -160,14 +160,14 @@ class ModerateSignatureTests(UserModerationTestCase):
 
 class BanUserTests(UserModerationTestCase):
     def allow_ban_user(self):
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_ban_users': 1,
             'max_ban_length': 0,
         })
 
     def test_no_ban_permission(self):
         """user with no permission fails to ban other user"""
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_ban_users': 0,
         })
 
@@ -199,14 +199,14 @@ class BanUserTests(UserModerationTestCase):
 
 class LiftUserBanTests(UserModerationTestCase):
     def allow_lift_ban(self):
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_lift_bans': 1,
             'max_lifted_ban_length': 0,
         })
 
     def test_no_lift_ban_permission(self):
         """user with no permission fails to lift user ban"""
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_lift_bans': 0,
             'max_lifted_ban_length': 0,
         })
@@ -240,7 +240,7 @@ class LiftUserBanTests(UserModerationTestCase):
 class DeleteUserTests(UserModerationTestCase):
     def test_no_delete_permission(self):
         """user with no permission fails to delete other user"""
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_delete_users_newer_than': 0,
             'can_delete_users_with_less_posts_than': 0,
         })
@@ -253,7 +253,7 @@ class DeleteUserTests(UserModerationTestCase):
 
     def test_delete_user(self):
         """user with permission deletes other user"""
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_delete_users_newer_than': 5,
             'can_delete_users_with_less_posts_than': 5,
         })

+ 18 - 18
misago/users/tests/test_profile_views.py

@@ -2,22 +2,22 @@ from django.contrib.auth import get_user_model
 from django.core.urlresolvers import reverse
 
 from misago.acl.testutils import override_acl
-from misago.admin.testutils import AdminTestCase
 
 from misago.users.models import Ban
+from misago.users.testutils import AuthenticatedUserTestCase
 
 
-class UserProfileViewsTests(AdminTestCase):
+class UserProfileViewsTests(AuthenticatedUserTestCase):
     def setUp(self):
         super(UserProfileViewsTests, self).setUp()
         self.link_kwargs = {
-            'user_slug': self.test_admin.slug,
-            'user_id': self.test_admin.pk
+            'user_slug': self.user.slug,
+            'user_id': self.user.pk
         }
 
     def test_outdated_slugs(self):
         """user profile view redirects to valid slig"""
-        invalid_kwargs = {'user_slug': 'baww', 'user_id': self.test_admin.pk}
+        invalid_kwargs = {'user_slug': 'baww', 'user_id': self.user.pk}
         response = self.client.get(reverse('misago:user_posts',
                                            kwargs=invalid_kwargs))
 
@@ -53,7 +53,7 @@ class UserProfileViewsTests(AdminTestCase):
         for i in xrange(10):
             user_data = ("Follower%s" % i, "foll%s@test.com" % i, "Pass.123")
             followers.append(User.objects.create_user(*user_data))
-            self.test_admin.followed_by.add(followers[-1])
+            self.user.followed_by.add(followers[-1])
 
         response = self.client.get(reverse('misago:user_followers',
                                            kwargs=self.link_kwargs))
@@ -75,7 +75,7 @@ class UserProfileViewsTests(AdminTestCase):
         for i in xrange(10):
             user_data = ("Follower%s" % i, "foll%s@test.com" % i, "Pass.123")
             followers.append(User.objects.create_user(*user_data))
-            followers[-1].followed_by.add(self.test_admin)
+            followers[-1].followed_by.add(self.user)
 
         response = self.client.get(reverse('misago:user_follows',
                                            kwargs=self.link_kwargs))
@@ -94,7 +94,7 @@ class UserProfileViewsTests(AdminTestCase):
                                             kwargs=link_kwargs))
         self.assertEqual(response.status_code, 302)
 
-        test_admin = User.objects.get(id=self.test_admin.pk)
+        test_admin = User.objects.get(id=self.user.pk)
         self.assertEqual(test_admin.following, 1)
 
         test_user = User.objects.get(id=test_user.pk)
@@ -106,7 +106,7 @@ class UserProfileViewsTests(AdminTestCase):
                                             kwargs=link_kwargs))
         self.assertEqual(response.status_code, 302)
 
-        test_admin = User.objects.get(id=self.test_admin.pk)
+        test_admin = User.objects.get(id=self.user.pk)
         self.assertEqual(test_admin.following, 0)
 
         test_user = User.objects.get(id=test_user.pk)
@@ -124,12 +124,12 @@ class UserProfileViewsTests(AdminTestCase):
         response = self.client.post(reverse('misago:block_user',
                                             kwargs=link_kwargs))
         self.assertEqual(response.status_code, 302)
-        self.assertIn(self.test_admin, test_user.blocked_by.all())
+        self.assertIn(self.user, test_user.blocked_by.all())
 
         response = self.client.post(reverse('misago:block_user',
                                             kwargs=link_kwargs))
         self.assertEqual(response.status_code, 302)
-        self.assertNotIn(self.test_admin, test_user.blocked_by.all())
+        self.assertNotIn(self.user, test_user.blocked_by.all())
 
     def test_user_name_history_list(self):
         """user name changes history list has no showstoppers"""
@@ -138,20 +138,20 @@ class UserProfileViewsTests(AdminTestCase):
         self.assertEqual(response.status_code, 200)
         self.assertIn('Your username was never changed', response.content)
 
-        self.test_admin.set_username('RenamedAdmin')
-        self.test_admin.save()
-        self.test_admin.set_username('TestAdmin')
-        self.test_admin.save()
+        self.user.set_username('RenamedAdmin')
+        self.user.save()
+        self.user.set_username('TestUser')
+        self.user.save()
 
         response = self.client.get(reverse('misago:user_name_history',
                                            kwargs=self.link_kwargs))
         self.assertEqual(response.status_code, 200)
-        self.assertIn("TestAdmin</strong> changed name to <strong>Renamed",
+        self.assertIn("TestUser</strong> changed name to <strong>Renamed",
                       response.content)
 
     def test_user_ban(self):
         """user ban details page has no showstoppers"""
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_see_ban_details': 0,
         })
 
@@ -163,7 +163,7 @@ class UserProfileViewsTests(AdminTestCase):
                                            kwargs=link_kwargs))
         self.assertEqual(response.status_code, 404)
 
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_see_ban_details': 1,
         })
 

+ 37 - 33
misago/users/tests/test_usercp_views.py

@@ -5,14 +5,14 @@ from django.core import mail
 from django.core.urlresolvers import reverse
 
 from misago.acl.testutils import override_acl
-from misago.admin.testutils import AdminTestCase
 from misago.conf import settings
 from misago.core import threadstore
 
 from misago.users.avatars import store
+from misago.users.testutils import AuthenticatedUserTestCase
 
 
-class ChangeForumOptionsTests(AdminTestCase):
+class ChangeForumOptionsTests(AuthenticatedUserTestCase):
     def setUp(self):
         super(ChangeForumOptionsTests, self).setUp()
         self.view_link = reverse('misago:usercp_change_forum_options')
@@ -34,14 +34,14 @@ class ChangeForumOptionsTests(AdminTestCase):
 
         self.assertEqual(response.status_code, 302)
 
-        test_user = get_user_model().objects.get(pk=self.test_admin.pk)
+        test_user = get_user_model().objects.get(pk=self.user.pk)
         self.assertEqual(test_user.timezone, 'Asia/Qatar')
         self.assertEqual(test_user.is_hiding_presence, 1)
         self.assertEqual(test_user.subscribe_to_started_threads, 0)
         self.assertEqual(test_user.subscribe_to_replied_threads, 1)
 
 
-class ChangeAvatarTests(AdminTestCase):
+class ChangeAvatarTests(AuthenticatedUserTestCase):
     def setUp(self):
         super(ChangeAvatarTests, self).setUp()
         self.view_link = reverse('misago:usercp_change_avatar')
@@ -53,9 +53,9 @@ class ChangeAvatarTests(AdminTestCase):
 
     def test_avatar_locked(self):
         """usercp locked change avatar view returns 200"""
-        self.test_admin.is_avatar_locked = True
-        self.test_admin.avatar_lock_user_message = 'Your avatar is banned.'
-        self.test_admin.save()
+        self.user.is_avatar_locked = True
+        self.user.avatar_lock_user_message = 'Your avatar is banned.'
+        self.user.save()
 
         response = self.client.get(self.view_link)
         self.assertEqual(response.status_code, 200)
@@ -63,8 +63,8 @@ class ChangeAvatarTests(AdminTestCase):
 
     def test_set_gravatar(self):
         """view sets user gravatar"""
-        self.test_admin.set_email('kontakt@rpiton.com')
-        self.test_admin.save()
+        self.user.set_email('kontakt@rpiton.com')
+        self.user.save()
 
         response = self.client.post(self.view_link, data={'dl-gravatar': '1'})
         self.assertEqual(response.status_code, 302)
@@ -73,8 +73,8 @@ class ChangeAvatarTests(AdminTestCase):
         self.assertEqual(response.status_code, 200)
         self.assertIn('Gravatar was downloaded', response.content)
 
-        self.test_admin.set_email('test@test.com')
-        self.test_admin.save()
+        self.user.set_email('test@test.com')
+        self.user.save()
 
         self.client.post(self.view_link, data={'dl-gravatar': '1'})
         response = self.client.get(self.view_link)
@@ -91,13 +91,13 @@ class ChangeAvatarTests(AdminTestCase):
         self.assertIn('New avatar based', response.content)
 
 
-class AvatarUploadTests(AdminTestCase):
+class AvatarUploadTests(AuthenticatedUserTestCase):
     def setUp(self):
         super(AvatarUploadTests, self).setUp()
-        store.delete_avatar(self.test_admin)
+        store.delete_avatar(self.user)
 
     def tearDown(self):
-        store.delete_avatar(self.test_admin)
+        store.delete_avatar(self.user)
 
     def test_upload_form_view(self):
         """upload view renders on get"""
@@ -126,8 +126,8 @@ class AvatarUploadTests(AdminTestCase):
                                         **ajax_header)
             self.assertEqual(response.status_code, 200)
 
-            avatar_dir = store.get_existing_avatars_dir(self.test_admin)
-            avatar = path('%s/%s_tmp.png' % (avatar_dir, self.test_admin.pk))
+            avatar_dir = store.get_existing_avatars_dir(self.user)
+            avatar = path('%s/%s_tmp.png' % (avatar_dir, self.user.pk))
             self.assertTrue(avatar.exists())
             self.assertTrue(avatar.isfile())
 
@@ -149,16 +149,16 @@ class AvatarUploadTests(AdminTestCase):
             response = self.client.post(crop_link, data={'crop': test_crop})
             self.assertEqual(response.status_code, 302)
 
-            avatar_dir = store.get_existing_avatars_dir(self.test_admin)
-            avatar = path('%s/%s_tmp.png' % (avatar_dir, self.test_admin.pk))
+            avatar_dir = store.get_existing_avatars_dir(self.user)
+            avatar = path('%s/%s_tmp.png' % (avatar_dir, self.user.pk))
             self.assertFalse(avatar.exists())
 
-            avatar = path('%s/%s_org.png' % (avatar_dir, self.test_admin.pk))
+            avatar = path('%s/%s_org.png' % (avatar_dir, self.user.pk))
             self.assertTrue(avatar.exists())
             self.assertTrue(avatar.isfile())
 
 
-class AvatarGalleryTests(AdminTestCase):
+class AvatarGalleryTests(AuthenticatedUserTestCase):
     def setUp(self):
         super(AvatarGalleryTests, self).setUp()
         self.view_link = reverse('misago:usercp_avatar_galleries')
@@ -185,14 +185,14 @@ class AvatarGalleryTests(AdminTestCase):
         self.assertIn('Incorrect image', response.content)
 
 
-class EditSignatureTests(AdminTestCase):
+class EditSignatureTests(AuthenticatedUserTestCase):
     def setUp(self):
         super(EditSignatureTests, self).setUp()
         self.view_link = reverse('misago:usercp_edit_signature')
 
     def test_signature_no_permission(self):
         """edit signature view with no ACL returns 404"""
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_have_signature': 0,
         })
 
@@ -201,13 +201,13 @@ class EditSignatureTests(AdminTestCase):
 
     def test_signature_locked(self):
         """locked edit signature view returns 200"""
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_have_signature': 1,
         })
 
-        self.test_admin.is_signature_locked = True
-        self.test_admin.signature_lock_user_message = 'Your siggy is banned.'
-        self.test_admin.save()
+        self.user.is_signature_locked = True
+        self.user.signature_lock_user_message = 'Your siggy is banned.'
+        self.user.save()
 
         response = self.client.get(self.view_link)
         self.assertEqual(response.status_code, 200)
@@ -215,22 +215,26 @@ class EditSignatureTests(AdminTestCase):
 
     def test_signature_change(self):
         """GET to usercp change options view returns 200"""
-        override_acl(self.test_admin, {
+        override_acl(self.user, {
             'can_have_signature': 1,
         })
 
-        self.test_admin.is_signature_locked = False
-        self.test_admin.save()
+        self.user.is_signature_locked = False
+        self.user.save()
 
         response = self.client.post(self.view_link,
             data={'signature': 'Hello siggy!'})
         self.assertEqual(response.status_code, 302)
 
+        override_acl(self.user, {
+            'can_have_signature': 1,
+        })
+
         response = self.client.get(self.view_link)
         self.assertIn('<p>Hello siggy!</p>', response.content)
 
 
-class ChangeUsernameTests(AdminTestCase):
+class ChangeUsernameTests(AuthenticatedUserTestCase):
     def setUp(self):
         super(ChangeUsernameTests, self).setUp()
         self.view_link = reverse('misago:usercp_change_username')
@@ -247,7 +251,7 @@ class ChangeUsernameTests(AdminTestCase):
                                     data={'new_username': 'Boberson'})
         self.assertEqual(response.status_code, 302)
 
-        test_user = get_user_model().objects.get(pk=self.test_admin.pk)
+        test_user = get_user_model().objects.get(pk=self.user.pk)
         self.assertEqual(test_user.username, 'Boberson')
 
         response = self.client.get(self.view_link)
@@ -255,7 +259,7 @@ class ChangeUsernameTests(AdminTestCase):
         self.assertIn(test_user.username, response.content)
 
 
-class ChangeEmailPasswordTests(AdminTestCase):
+class ChangeEmailPasswordTests(AuthenticatedUserTestCase):
     def setUp(self):
         super(ChangeEmailPasswordTests, self).setUp()
         self.view_link = reverse('misago:usercp_change_email_password')
@@ -304,6 +308,6 @@ class ChangeEmailPasswordTests(AdminTestCase):
         self.assertEqual(response.status_code, 302)
 
         User = get_user_model()
-        test_user = User.objects.get(pk=self.test_admin.pk)
+        test_user = User.objects.get(pk=self.user.pk)
         self.assertFalse(test_user.check_password('Pass.123'))
         self.assertTrue(test_user.check_password('newpass123'))

+ 25 - 33
misago/users/tests/test_warnings_views.py

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