Просмотр исходного кода

Update misago.users tests to use new testing utilities

rafalp 6 лет назад
Родитель
Сommit
263dff949c

+ 4 - 12
misago/users/tests/test_joinip_profilefield.py

@@ -74,8 +74,8 @@ class JoinIpProfileFieldTests(AdminTestCase):
         self.assertContains(response, "Join IP")
         self.assertContains(response, "127.0.0.1")
 
-    @patch_user_acl
-    def test_field_hidden_no_permission(self, patch_user_acl):
+    @patch_user_acl({'can_see_users_ips': 0})
+    def test_field_hidden_no_permission(self):
         """field is hidden on user profile if user has no permission"""
         test_link = reverse(
             'misago:user-details',
@@ -85,10 +85,6 @@ class JoinIpProfileFieldTests(AdminTestCase):
             },
         )
 
-        patch_user_acl(self.user, {
-            'can_see_users_ips': 0
-        })
-
         response = self.client.get(test_link)
         self.assertNotContains(response, "IP address")
         self.assertNotContains(response, "Join IP")
@@ -133,15 +129,11 @@ class JoinIpProfileFieldTests(AdminTestCase):
             ]
         )
 
-    @patch_user_acl
-    def test_field_hidden_no_permission_json(self, patch_user_acl):
+    @patch_user_acl({'can_see_users_ips': 0})
+    def test_field_hidden_no_permission_json(self):
         """field is not included in display json if user has no permission"""
         test_link = reverse('misago:api:user-details', kwargs={'pk': self.user.pk})
 
-        patch_user_acl(self.user, {
-            'can_see_users_ips': 0
-        })
-
         response = self.client.get(test_link)
         self.assertEqual(response.json()['groups'], [])
 

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

@@ -17,13 +17,9 @@ class UsersListTestCase(AuthenticatedUserTestCase):
 
 
 class UsersListLanderTests(UsersListTestCase):
-    @patch_user_acl
-    def test_lander_no_permission(self, patch_user_acl):
+    @patch_user_acl({'can_browse_users_list': 0})
+    def test_lander_no_permission(self):
         """lander returns 403 if user has no permission"""
-        patch_user_acl(self.user, {
-            'can_browse_users_list': 0,
-        })
-
         response = self.client.get(reverse('misago:users'))
         self.assertEqual(response.status_code, 403)
 

+ 23 - 30
misago/users/tests/test_profile_views.py

@@ -182,46 +182,39 @@ class UserProfileViewsTests(AuthenticatedUserTestCase):
         self.assertContains(response, "TestUser")
         self.assertContains(response, "RenamedAdmin")
 
-    @patch_user_acl
-    def test_user_ban_details(self, patch_user_acl):
+    def test_user_ban_details(self):
         """user ban details page has no showstoppers"""
-        patch_user_acl(self.user, {
-            'can_see_ban_details': 0,
-        })
-
         test_user = UserModel.objects.create_user("Bob", "bob@bob.com", 'pass.123')
         link_kwargs = {'slug': test_user.slug, 'pk': test_user.pk}
 
-        response = self.client.get(reverse(
-            'misago:user-ban',
-            kwargs=link_kwargs,
-        ))
-        self.assertEqual(response.status_code, 404)
-
-        patch_user_acl(self.user, {
-            'can_see_ban_details': 1,
-        })
+        with patch_user_acl({'can_see_ban_details': 0}):
+            response = self.client.get(reverse(
+                'misago:user-ban',
+                kwargs=link_kwargs,
+            ))
+            self.assertEqual(response.status_code, 404)
 
-        response = self.client.get(reverse(
-            'misago:user-ban',
-            kwargs=link_kwargs,
-        ))
-        self.assertEqual(response.status_code, 404)
-
-        test_user.ban_cache.delete()
+        with patch_user_acl({'can_see_ban_details': 1}):
+            response = self.client.get(reverse(
+                'misago:user-ban',
+                kwargs=link_kwargs,
+            ))
+            self.assertEqual(response.status_code, 404)
 
         Ban.objects.create(
             banned_value=test_user.username,
             user_message="User m3ss4ge.",
             staff_message="Staff m3ss4ge.",
             is_checked=True,
-        )
+        )      
+        test_user.ban_cache.delete()
 
