123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- from django.urls import reverse
- from misago.acl.test import patch_user_acl
- from misago.categories.models import Category
- from misago.threads.testutils import post_thread
- from misago.users.activepostersranking import build_active_posters_ranking
- from misago.users.models import Rank
- from misago.users.testutils import AuthenticatedUserTestCase, create_test_user
- class UsersListTestCase(AuthenticatedUserTestCase):
- pass
- class UsersListLanderTests(UsersListTestCase):
- @patch_user_acl({"can_browse_users_list": 0})
- def test_lander_no_permission(self):
- """lander returns 403 if user has no permission"""
- response = self.client.get(reverse("misago:users"))
- self.assertEqual(response.status_code, 403)
- def test_lander_redirect(self):
- """lander returns redirect to valid page if user has permission"""
- response = self.client.get(reverse("misago:users"))
- self.assertEqual(response.status_code, 302)
- self.assertTrue(
- response["location"].endswith(reverse("misago:users-active-posters"))
- )
- class ActivePostersTests(UsersListTestCase):
- def test_empty_active_posters_list(self):
- """empty active posters page has no showstoppers"""
- view_link = reverse("misago:users-active-posters")
- response = self.client.get(view_link)
- self.assertEqual(response.status_code, 200)
- def test_active_posters_list(self):
- """active posters page has no showstoppers"""
- category = Category.objects.get(slug="first-category")
- view_link = reverse("misago:users-active-posters")
- response = self.client.get(view_link)
- self.assertEqual(response.status_code, 200)
- # Create 50 test users and see if errors appeared
- for i in range(50):
- user = create_test_user("Bob%s" % i, "m%s@te.com" % i, posts=12345)
- post_thread(category, poster=user)
- build_active_posters_ranking()
- response = self.client.get(view_link)
- self.assertEqual(response.status_code, 200)
- class UsersRankTests(UsersListTestCase):
- def test_ranks(self):
- """ranks lists are handled correctly"""
- rank_user = create_test_user("Visible", "visible@te.com")
- for rank in Rank.objects.iterator():
- rank_user.rank = rank
- rank_user.save()
- rank_link = reverse("misago:users-rank", kwargs={"slug": rank.slug})
- response = self.client.get(rank_link)
- if rank.is_tab:
- self.assertEqual(response.status_code, 200)
- self.assertContains(response, rank_user.get_absolute_url())
- else:
- self.assertEqual(response.status_code, 404)
- def test_disabled_users(self):
- """ranks lists excludes disabled accounts"""
- rank_user = create_test_user("Visible", "visible@te.com", is_active=False)
- for rank in Rank.objects.iterator():
- rank_user.rank = rank
- rank_user.save()
- rank_link = reverse("misago:users-rank", kwargs={"slug": rank.slug})
- response = self.client.get(rank_link)
- if rank.is_tab:
- self.assertEqual(response.status_code, 200)
- self.assertNotContains(response, rank_user.get_absolute_url())
- else:
- self.assertEqual(response.status_code, 404)
- def test_staff_see_disabled_users(self):
- """ranks lists shows disabled accounts for staff members"""
- self.user.is_staff = True
- self.user.save()
- rank_user = create_test_user("Visible", "visible@te.com", is_active=False)
- for rank in Rank.objects.iterator():
- rank_user.rank = rank
- rank_user.save()
- rank_link = reverse("misago:users-rank", kwargs={"slug": rank.slug})
- response = self.client.get(rank_link)
- if rank.is_tab:
- self.assertEqual(response.status_code, 200)
- self.assertContains(response, rank_user.get_absolute_url())
- else:
- self.assertEqual(response.status_code, 404)
|