test_useradmin_views.py 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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 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_new_view(self):
  66. """new user view creates account"""
  67. response = self.client.get(
  68. reverse('misago:admin:users:accounts:new'))
  69. self.assertEqual(response.status_code, 200)
  70. default_rank = Rank.objects.get_default()
  71. authenticated_role = Role.objects.get(special_role='authenticated')
  72. response = self.client.post(reverse('misago:admin:users:accounts:new'),
  73. data={
  74. 'username': 'Bawww',
  75. 'rank': unicode(default_rank.pk),
  76. 'roles': unicode(authenticated_role.pk),
  77. 'email': 'reg@stered.com',
  78. 'new_password': 'pass123',
  79. 'staff_level': '0'
  80. })
  81. self.assertEqual(response.status_code, 302)
  82. User = get_user_model()
  83. User.objects.get_by_username('Bawww')
  84. def test_edit_view(self):
  85. """edit user view changes account"""
  86. User = get_user_model()
  87. test_user = User.objects.create_user('Bob', 'bob@test.com', 'pass123')
  88. test_link = reverse('misago:admin:users:accounts:edit',
  89. kwargs={'user_id': test_user.pk})
  90. response = self.client.get(test_link)
  91. self.assertEqual(response.status_code, 200)
  92. response = self.client.post(test_link,
  93. data={
  94. 'username': 'Bawww',
  95. 'rank': unicode(test_user.rank_id),
  96. 'roles': unicode(test_user.roles.all()[0].pk),
  97. 'email': 'reg@stered.com',
  98. 'new_password': 'pass123',
  99. 'staff_level': '0',
  100. 'signature': 'Hello world!',
  101. 'is_signature_banned': '1',
  102. 'signature_ban_staff_message': 'Staff message',
  103. 'signature_ban_user_message': 'User message',
  104. })
  105. self.assertEqual(response.status_code, 302)
  106. User.objects.get_by_username('Bawww')
  107. User.objects.get_by_email('reg@stered.com')