-        response = self.client.get(reverse(
-            'misago:user-ban',
-            kwargs=link_kwargs,
-        ))
+        with patch_user_acl({'can_see_ban_details': 1}):
+            response = self.client.get(reverse(
+                'misago:user-ban',
+                kwargs=link_kwargs,
+            ))
 
-        self.assertEqual(response.status_code, 200)
-        self.assertContains(response, 'User m3ss4ge')
-        self.assertContains(response, 'Staff m3ss4ge')
+            self.assertEqual(response.status_code, 200)
+            self.assertContains(response, 'User m3ss4ge')
+            self.assertContains(response, 'Staff m3ss4ge')

+ 26 - 28
misago/users/tests/test_search.py

@@ -14,11 +14,9 @@ class SearchApiTests(AuthenticatedUserTestCase):
 
         self.api_link = reverse('misago:api:search')
 
-    @patch_user_acl
-    def test_no_permission(self, patch_user_acl):
+    @patch_user_acl({'can_search_users': 0})
+    def test_no_permission(self):
         """api respects permission to search users"""
-        patch_user_acl(self.user, {'can_search_users': 0})
-
         response = self.client.get(self.api_link)
         self.assertEqual(response.status_code, 200)
         self.assertNotIn('users', [p['id'] for p in response.json()])
@@ -28,10 +26,10 @@ class SearchApiTests(AuthenticatedUserTestCase):
         response = self.client.get(self.api_link)
         self.assertEqual(response.status_code, 200)
 
-        reponse_json = response.json()
-        self.assertIn('users', [p['id'] for p in reponse_json])
+        response_json = response.json()
+        self.assertIn('users', [p['id'] for p in response_json])
 
-        for provider in reponse_json:
+        for provider in response_json:
             if provider['id'] == 'users':
                 self.assertEqual(provider['results']['results'], [])
 
@@ -40,10 +38,10 @@ class SearchApiTests(AuthenticatedUserTestCase):
         response = self.client.get('%s?q=' % self.api_link)
         self.assertEqual(response.status_code, 200)
 
-        reponse_json = response.json()
-        self.assertIn('users', [p['id'] for p in reponse_json])
+        response_json = response.json()
+        self.assertIn('users', [p['id'] for p in response_json])
 
-        for provider in reponse_json:
+        for provider in response_json:
             if provider['id'] == 'users':
                 self.assertEqual(provider['results']['results'], [])
 
@@ -52,10 +50,10 @@ class SearchApiTests(AuthenticatedUserTestCase):
         response = self.client.get('%s?q=%s' % (self.api_link, self.user.username[0]))
         self.assertEqual(response.status_code, 200)
 
-        reponse_json = response.json()
-        self.assertIn('users', [p['id'] for p in reponse_json])
+        response_json = response.json()
+        self.assertIn('users', [p['id'] for p in response_json])
 
-        for provider in reponse_json:
+        for provider in response_json:
             if provider['id'] == 'users':
                 results = provider['results']['results']
                 self.assertEqual(len(results), 1)
@@ -66,10 +64,10 @@ class SearchApiTests(AuthenticatedUserTestCase):
         response = self.client.get('%s?q=%s' % (self.api_link, self.user.username))
         self.assertEqual(response.status_code, 200)
 
-        reponse_json = response.json()
-        self.assertIn('users', [p['id'] for p in reponse_json])
+        response_json = response.json()
+        self.assertIn('users', [p['id'] for p in response_json])
 
-        for provider in reponse_json:
+        for provider in response_json:
             if provider['id'] == 'users':
                 results = provider['results']['results']
                 self.assertEqual(len(results), 1)
