test_useradmin_views.py 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. from django.contrib.auth import get_user_model
  2. from django.core import mail
  3. from django.core.urlresolvers import reverse
  4. from misago.acl.models import Role
  5. from misago.admin.testutils import AdminTestCase
  6. from misago.users.models import Ban, Rank
  7. class UserAdminViewsTests(AdminTestCase):
  8. def test_link_registered(self):
  9. """admin index view contains users link"""
  10. response = self.client.get(reverse('misago:admin:index'))
  11. self.assertIn(reverse('misago:admin:users:accounts:index'),
  12. response.content)
  13. def test_list_view(self):
  14. """users list view returns 200"""
  15. response = self.client.get(
  16. reverse('misago:admin:users:accounts:index'))
  17. self.assertEqual(response.status_code, 302)
  18. response = self.client.get(response['location'])
  19. self.assertEqual(response.status_code, 200)
  20. self.assertIn('TestAdmin', response.content)
  21. def test_list_search(self):
  22. """users list is searchable"""
  23. response = self.client.get(
  24. reverse('misago:admin:users:accounts:index'))
  25. self.assertEqual(response.status_code, 302)
  26. link_base = response['location']
  27. response = self.client.get(link_base)
  28. self.assertEqual(response.status_code, 200)
  29. User = get_user_model()
  30. user_a = User.objects.create_user('Tyrael', 't123@test.com', 'pass123')
  31. user_b = User.objects.create_user('Tyrion', 't321@test.com', 'pass123')
  32. # Search both
  33. response = self.client.get(link_base + '&username=tyr')
  34. self.assertEqual(response.status_code, 200)
  35. self.assertIn(user_a.username, response.content)
  36. self.assertIn(user_b.username, response.content)
  37. # Search tyrion
  38. response = self.client.get(link_base + '&username=tyrion')
  39. self.assertEqual(response.status_code, 200)
  40. self.assertFalse(user_a.username in response.content)
  41. self.assertIn(user_b.username, response.content)
  42. # Search tyrael
  43. response = self.client.get(link_base + '&email=t123@test.com')
  44. self.assertEqual(response.status_code, 200)
  45. self.assertIn(user_a.username, response.content)
  46. self.assertFalse(user_b.username in response.content)
  47. def test_mass_activation(self):
  48. """adminview activates multiple users"""
  49. User = get_user_model()
  50. user_pks = []
  51. for i in xrange(10):
  52. test_user = User.objects.create_user('Bob%s' % i,
  53. 'bob%s@test.com' % i,
  54. 'pass123',
  55. requires_activation=1)
  56. user_pks.append(test_user.pk)
  57. response = self.client.post(
  58. reverse('misago:admin:users:accounts:index'),
  59. data={'action': 'activate', 'selected_items': user_pks})
  60. self.assertEqual(response.status_code, 302)
  61. inactive_qs = User.objects.filter(id__in=user_pks,
  62. requires_activation=1)
  63. self.assertEqual(inactive_qs.count(), 0)
  64. self.assertIn("has been activated", mail.outbox[0].subject)
  65. def test_mass_ban(self):
  66. """adminview bans multiple users"""
  67. User = get_user_model()
  68. user_pks = []
  69. for i in xrange(10):
  70. test_user = User.objects.create_user('Bob%s' % i,
  71. 'bob%s@test.com' % i,
  72. 'pass123',
  73. requires_activation=1)
  74. user_pks.append(test_user.pk)
  75. response = self.client.post(
  76. reverse('misago:admin:users:accounts:index'),
  77. data={'action': 'ban', 'selected_items': user_pks})
  78. self.assertEqual(response.status_code, 200)
  79. response = self.client.post(
  80. reverse('misago:admin:users:accounts:index'),
  81. data={'action': 'ban', 'selected_items': user_pks, 'finalize': ''})
  82. self.assertEqual(response.status_code, 302)
  83. self.assertEqual(Ban.objects.count(), 10)
  84. def test_new_view(self):
  85. """new user view creates account"""
  86. response = self.client.get(
  87. reverse('misago:admin:users:accounts:new'))
  88. self.assertEqual(response.status_code, 200)
  89. default_rank = Rank.objects.get_default()
  90. authenticated_role = Role.objects.get(special_role='authenticated')
  91. response = self.client.post(reverse('misago:admin:users:accounts:new'),
  92. data={
  93. 'username': 'Bawww',
  94. 'rank': unicode(default_rank.pk),
  95. 'roles': unicode(authenticated_role.pk),
  96. 'email': 'reg@stered.com',
  97. 'new_password': 'pass123',
  98. 'staff_level': '0'
  99. })
  100. self.assertEqual(response.status_code, 302)
  101. User = get_user_model()
  102. User.objects.get_by_username('Bawww')
  103. def test_edit_view(self):
  104. """edit user view changes account"""
  105. User = get_user_model()
  106. test_user = User.objects.create_user('Bob', 'bob@test.com', 'pass123')
  107. test_link = reverse('misago:admin:users:accounts:edit',
  108. kwargs={'user_id': test_user.pk})
  109. response = self.client.get(test_link)
  110. self.assertEqual(response.status_code, 200)
  111. response = self.client.post(test_link,
  112. data={
  113. 'username': 'Bawww',
  114. 'rank': unicode(test_user.rank_id),
  115. 'roles': unicode(test_user.roles.all()[0].pk),
  116. 'email': 'reg@stered.com',
  117. 'new_password': 'pass123',
  118. 'staff_level': '0',
  119. 'signature': 'Hello world!',
  120. 'is_signature_banned': '1',
  121. 'signature_ban_staff_message': 'Staff message',
  122. 'signature_ban_user_message': 'User message',
  123. })
  124. self.assertEqual(response.status_code, 302)
  125. User.objects.get_by_username('Bawww')
  126. User.objects.get_by_email('reg@stered.com')