test_lists_views.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. from django.contrib.auth import get_user_model
  2. from django.core.urlresolvers import reverse
  3. from misago.acl.testutils import override_acl
  4. from misago.admin.testutils import AdminTestCase
  5. from misago.users.models import Ban, Rank
  6. class UsersListTestCase(AdminTestCase):
  7. def setUp(self):
  8. super(UsersListTestCase, self).setUp()
  9. override_acl(self.test_admin, {
  10. 'misago.users.permissions.profiles': {
  11. 'can_browse_users_list': 1
  12. }
  13. })
  14. class UsersListLanderTests(UsersListTestCase):
  15. def test_lander_no_permission(self):
  16. """lander returns 403 if user has no permission"""
  17. override_acl(self.test_admin, {
  18. 'misago.users.permissions.profiles': {
  19. 'can_browse_users_list': 0
  20. }
  21. })
  22. response = self.client.get(reverse('misago:users'))
  23. self.assertEqual(response.status_code, 403)
  24. def test_lander_redirect(self):
  25. """lander returns redirect to valid page if user has permission"""
  26. response = self.client.get(reverse('misago:users'))
  27. self.assertEqual(response.status_code, 302)
  28. self.assertTrue(response['location'].endswith(
  29. reverse('misago:users_active_posters')))
  30. class ActivePostersTests(UsersListTestCase):
  31. def test_active_posters_list(self):
  32. """active posters page has no showstoppers"""
  33. view_link = reverse('misago:users_active_posters')
  34. response = self.client.get(view_link)
  35. self.assertEqual(response.status_code, 200)
  36. # Create 200 test users and see if errors appeared
  37. User = get_user_model()
  38. for i in xrange(200):
  39. User.objects.create_user('Bob%s' % i, 'm%s@te.com' % i, 'Pass.123',
  40. posts=12345)
  41. response = self.client.get(view_link)
  42. self.assertEqual(response.status_code, 200)
  43. for page in xrange(2, 6):
  44. response = self.client.get(reverse('misago:users_active_posters',
  45. kwargs={'page': page}))
  46. self.assertEqual(response.status_code, 200)
  47. class OnlineUsersTests(UsersListTestCase):
  48. def test_no_permission(self):
  49. """online list returns 403 if user has no permission"""
  50. override_acl(self.test_admin, {
  51. 'misago.users.permissions.profiles': {
  52. 'can_browse_users_list': 1,
  53. 'can_see_users_online_list': 0,
  54. }
  55. })
  56. response = self.client.get(reverse('misago:users_online'))
  57. self.assertEqual(response.status_code, 403)
  58. def test_with_permission(self):
  59. """online list returns 200 if user has permission"""
  60. override_acl(self.test_admin, {
  61. 'misago.users.permissions.profiles': {
  62. 'can_browse_users_list': 1,
  63. 'can_see_users_online_list': 1,
  64. }
  65. })
  66. response = self.client.get(reverse('misago:users_online'))
  67. self.assertEqual(response.status_code, 200)
  68. class UsersRankTests(UsersListTestCase):
  69. def test_ranks(self):
  70. """ranks lists are handled correctly"""
  71. for rank in Rank.objects.iterator():
  72. rank_link = reverse('misago:users_rank',
  73. kwargs={'rank_slug': rank.slug})
  74. response = self.client.get(rank_link)
  75. if rank.is_tab:
  76. self.assertEqual(response.status_code, 200)
  77. else:
  78. self.assertEqual(response.status_code, 404)