@@ -80,10 +78,10 @@ class SearchApiTests(AuthenticatedUserTestCase):
         response = self.client.get('%s?q=%s' % (self.api_link, self.user.username[-3:]))
         self.assertEqual(response.status_code, 200)
 
-        reponse_json = response.json()
-        self.assertIn('users', [p['id'] for p in reponse_json])
+        response_json = response.json()
+        self.assertIn('users', [p['id'] for p in response_json])
 
-        for provider in reponse_json:
+        for provider in response_json:
             if provider['id'] == 'users':
                 results = provider['results']['results']
                 self.assertEqual(len(results), 1)
@@ -94,10 +92,10 @@ class SearchApiTests(AuthenticatedUserTestCase):
         response = self.client.get('%s?q=BobBoberson' % self.api_link)
         self.assertEqual(response.status_code, 200)
 
-        reponse_json = response.json()
-        self.assertIn('users', [p['id'] for p in reponse_json])
+        response_json = response.json()
+        self.assertIn('users', [p['id'] for p in response_json])
 
-        for provider in reponse_json:
+        for provider in response_json:
             if provider['id'] == 'users':
                 self.assertEqual(provider['results']['results'], [])
 
@@ -113,10 +111,10 @@ class SearchApiTests(AuthenticatedUserTestCase):
         response = self.client.get('%s?q=DisabledUser' % self.api_link)
         self.assertEqual(response.status_code, 200)
 
-        reponse_json = response.json()
-        self.assertIn('users', [p['id'] for p in reponse_json])
+        response_json = response.json()
+        self.assertIn('users', [p['id'] for p in response_json])
 
-        for provider in reponse_json:
+        for provider in response_json:
             if provider['id'] == 'users':
                 self.assertEqual(provider['results']['results'], [])
 
@@ -127,10 +125,10 @@ class SearchApiTests(AuthenticatedUserTestCase):
         response = self.client.get('%s?q=DisabledUser' % self.api_link)
         self.assertEqual(response.status_code, 200)
 
-        reponse_json = response.json()
-        self.assertIn('users', [p['id'] for p in reponse_json])
+        response_json = response.json()
+        self.assertIn('users', [p['id'] for p in response_json])
 
-        for provider in reponse_json:
+        for provider in response_json:
             if provider['id'] == 'users':
                 results = provider['results']['results']
                 self.assertEqual(len(results), 1)

+ 6 - 18
misago/users/tests/test_user_avatar_api.py

@@ -351,26 +351,18 @@ class UserAvatarModerationTests(AuthenticatedUserTestCase):
 
         self.link = '/api/users/%s/moderate-avatar/' % self.other_user.pk
 
-    @patch_user_acl
-    def test_no_permission(self, patch_user_acl):
+    @patch_user_acl({'can_moderate_avatars': 0})
+    def test_no_permission(self):
         """no permission to moderate avatar"""
-        patch_user_acl(self.user, {
-            'can_moderate_avatars': 0,
-        })
-
         response = self.client.get(self.link)
         self.assertEqual(response.status_code, 403)
         self.assertEqual(response.json(), {
             "detail": "You can't moderate avatars.",
         })
 
-    @patch_user_acl
-    def test_moderate_avatar(self, patch_user_acl):
+    @patch_user_acl({'can_moderate_avatars': 1})
+    def test_moderate_avatar(self):
         """moderate avatar"""
-        patch_user_acl(self.user, {
-            'can_moderate_avatars': 1,
-        })
-
         response = self.client.get(self.link)
         self.assertEqual(response.status_code, 200)
 
@@ -478,12 +470,8 @@ class UserAvatarModerationTests(AuthenticatedUserTestCase):
             options['avatar_lock_staff_message'], other_user.avatar_lock_staff_message
         )
 
-    @patch_user_acl
-    def test_moderate_own_avatar(self, patch_user_acl):
+    @patch_user_acl({'can_moderate_avatars': 1})
+    def test_moderate_own_avatar(self):
         """moderate own avatar"""
