test_useradmin_views.py 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  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. """users list 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. """users list 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_mass_delete_accounts(self):
  85. """users list deletes users"""
  86. User = get_user_model()
  87. user_pks = []
  88. for i in xrange(10):
  89. test_user = User.objects.create_user('Bob%s' % i,
  90. 'bob%s@test.com' % i,
  91. 'pass123',
  92. requires_activation=1)
  93. user_pks.append(test_user.pk)
  94. response = self.client.post(
  95. reverse('misago:admin:users:accounts:index'),
  96. data={'action': 'delete_accounts', 'selected_items': user_pks})
  97. self.assertEqual(response.status_code, 302)
  98. self.assertEqual(User.objects.count(), 1)
  99. def test_mass_delete_all(self):
  100. """users list deletes users and their content"""
  101. User = get_user_model()
  102. user_pks = []
  103. for i in xrange(10):
  104. test_user = User.objects.create_user('Bob%s' % i,
  105. 'bob%s@test.com' % i,
  106. 'pass123',
  107. requires_activation=1)
  108. user_pks.append(test_user.pk)
  109. response = self.client.post(
  110. reverse('misago:admin:users:accounts:index'),
  111. data={'action': 'delete_accounts', 'selected_items': user_pks})
  112. self.assertEqual(response.status_code, 302)
  113. self.assertEqual(User.objects.count(), 1)
  114. def test_new_view(self):
  115. """new user view creates account"""
  116. response = self.client.get(
  117. reverse('misago:admin:users:accounts:new'))
  118. self.assertEqual(response.status_code, 200)
  119. default_rank = Rank.objects.get_default()
  120. authenticated_role = Role.objects.get(special_role='authenticated')
  121. response = self.client.post(reverse('misago:admin:users:accounts:new'),
  122. data={
  123. 'username': 'Bawww',
  124. 'rank': unicode(default_rank.pk),
  125. 'roles': unicode(authenticated_role.pk),
  126. 'email': 'reg@stered.com',
  127. 'new_password': 'pass123',
  128. 'staff_level': '0'
  129. })
  130. self.assertEqual(response.status_code, 302)
  131. User = get_user_model()
  132. User.objects.get_by_username('Bawww')
  133. def test_edit_view(self):
  134. """edit user view changes account"""
  135. User = get_user_model()
  136. test_user = User.objects.create_user('Bob', 'bob@test.com', 'pass123')
  137. test_link = reverse('misago:admin:users:accounts:edit',
  138. kwargs={'user_id': test_user.pk})
  139. response = self.client.get(test_link)
  140. self.assertEqual(response.status_code, 200)
  141. response = self.client.post(test_link,
  142. data={
  143. 'username': 'Bawww',
  144. 'rank': unicode(test_user.rank_id),
  145. 'roles': unicode(test_user.roles.all()[0].pk),
  146. 'email': 'reg@stered.com',
  147. 'new_password': 'pass123',
  148. 'staff_level': '0',
  149. 'signature': 'Hello world!',
  150. 'is_signature_banned': '1',
  151. 'signature_ban_staff_message': 'Staff message',
  152. 'signature_ban_user_message': 'User message',
  153. })
  154. self.assertEqual(response.status_code, 302)
  155. User.objects.get_by_username('Bawww')
  156. User.objects.get_by_email('reg@stered.com')