-test_lists_views.py 3.2 KB

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