-        patch_user_acl(self.user, {
-            'can_moderate_avatars': 1,
-        })
-
         response = self.client.get('/api/users/%s/moderate-avatar/' % self.user.pk)
         self.assertEqual(response.status_code, 200)

+ 9 - 16
misago/users/tests/test_user_details_api.py

@@ -43,8 +43,7 @@ class UserDetailsApiTests(AuthenticatedUserTestCase):
         self.assertEqual(response.status_code, 200)
         self.assertTrue(response.json()['edit'])
 
-    @patch_user_acl
-    def test_other_user(self, patch_user_acl):
+    def test_other_user(self):
         """api handles scenario when its other user looking at profile"""
         test_user = UserModel.objects.create_user('BobBoberson', 'bob@test.com', 'bob123456')
 
@@ -56,22 +55,16 @@ class UserDetailsApiTests(AuthenticatedUserTestCase):
         )
 
         # moderator has permission to edit details
-        patch_user_acl(self.user, {
-            'can_moderate_profile_details': True,
-        })
-
-        response = self.client.get(api_link)
-        self.assertEqual(response.status_code, 200)
-        self.assertTrue(response.json()['edit'])
+        with patch_user_acl(self.user, {'can_moderate_profile_details': True}):
+            response = self.client.get(api_link)
+            self.assertEqual(response.status_code, 200)
+            self.assertTrue(response.json()['edit'])
 
         # non-moderator has no permission to edit details
-        patch_user_acl(self.user, {
-            'can_moderate_profile_details': False,
-        })
-
-        response = self.client.get(api_link)
-        self.assertEqual(response.status_code, 200)
-        self.assertFalse(response.json()['edit'])
+        with patch_user_acl(self.user, {'can_moderate_profile_details': False}):
+            response = self.client.get(api_link)
+            self.assertEqual(response.status_code, 200)
+            self.assertFalse(response.json()['edit'])
 
     def test_nonexistant_user(self):
         """api handles nonexistant users"""

+ 7 - 14
misago/users/tests/test_user_editdetails_api.py

@@ -32,8 +32,7 @@ class UserEditDetailsApiTests(AuthenticatedUserTestCase):
         response = self.client.get(self.api_link)
         self.assertEqual(response.status_code, 200)
 
-    @patch_user_acl
-    def test_other_user(self, patch_user_acl):
+    def test_other_user(self):
         """api handles scenario when its other user looking at profile"""
         test_user = UserModel.objects.create_user('BobBoberson', 'bob@test.com', 'bob123456')
 
@@ -45,20 +44,14 @@ class UserEditDetailsApiTests(AuthenticatedUserTestCase):
         )
 
         # moderator has permission to edit details
-        patch_user_acl(self.user, {
-            'can_moderate_profile_details': True,
-        })
-
-        response = self.client.get(api_link)
-        self.assertEqual(response.status_code, 200)
+        with patch_user_acl(self.user, {'can_moderate_profile_details': True}):
+            response = self.client.get(api_link)
+            self.assertEqual(response.status_code, 200)
 
         # non-moderator has no permission to edit details
-        patch_user_acl(self.user, {
-            'can_moderate_profile_details': False,
-        })
-
-        response = self.client.get(api_link)
-        self.assertEqual(response.status_code, 403)
+        with patch_user_acl(self.user, {'can_moderate_profile_details': False}):
+            response = self.client.get(api_link)
+            self.assertEqual(response.status_code, 403)
 
     def test_nonexistant_user(self):
         """api handles nonexistant users"""

+ 12 - 36
misago/users/tests/test_user_signature_api.py

@@ -9,26 +9,18 @@ class UserSignatureTests(AuthenticatedUserTestCase):
         super().setUp()
         self.link = '/api/users/%s/signature/' % self.user.pk
 
-    @patch_user_acl
-    def test_signature_no_permission(self, patch_user_acl):
+    @patch_user_acl({'can_have_signature': 0})
+    def test_signature_no_permission(self):
         """edit signature api with no ACL returns 403"""
