test_lists_views.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. from django.urls import reverse
  2. from misago.acl.test import patch_user_acl
  3. from misago.categories.models import Category
  4. from misago.threads.testutils import post_thread
  5. from misago.users.activepostersranking import build_active_posters_ranking
  6. from misago.users.models import Rank
  7. from misago.users.testutils import AuthenticatedUserTestCase, create_test_user
  8. class UsersListTestCase(AuthenticatedUserTestCase):
  9. pass
  10. class UsersListLanderTests(UsersListTestCase):
  11. @patch_user_acl({"can_browse_users_list": 0})
  12. def test_lander_no_permission(self):
  13. """lander returns 403 if user has no permission"""
  14. response = self.client.get(reverse("misago:users"))
  15. self.assertEqual(response.status_code, 403)
  16. def test_lander_redirect(self):
  17. """lander returns redirect to valid page if user has permission"""
  18. response = self.client.get(reverse("misago:users"))
  19. self.assertEqual(response.status_code, 302)
  20. self.assertTrue(
  21. response["location"].endswith(reverse("misago:users-active-posters"))
  22. )
  23. class ActivePostersTests(UsersListTestCase):
  24. def test_empty_active_posters_list(self):
  25. """empty active posters page has no showstoppers"""
  26. view_link = reverse("misago:users-active-posters")
  27. response = self.client.get(view_link)
  28. self.assertEqual(response.status_code, 200)
  29. def test_active_posters_list(self):
  30. """active posters page has no showstoppers"""
  31. category = Category.objects.get(slug="first-category")
  32. view_link = reverse("misago:users-active-posters")
  33. response = self.client.get(view_link)
  34. self.assertEqual(response.status_code, 200)
  35. # Create 50 test users and see if errors appeared
  36. for i in range(50):
  37. user = create_test_user("Bob%s" % i, "m%s@te.com" % i, posts=12345)
  38. post_thread(category, poster=user)
  39. build_active_posters_ranking()
  40. response = self.client.get(view_link)
  41. self.assertEqual(response.status_code, 200)
  42. class UsersRankTests(UsersListTestCase):
  43. def test_ranks(self):
  44. """ranks lists are handled correctly"""
  45. rank_user = create_test_user("Visible", "visible@te.com")
  46. for rank in Rank.objects.iterator():
  47. rank_user.rank = rank
  48. rank_user.save()
  49. rank_link = reverse("misago:users-rank", kwargs={"slug": rank.slug})
  50. response = self.client.get(rank_link)
  51. if rank.is_tab:
  52. self.assertEqual(response.status_code, 200)
  53. self.assertContains(response, rank_user.get_absolute_url())
  54. else:
  55. self.assertEqual(response.status_code, 404)
  56. def test_disabled_users(self):
  57. """ranks lists excludes disabled accounts"""
  58. rank_user = create_test_user(
  59. "Visible", "visible@te.com", "Pass.123", is_active=False
  60. )
  61. for rank in Rank.objects.iterator():
  62. rank_user.rank = rank
  63. rank_user.save()
  64. rank_link = reverse("misago:users-rank", kwargs={"slug": rank.slug})
  65. response = self.client.get(rank_link)
  66. if rank.is_tab:
  67. self.assertEqual(response.status_code, 200)
  68. self.assertNotContains(response, rank_user.get_absolute_url())
  69. else:
  70. self.assertEqual(response.status_code, 404)
  71. def test_staff_see_disabled_users(self):
  72. """ranks lists shows disabled accounts for staff members"""
  73. self.user.is_staff = True
  74. self.user.save()
  75. rank_user = create_test_user(
  76. "Visible", "visible@te.com", "Pass.123", is_active=False
  77. )
  78. for rank in Rank.objects.iterator():
  79. rank_user.rank = rank
  80. rank_user.save()
  81. rank_link = reverse("misago:users-rank", kwargs={"slug": rank.slug})
  82. response = self.client.get(rank_link)
  83. if rank.is_tab:
  84. self.assertEqual(response.status_code, 200)
  85. self.assertContains(response, rank_user.get_absolute_url())
  86. else:
  87. self.assertEqual(response.status_code, 404)