test_useradmin_views.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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_new_view(self):
  48. """new user view creates account"""
  49. response = self.client.get(
  50. reverse('misago:admin:users:accounts:new'))
  51. self.assertEqual(response.status_code, 200)
  52. default_rank = Rank.objects.get_default()
  53. authenticated_role = Role.objects.get(special_role='authenticated')
  54. response = self.client.post(reverse('misago:admin:users:accounts:new'),
  55. data={
  56. 'username': 'Bawww',
  57. 'rank': unicode(default_rank.pk),
  58. 'roles': unicode(authenticated_role.pk),
  59. 'email': 'reg@stered.com',
  60. 'new_password': 'pass123',
  61. 'staff_level': '0'
  62. })
  63. self.assertEqual(response.status_code, 302)
  64. User = get_user_model()
  65. User.objects.get_by_username('Bawww')
  66. def test_edit_view(self):
  67. """edit user view changes account"""
  68. User = get_user_model()
  69. test_user = User.objects.create_user('Bob', 'bob@test.com', 'pass123')
  70. test_link = reverse('misago:admin:users:accounts:edit',
  71. kwargs={'user_id': test_user.pk})
  72. response = self.client.get(test_link)
  73. self.assertEqual(response.status_code, 200)
  74. response = self.client.post(test_link,
  75. data={
  76. 'username': 'Bawww',
  77. 'rank': unicode(test_user.rank_id),
  78. 'roles': unicode(test_user.roles.all()[0].pk),
  79. 'email': 'reg@stered.com',
  80. 'new_password': 'pass123',
  81. 'staff_level': '0',
  82. 'signature': 'Hello world!',
  83. 'is_signature_banned': '1',
  84. 'signature_ban_staff_message': 'Staff message',
  85. 'signature_ban_user_message': 'User message',
  86. })
  87. self.assertEqual(response.status_code, 302)
  88. User.objects.get_by_username('Bawww')
  89. User.objects.get_by_email('reg@stered.com')
  90. def test_activate_view(self):
  91. """activate user view activates account"""
  92. User = get_user_model()
  93. test_user = User.objects.create_user('Bob', 'bob@test.com', 'pass123',
  94. requires_activation=1)
  95. test_link = reverse('misago:admin:users:accounts:activate',
  96. kwargs={'user_id': test_user.pk})
  97. response = self.client.post(test_link)
  98. self.assertEqual(response.status_code, 302)
  99. self.assertIn("has been activated", mail.outbox[0].subject)
  100. test_user = User.objects.get(pk=test_user.pk)
  101. self.assertEqual(test_user.requires_activation, 0)