-        patch_user_acl(self.user, {
-            'can_have_signature': 0,
-        })
-
         response = self.client.get(self.link)
         self.assertEqual(response.status_code, 403)
         self.assertEqual(response.json(), {
             "detail": "You don't have permission to change signature.",
         })
 
-    @patch_user_acl
-    def test_signature_locked(self, patch_user_acl):
+    @patch_user_acl({'can_have_signature': 1})
+    def test_signature_locked(self):
         """locked edit signature returns 403"""
-        patch_user_acl(self.user, {
-            'can_have_signature': 1,
-        })
-
         self.user.is_signature_locked = True
         self.user.signature_lock_user_message = 'Your siggy is banned.'
         self.user.save()
@@ -40,13 +32,9 @@ class UserSignatureTests(AuthenticatedUserTestCase):
             "reason": "<p>Your siggy is banned.</p>",
         })
 
-    @patch_user_acl
-    def test_get_signature(self, patch_user_acl):
+    @patch_user_acl({'can_have_signature': 1})
+    def test_get_signature(self):
         """GET to api returns json with no signature"""
-        patch_user_acl(self.user, {
-            'can_have_signature': 1,
-        })
-
         self.user.is_signature_locked = False
         self.user.save()
 
@@ -55,13 +43,9 @@ class UserSignatureTests(AuthenticatedUserTestCase):
 
         self.assertFalse(response.json()['signature'])
 
-    @patch_user_acl
-    def test_post_empty_signature(self, patch_user_acl):
+    @patch_user_acl({'can_have_signature': 1})
+    def test_post_empty_signature(self):
         """empty POST empties user signature"""
-        patch_user_acl(self.user, {
-            'can_have_signature': 1,
-        })
-
         self.user.is_signature_locked = False
         self.user.save()
 
@@ -75,13 +59,9 @@ class UserSignatureTests(AuthenticatedUserTestCase):
 
         self.assertFalse(response.json()['signature'])
 
-    @patch_user_acl
-    def test_post_too_long_signature(self, patch_user_acl):
+    @patch_user_acl({'can_have_signature': 1})
+    def test_post_too_long_signature(self):
         """too long new signature errors"""
-        patch_user_acl(self.user, {
-            'can_have_signature': 1,
-        })
-
         self.user.is_signature_locked = False
         self.user.save()
 
@@ -96,13 +76,9 @@ class UserSignatureTests(AuthenticatedUserTestCase):
             "detail": "Signature is too long.",
         })
 
-    @patch_user_acl
-    def test_post_good_signature(self, patch_user_acl):
+    @patch_user_acl({'can_have_signature': 1})
+    def test_post_good_signature(self):
         """POST with good signature changes user signature"""
-        patch_user_acl(self.user, {
-            'can_have_signature': 1,
-        })
-
         self.user.is_signature_locked = False
         self.user.save()
 

+ 7 - 19
misago/users/tests/test_user_username_api.py

@@ -117,13 +117,9 @@ class UserUsernameModerationTests(AuthenticatedUserTestCase):
 
         self.link = '/api/users/%s/moderate-username/' % self.other_user.pk
 
-    @patch_user_acl
-    def test_no_permission(self, patch_user_acl):
-        """no permission to moderate avatar"""
-        patch_user_acl(self.user, {
-            'can_rename_users': 0,
-        })
-
+    @patch_user_acl({'can_rename_users': 0})
+    def test_no_permission(self):
+        """no permission to moderate username"""
         response = self.client.get(self.link)
         self.assertEqual(response.status_code, 403)
         self.assertEqual(response.json(), {
@@ -136,13 +132,9 @@ class UserUsernameModerationTests(AuthenticatedUserTestCase):
             "detail": "You can't rename users.",
         })
 
-    @patch_user_acl
-    def test_moderate_username(self, patch_user_acl):
+    @patch_user_acl({'can_rename_users': 1})
+    def test_moderate_username(self):
         """moderate username"""
