|
@@ -30,200 +30,6 @@ def test_list_renders_with_item(admin_client, users_admin_link, superuser):
|
|
|
class UserAdminTests(AdminTestCase):
|
|
|
AJAX_HEADER = {"HTTP_X_REQUESTED_WITH": "XMLHttpRequest"}
|
|
|
|
|
|
- def test_mass_request_data_download(self):
|
|
|
- """users list requests data download for multiple users"""
|
|
|
- user_pks = []
|
|
|
- for i in range(10):
|
|
|
- test_user = create_test_user(
|
|
|
- "User%s" % i, "user%s@example.com" % i, requires_activation=1
|
|
|
- )
|
|
|
- user_pks.append(test_user.pk)
|
|
|
-
|
|
|
- response = self.client.post(
|
|
|
- reverse("misago:admin:users:accounts:index"),
|
|
|
- data={"action": "request_data_download", "selected_items": user_pks},
|
|
|
- )
|
|
|
- self.assertEqual(response.status_code, 302)
|
|
|
-
|
|
|
- self.assertEqual(
|
|
|
- DataDownload.objects.filter(user_id__in=user_pks).count(), len(user_pks)
|
|
|
- )
|
|
|
-
|
|
|
- def test_mass_request_data_download_avoid_excessive_downloads(self):
|
|
|
- """users list avoids excessive data download requests for multiple users"""
|
|
|
- user_pks = []
|
|
|
- for i in range(10):
|
|
|
- test_user = create_test_user(
|
|
|
- "User%s" % i, "user%s@example.com" % i, requires_activation=1
|
|
|
- )
|
|
|
- request_user_data_download(test_user)
|
|
|
- user_pks.append(test_user.pk)
|
|
|
-
|
|
|
- response = self.client.post(
|
|
|
- reverse("misago:admin:users:accounts:index"),
|
|
|
- data={"action": "v", "selected_items": user_pks},
|
|
|
- )
|
|
|
- self.assertEqual(response.status_code, 302)
|
|
|
-
|
|
|
- self.assertEqual(
|
|
|
- DataDownload.objects.filter(user_id__in=user_pks).count(), len(user_pks)
|
|
|
- )
|
|
|
-
|
|
|
- def test_mass_delete_accounts_self(self):
|
|
|
- """its impossible to delete oneself"""
|
|
|
- user_pks = [self.user.pk]
|
|
|
-
|
|
|
- response = self.client.post(
|
|
|
- reverse("misago:admin:users:accounts:index"),
|
|
|
- data={"action": "delete_accounts", "selected_items": user_pks},
|
|
|
- )
|
|
|
- self.assertEqual(response.status_code, 302)
|
|
|
-
|
|
|
- response = self.client.get(response["location"])
|
|
|
- self.assertContains(response, "delete yourself")
|
|
|
-
|
|
|
- def test_mass_delete_accounts_admin(self):
|
|
|
- """its impossible to delete admin account"""
|
|
|
- user_pks = []
|
|
|
- for i in range(10):
|
|
|
- test_user = create_test_user("User%s" % i, "user%s@example.com" % i)
|
|
|
- user_pks.append(test_user.pk)
|
|
|
-
|
|
|
- test_user.is_staff = True
|
|
|
- test_user.save()
|
|
|
-
|
|
|
- response = self.client.post(
|
|
|
- reverse("misago:admin:users:accounts:index"),
|
|
|
- data={"action": "delete_accounts", "selected_items": user_pks},
|
|
|
- )
|
|
|
- self.assertEqual(response.status_code, 302)
|
|
|
-
|
|
|
- response = self.client.get(response["location"])
|
|
|
- self.assertContains(response, "is admin and can")
|
|
|
- self.assertContains(response, "be deleted.")
|
|
|
-
|
|
|
- self.assertEqual(User.objects.count(), 11)
|
|
|
-
|
|
|
- def test_mass_delete_accounts_superadmin(self):
|
|
|
- """its impossible to delete superadmin account"""
|
|
|
- user_pks = []
|
|
|
- for i in range(10):
|
|
|
- test_user = create_test_user("User%s" % i, "user%s@example.com" % i)
|
|
|
- user_pks.append(test_user.pk)
|
|
|
-
|
|
|
- test_user.is_superuser = True
|
|
|
- test_user.save()
|
|
|
-
|
|
|
- response = self.client.post(
|
|
|
- reverse("misago:admin:users:accounts:index"),
|
|
|
- data={"action": "delete_accounts", "selected_items": user_pks},
|
|
|
- )
|
|
|
- self.assertEqual(response.status_code, 302)
|
|
|
-
|
|
|
- response = self.client.get(response["location"])
|
|
|
- self.assertContains(response, "is admin and can")
|
|
|
- self.assertContains(response, "be deleted.")
|
|
|
-
|
|
|
- self.assertEqual(User.objects.count(), 11)
|
|
|
-
|
|
|
- def test_mass_delete_accounts(self):
|
|
|
- """users list deletes users"""
|
|
|
- # create 10 users to delete
|
|
|
- user_pks = []
|
|
|
- for i in range(10):
|
|
|
- test_user = create_test_user(
|
|
|
- "User%s" % i, "user%s@example.com" % i, requires_activation=0
|
|
|
- )
|
|
|
- user_pks.append(test_user.pk)
|
|
|
-
|
|
|
- # create 10 more users that won't be deleted
|
|
|
- for i in range(10):
|
|
|
- test_user = create_test_user(
|
|
|
- "Weebl%s" % i, "weebl%s@test.com" % i, requires_activation=0
|
|
|
- )
|
|
|
-
|
|
|
- response = self.client.post(
|
|
|
- reverse("misago:admin:users:accounts:index"),
|
|
|
- data={"action": "delete_accounts", "selected_items": user_pks},
|
|
|
- )
|
|
|
- self.assertEqual(response.status_code, 302)
|
|
|
- self.assertEqual(User.objects.count(), 11)
|
|
|
-
|
|
|
- def test_mass_delete_all_self(self):
|
|
|
- """its impossible to delete oneself with content"""
|
|
|
- user_pks = [self.user.pk]
|
|
|
-
|
|
|
- response = self.client.post(
|
|
|
- reverse("misago:admin:users:accounts:index"),
|
|
|
- data={"action": "delete_all", "selected_items": user_pks},
|
|
|
- )
|
|
|
- self.assertEqual(response.status_code, 302)
|
|
|
-
|
|
|
- response = self.client.get(response["location"])
|
|
|
- self.assertContains(response, "delete yourself")
|
|
|
-
|
|
|
- def test_mass_delete_all_admin(self):
|
|
|
- """its impossible to delete admin account and content"""
|
|
|
- user_pks = []
|
|
|
- for i in range(10):
|
|
|
- test_user = create_test_user("User%s" % i, "user%s@example.com" % i)
|
|
|
- user_pks.append(test_user.pk)
|
|
|
-
|
|
|
- test_user.is_staff = True
|
|
|
- test_user.save()
|
|
|
-
|
|
|
- response = self.client.post(
|
|
|
- reverse("misago:admin:users:accounts:index"),
|
|
|
- data={"action": "delete_all", "selected_items": user_pks},
|
|
|
- )
|
|
|
- self.assertEqual(response.status_code, 302)
|
|
|
-
|
|
|
- response = self.client.get(response["location"])
|
|
|
- self.assertContains(response, "is admin and can")
|
|
|
- self.assertContains(response, "be deleted.")
|
|
|
-
|
|
|
- self.assertEqual(User.objects.count(), 11)
|
|
|
-
|
|
|
- def test_mass_delete_all_superadmin(self):
|
|
|
- """its impossible to delete superadmin account and content"""
|
|
|
- user_pks = []
|
|
|
- for i in range(10):
|
|
|
- test_user = create_test_user("User%s" % i, "user%s@example.com" % i)
|
|
|
- user_pks.append(test_user.pk)
|
|
|
-
|
|
|
- test_user.is_superuser = True
|
|
|
- test_user.save()
|
|
|
-
|
|
|
- response = self.client.post(
|
|
|
- reverse("misago:admin:users:accounts:index"),
|
|
|
- data={"action": "delete_all", "selected_items": user_pks},
|
|
|
- )
|
|
|
- self.assertEqual(response.status_code, 302)
|
|
|
-
|
|
|
- response = self.client.get(response["location"])
|
|
|
- self.assertContains(response, "is admin and can")
|
|
|
- self.assertContains(response, "be deleted.")
|
|
|
-
|
|
|
- self.assertEqual(User.objects.count(), 11)
|
|
|
-
|
|
|
- def test_mass_delete_all(self):
|
|
|
- """users list mass deleting view has no showstoppers"""
|
|
|
- user_pks = []
|
|
|
- for i in range(10):
|
|
|
- test_user = create_test_user(
|
|
|
- "User%s" % i, "user%s@example.com" % i, requires_activation=1
|
|
|
- )
|
|
|
- user_pks.append(test_user.pk)
|
|
|
-
|
|
|
- response = self.client.post(
|
|
|
- reverse("misago:admin:users:accounts:index"),
|
|
|
- data={"action": "delete_all", "selected_items": user_pks},
|
|
|
- )
|
|
|
- self.assertEqual(response.status_code, 200)
|
|
|
- # asser that no user has been deleted, because actuall deleting happens in
|
|
|
- # dedicated views called via ajax from JavaScript
|
|
|
- self.assertEqual(User.objects.count(), 11)
|
|
|
-
|
|
|
def test_new_view(self):
|
|
|
"""new user view creates account"""
|
|
|
response = self.client.get(reverse("misago:admin:users:accounts:new"))
|
|
@@ -812,197 +618,3 @@ class UserAdminTests(AdminTestCase):
|
|
|
response = self.client.get(test_link)
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
self.assertContains(response, agreement.title)
|
|
|
-
|
|
|
- def test_delete_threads_view_self(self):
|
|
|
- """delete user threads view validates if user deletes self"""
|
|
|
- test_link = reverse(
|
|
|
- "misago:admin:users:accounts:delete-threads", kwargs={"pk": self.user.pk}
|
|
|
- )
|
|
|
-
|
|
|
- response = self.client.post(test_link, **self.AJAX_HEADER)
|
|
|
- self.assertEqual(response.status_code, 302)
|
|
|
-
|
|
|
- response = self.client.get(reverse("misago:admin:index"))
|
|
|
- self.assertContains(response, "delete yourself")
|
|
|
-
|
|
|
- def test_delete_threads_view_staff(self):
|
|
|
- """delete user threads view validates if user deletes staff"""
|
|
|
- test_user = create_test_user("User", "user@example.com")
|
|
|
- test_user.is_staff = True
|
|
|
- test_user.save()
|
|
|
-
|
|
|
- test_link = reverse(
|
|
|
- "misago:admin:users:accounts:delete-threads", kwargs={"pk": test_user.pk}
|
|
|
- )
|
|
|
-
|
|
|
- response = self.client.post(test_link, **self.AJAX_HEADER)
|
|
|
- self.assertEqual(response.status_code, 302)
|
|
|
-
|
|
|
- response = self.client.get(reverse("misago:admin:index"))
|
|
|
- self.assertContains(response, "is admin and")
|
|
|
-
|
|
|
- def test_delete_threads_view_superuser(self):
|
|
|
- """delete user threads view validates if user deletes superuser"""
|
|
|
- test_user = create_test_user("User", "user@example.com")
|
|
|
- test_user.is_superuser = True
|
|
|
- test_user.save()
|
|
|
-
|
|
|
- test_link = reverse(
|
|
|
- "misago:admin:users:accounts:delete-threads", kwargs={"pk": test_user.pk}
|
|
|
- )
|
|
|
-
|
|
|
- response = self.client.post(test_link, **self.AJAX_HEADER)
|
|
|
- self.assertEqual(response.status_code, 302)
|
|
|
-
|
|
|
- response = self.client.get(reverse("misago:admin:index"))
|
|
|
- self.assertContains(response, "is admin and")
|
|
|
-
|
|
|
- def test_delete_threads_view(self):
|
|
|
- """delete user threads view deletes threads"""
|
|
|
- test_user = create_test_user("User", "user@example.com")
|
|
|
- test_link = reverse(
|
|
|
- "misago:admin:users:accounts:delete-threads", kwargs={"pk": test_user.pk}
|
|
|
- )
|
|
|
-
|
|
|
- category = Category.objects.all_categories()[:1][0]
|
|
|
- [post_thread(category, poster=test_user) for _ in range(10)]
|
|
|
-
|
|
|
- response = self.client.post(test_link, **self.AJAX_HEADER)
|
|
|
- self.assertEqual(response.status_code, 200)
|
|
|
-
|
|
|
- response_dict = response.json()
|
|
|
- self.assertEqual(response_dict["deleted_count"], 10)
|
|
|
- self.assertFalse(response_dict["is_completed"])
|
|
|
-
|
|
|
- response = self.client.post(test_link, **self.AJAX_HEADER)
|
|
|
- self.assertEqual(response.status_code, 200)
|
|
|
-
|
|
|
- response_dict = response.json()
|
|
|
- self.assertEqual(response_dict["deleted_count"], 0)
|
|
|
- self.assertTrue(response_dict["is_completed"])
|
|
|
-
|
|
|
- def test_delete_posts_view_self(self):
|
|
|
- """delete user posts view validates if user deletes self"""
|
|
|
- test_link = reverse(
|
|
|
- "misago:admin:users:accounts:delete-posts", kwargs={"pk": self.user.pk}
|
|
|
- )
|
|
|
-
|
|
|
- response = self.client.post(test_link, **self.AJAX_HEADER)
|
|
|
- self.assertEqual(response.status_code, 302)
|
|
|
-
|
|
|
- response = self.client.get(reverse("misago:admin:index"))
|
|
|
- self.assertContains(response, "delete yourself")
|
|
|
-
|
|
|
- def test_delete_posts_view_staff(self):
|
|
|
- """delete user posts view validates if user deletes staff"""
|
|
|
- test_user = create_test_user("User", "user@example.com")
|
|
|
- test_user.is_staff = True
|
|
|
- test_user.save()
|
|
|
-
|
|
|
- test_link = reverse(
|
|
|
- "misago:admin:users:accounts:delete-posts", kwargs={"pk": test_user.pk}
|
|
|
- )
|
|
|
-
|
|
|
- response = self.client.post(test_link, **self.AJAX_HEADER)
|
|
|
- self.assertEqual(response.status_code, 302)
|
|
|
-
|
|
|
- response = self.client.get(reverse("misago:admin:index"))
|
|
|
- self.assertContains(response, "is admin and")
|
|
|
-
|
|
|
- def test_delete_posts_view_superuser(self):
|
|
|
- """delete user posts view validates if user deletes superuser"""
|
|
|
- test_user = create_test_user("User", "user@example.com")
|
|
|
- test_user.is_superuser = True
|
|
|
- test_user.save()
|
|
|
-
|
|
|
- test_link = reverse(
|
|
|
- "misago:admin:users:accounts:delete-posts", kwargs={"pk": test_user.pk}
|
|
|
- )
|
|
|
-
|
|
|
- response = self.client.post(test_link, **self.AJAX_HEADER)
|
|
|
- self.assertEqual(response.status_code, 302)
|
|
|
-
|
|
|
- response = self.client.get(reverse("misago:admin:index"))
|
|
|
- self.assertContains(response, "is admin and")
|
|
|
-
|
|
|
- def test_delete_posts_view(self):
|
|
|
- """delete user posts view deletes posts"""
|
|
|
- test_user = create_test_user("User", "user@example.com")
|
|
|
- test_link = reverse(
|
|
|
- "misago:admin:users:accounts:delete-posts", kwargs={"pk": test_user.pk}
|
|
|
- )
|
|
|
-
|
|
|
- category = Category.objects.all_categories()[:1][0]
|
|
|
- thread = post_thread(category)
|
|
|
- [reply_thread(thread, poster=test_user) for _ in range(10)]
|
|
|
-
|
|
|
- response = self.client.post(test_link, **self.AJAX_HEADER)
|
|
|
- self.assertEqual(response.status_code, 200)
|
|
|
-
|
|
|
- response_dict = response.json()
|
|
|
- self.assertEqual(response_dict["deleted_count"], 10)
|
|
|
- self.assertFalse(response_dict["is_completed"])
|
|
|
-
|
|
|
- response = self.client.post(test_link, **self.AJAX_HEADER)
|
|
|
- self.assertEqual(response.status_code, 200)
|
|
|
-
|
|
|
- response_dict = response.json()
|
|
|
- self.assertEqual(response_dict["deleted_count"], 0)
|
|
|
- self.assertTrue(response_dict["is_completed"])
|
|
|
-
|
|
|
- def test_delete_account_view_self(self):
|
|
|
- """delete user account view validates if user deletes self"""
|
|
|
- test_link = reverse(
|
|
|
- "misago:admin:users:accounts:delete-account", kwargs={"pk": self.user.pk}
|
|
|
- )
|
|
|
-
|
|
|
- response = self.client.post(test_link, **self.AJAX_HEADER)
|
|
|
- self.assertEqual(response.status_code, 302)
|
|
|
-
|
|
|
- response = self.client.get(reverse("misago:admin:index"))
|
|
|
- self.assertContains(response, "delete yourself")
|
|
|
-
|
|
|
- def test_delete_account_view_staff(self):
|
|
|
- """delete user account view validates if user deletes staff"""
|
|
|
- test_user = create_test_user("User", "user@example.com")
|
|
|
- test_user.is_staff = True
|
|
|
- test_user.save()
|
|
|
-
|
|
|
- test_link = reverse(
|
|
|
- "misago:admin:users:accounts:delete-account", kwargs={"pk": test_user.pk}
|
|
|
- )
|
|
|
-
|
|
|
- response = self.client.post(test_link, **self.AJAX_HEADER)
|
|
|
- self.assertEqual(response.status_code, 302)
|
|
|
-
|
|
|
- response = self.client.get(reverse("misago:admin:index"))
|
|
|
- self.assertContains(response, "is admin and")
|
|
|
-
|
|
|
- def test_delete_account_view_superuser(self):
|
|
|
- """delete user account view validates if user deletes superuser"""
|
|
|
- test_user = create_test_user("User", "user@example.com")
|
|
|
- test_user.is_superuser = True
|
|
|
- test_user.save()
|
|
|
-
|
|
|
- test_link = reverse(
|
|
|
- "misago:admin:users:accounts:delete-account", kwargs={"pk": test_user.pk}
|
|
|
- )
|
|
|
-
|
|
|
- response = self.client.post(test_link, **self.AJAX_HEADER)
|
|
|
- self.assertEqual(response.status_code, 302)
|
|
|
-
|
|
|
- response = self.client.get(reverse("misago:admin:index"))
|
|
|
- self.assertContains(response, "is admin and")
|
|
|
-
|
|
|
- def test_delete_account_view(self):
|
|
|
- """delete user account view deletes user account"""
|
|
|
- test_user = create_test_user("User", "user@example.com")
|
|
|
- test_link = reverse(
|
|
|
- "misago:admin:users:accounts:delete-account", kwargs={"pk": test_user.pk}
|
|
|
- )
|
|
|
-
|
|
|
- response = self.client.post(test_link, **self.AJAX_HEADER)
|
|
|
- self.assertEqual(response.status_code, 200)
|
|
|
-
|
|
|
- response_dict = response.json()
|
|
|
- self.assertTrue(response_dict["is_completed"])
|