-        patch_user_acl(self.user, {
-            'can_rename_users': 1,
-        })
-
         response = self.client.get(self.link)
         self.assertEqual(response.status_code, 200)
 
@@ -205,12 +197,8 @@ class UserUsernameModerationTests(AuthenticatedUserTestCase):
         self.assertEqual(options['username'], other_user.username)
         self.assertEqual(options['slug'], other_user.slug)
 
-    @patch_user_acl
-    def test_moderate_own_username(self, patch_user_acl):
+    @patch_user_acl({'can_rename_users': 1})
+    def test_moderate_own_username(self):
         """moderate own username"""
-        patch_user_acl(self.user, {
-            'can_rename_users': 1,
-        })
-
         response = self.client.get('/api/users/%s/moderate-username/' % self.user.pk)
         self.assertEqual(response.status_code, 200)

+ 10 - 23
misago/users/tests/test_usernamechanges_api.py

@@ -7,44 +7,33 @@ class UsernameChangesApiTests(AuthenticatedUserTestCase):
         super().setUp()
         self.link = '/api/username-changes/'
 
-    @patch_user_acl
-    def test_user_can_always_see_his_name_changes(self, patch_user_acl):
+    @patch_user_acl({'can_see_users_name_history': False})
+    def test_user_can_always_see_his_name_changes(self):
         """list returns own username changes"""
         self.user.set_username('NewUsername', self.user)
-
-        patch_user_acl(self.user, {'can_see_users_name_history': False})
-
         response = self.client.get('%s?user=%s' % (self.link, self.user.pk))
         self.assertEqual(response.status_code, 200)
         self.assertContains(response, self.user.username)
 
-    @patch_user_acl
-    def test_list_handles_invalid_filter(self, patch_user_acl):
+    @patch_user_acl({'can_see_users_name_history': True})
+    def test_list_handles_invalid_filter(self):
         """list raises 404 for invalid filter"""
         self.user.set_username('NewUsername', self.user)
-
-        patch_user_acl(self.user, {'can_see_users_name_history': True})
-
         response = self.client.get('%s?user=abcd' % self.link)
         self.assertEqual(response.status_code, 404)
 
-    @patch_user_acl
-    def test_list_handles_nonexisting_user(self, patch_user_acl):
+    @patch_user_acl({'can_see_users_name_history': True})
+    def test_list_handles_nonexisting_user(self):
         """list raises 404 for invalid user id"""
         self.user.set_username('NewUsername', self.user)
-
-        patch_user_acl(self.user, {'can_see_users_name_history': True})
-
         response = self.client.get('%s?user=142141' % self.link)
         self.assertEqual(response.status_code, 404)
 
-    @patch_user_acl
-    def test_list_handles_search(self, patch_user_acl):
+    @patch_user_acl({'can_see_users_name_history': False})
+    def test_list_handles_search(self):
         """list returns found username changes"""
         self.user.set_username('NewUsername', self.user)
 
-        patch_user_acl(self.user, {'can_see_users_name_history': False})
-
         response = self.client.get('%s?user=%s&search=new' % (self.link, self.user.pk))
         self.assertEqual(response.status_code, 200)
         self.assertContains(response, self.user.username)
@@ -53,11 +42,9 @@ class UsernameChangesApiTests(AuthenticatedUserTestCase):
         self.assertEqual(response.status_code, 200)
         self.assertEqual(response.json()["count"], 0)
 
-    @patch_user_acl
-    def test_list_denies_permission(self, patch_user_acl):
+    @patch_user_acl({'can_see_users_name_history': False})
+    def test_list_denies_permission(self):
         """list denies permission for other user (or all) if no access"""
-        patch_user_acl(self.user, {'can_see_users_name_history': False})
-
         response = self.client.get('%s?user=%s' % (self.link, self.user.pk + 1))
         self.assertEqual(response.status_code, 403)
         self.assertEqual(response.json(), {

+ 48 - 90
misago/users/tests/test_users_api.py

@@ -421,13 +421,9 @@ class UserFollowTests(AuthenticatedUserTestCase):
             "detail": "You can't add yourself to followed.",
         })
 
-    @patch_user_acl
-    def test_cant_follow(self, patch_user_acl):
+    @patch_user_acl({'can_follow_users': 0})
+    def test_cant_follow(self):
         """no permission to follow users"""
-        patch_user_acl(self.user, {
-            'can_follow_users': 0,
-        })
-
         response = self.client.post(self.link)
         self.assertEqual(response.status_code, 403)
         self.assertEqual(response.json(), {
@@ -477,31 +473,25 @@ class UserBanTests(AuthenticatedUserTestCase):
 
         self.link = '/api/users/%s/ban/' % self.other_user.pk
 
-    @patch_user_acl
-    def test_no_permission(self, patch_user_acl):
+    @patch_user_acl({'can_see_ban_details': 0})
+    def test_no_permission(self):
         """user has no permission to access ban"""
-        patch_user_acl(self.user, {'can_see_ban_details': 0})
-
         response = self.client.get(self.link)
         self.assertEqual(response.status_code, 403)
         self.assertEqual(response.json(), {
             "detail": "You can't see users bans details.",
         })
 
-    @patch_user_acl
-    def test_no_ban(self, patch_user_acl):
+    @patch_user_acl({'can_see_ban_details': 1})
+    def test_no_ban(self):
         """api returns empty json"""
-        patch_user_acl(self.user, {'can_see_ban_details': 1})
-
         response = self.client.get(self.link)
         self.assertEqual(response.status_code, 200)
         self.assertEqual(response.json(), {})
 
-    @patch_user_acl
-    def test_ban_details(self, patch_user_acl):
+    @patch_user_acl({'can_see_ban_details': 1})
+    def test_ban_details(self):
         """api returns ban json"""
-        patch_user_acl(self.user, {'can_see_ban_details': 1})
-
         Ban.objects.create(
             check_type=Ban.USERNAME,
             banned_value=self.other_user.username,
@@ -608,32 +598,24 @@ class UserDeleteTests(AuthenticatedUserTestCase):
         self.other_user.threads = 1
         self.other_user.save()
 
-    @patch_user_acl
-    def test_delete_no_permission(self, patch_user_acl):
+    @patch_user_acl({
+        'can_delete_users_newer_than': 0,
+        'can_delete_users_with_less_posts_than': 0,
+    })
+    def test_delete_no_permission(self):
         """raises 403 error when no permission to delete"""
-        patch_user_acl(
-            self.user, {
-                'can_delete_users_newer_than': 0,
-                'can_delete_users_with_less_posts_than': 0,
-            }
-        )
-
         response = self.client.post(self.link)
         self.assertEqual(response.status_code, 403)
         self.assertEqual(response.json(), {
             'detail': "You can't delete users.",
         })
 
-    @patch_user_acl
-    def test_delete_too_many_posts(self, patch_user_acl):
+    @patch_user_acl({
+        'can_delete_users_newer_than': 0,
+        'can_delete_users_with_less_posts_than': 5,
+    })
+    def test_delete_too_many_posts(self):
         """raises 403 error when user has too many posts"""
-        patch_user_acl(
-            self.user, {
-                'can_delete_users_newer_than': 0,
-                'can_delete_users_with_less_posts_than': 5,
-            }
-        )
-
         self.other_user.posts = 6
         self.other_user.save()
 
@@ -643,16 +625,12 @@ class UserDeleteTests(AuthenticatedUserTestCase):
             'detail': "You can't delete users that made more than 5 posts.",
         })
 
-    @patch_user_acl
-    def test_delete_too_old_member(self, patch_user_acl):
+    @patch_user_acl({
+        'can_delete_users_newer_than': 5,
+        'can_delete_users_with_less_posts_than': 0,
+    })
+    def test_delete_too_old_member(self):
         """raises 403 error when user is too old"""
-        patch_user_acl(
-            self.user, {
-                'can_delete_users_newer_than': 5,
-                'can_delete_users_with_less_posts_than': 0,
-            }
-        )
-
         self.other_user.joined_on -= timedelta(days=6)
         self.other_user.save()
 
@@ -663,32 +641,24 @@ class UserDeleteTests(AuthenticatedUserTestCase):
             'detail': "You can't delete users that are members for more than 5 days.",
         })
 
-    @patch_user_acl
-    def test_delete_self(self, patch_user_acl):
+    @patch_user_acl({
+        'can_delete_users_newer_than': 10,
+        'can_delete_users_with_less_posts_than': 10,
+    })
+    def test_delete_self(self):
         """raises 403 error when attempting to delete oneself"""
-        patch_user_acl(
-            self.user, {
-                'can_delete_users_newer_than': 10,
-                'can_delete_users_with_less_posts_than': 10,
-            }
-        )
-
         response = self.client.post('/api/users/%s/delete/' % self.user.pk)
         self.assertEqual(response.status_code, 403)
         self.assertEqual(response.json(), {
             'detail': "You can't delete your account.",
         })
 
-    @patch_user_acl
-    def test_delete_admin(self, patch_user_acl):
+    @patch_user_acl({
+        'can_delete_users_newer_than': 10,
+        'can_delete_users_with_less_posts_than': 10,
+    })
+    def test_delete_admin(self):
         """raises 403 error when attempting to delete admin"""
-        patch_user_acl(
-            self.user, {
-                'can_delete_users_newer_than': 10,
-                'can_delete_users_with_less_posts_than': 10,
-            }
-        )
-
         self.other_user.is_staff = True
         self.other_user.save()
 
@@ -698,16 +668,12 @@ class UserDeleteTests(AuthenticatedUserTestCase):
             'detail': "You can't delete administrators.",
         })
 
-    @patch_user_acl
-    def test_delete_superadmin(self, patch_user_acl):
+    @patch_user_acl({
+        'can_delete_users_newer_than': 10,
+        'can_delete_users_with_less_posts_than': 10,
+    })
+    def test_delete_superadmin(self):
         """raises 403 error when attempting to delete superadmin"""
-        patch_user_acl(
-            self.user, {
-                'can_delete_users_newer_than': 10,
-                'can_delete_users_with_less_posts_than': 10,
-            }
-        )
-
         self.other_user.is_superuser = True
         self.other_user.save()
 
@@ -717,16 +683,12 @@ class UserDeleteTests(AuthenticatedUserTestCase):
             'detail': "You can't delete administrators.",
         })
 
-    @patch_user_acl
-    def test_delete_with_content(self, patch_user_acl):
+    @patch_user_acl({
+        'can_delete_users_newer_than': 10,
+        'can_delete_users_with_less_posts_than': 10,
+    })
+    def test_delete_with_content(self):
         """returns 200 and deletes user with content"""
-        patch_user_acl(
-            self.user, {
-                'can_delete_users_newer_than': 10,
-                'can_delete_users_with_less_posts_than': 10,
-            }
-        )
-
         response = self.client.post(
             self.link,
             json.dumps({
@@ -742,16 +704,12 @@ class UserDeleteTests(AuthenticatedUserTestCase):
         self.assertEqual(Thread.objects.count(), self.threads)
         self.assertEqual(Post.objects.count(), self.posts)
 
-    @patch_user_acl
-    def test_delete_without_content(self, patch_user_acl):
+    @patch_user_acl({
+        'can_delete_users_newer_than': 10,
+        'can_delete_users_with_less_posts_than': 10,
+    })
+    def test_delete_without_content(self):
         """returns 200 and deletes user without content"""
-        patch_user_acl(
-            self.user, {
-                'can_delete_users_newer_than': 10,
-                'can_delete_users_with_less_posts_than': 10,
-            }
-        )
-
         response = self.client.post(
             self.link,
             json.dumps({