test_banadmin_views.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. from datetime import date
  2. from django.core.urlresolvers import reverse
  3. from misago.admin.testutils import AdminTestCase
  4. from misago.users.models import Ban
  5. class BanAdminViewsTests(AdminTestCase):
  6. def test_link_registered(self):
  7. """admin nav contains bans link"""
  8. response = self.client.get(
  9. reverse('misago:admin:users:accounts:index'))
  10. response = self.client.get(response['location'])
  11. self.assertIn(reverse('misago:admin:users:bans:index'),
  12. response.content)
  13. def test_list_view(self):
  14. """bans list view returns 200"""
  15. response = self.client.get(reverse('misago:admin:users:bans:index'))
  16. self.assertEqual(response.status_code, 302)
  17. response = self.client.get(response['location'])
  18. self.assertEqual(response.status_code, 200)
  19. def test_mass_delete(self):
  20. """adminview deletes multiple bans"""
  21. for i in xrange(10):
  22. response = self.client.post(
  23. reverse('misago:admin:users:bans:new'),
  24. data={
  25. 'check_type': '1',
  26. 'banned_value': 'test@test.com',
  27. 'user_message': 'Lorem ipsum dolor met',
  28. 'staff_message': 'Sit amet elit',
  29. 'expires_on': '%s-12-24' % unicode(date.today().year + 1),
  30. })
  31. self.assertEqual(Ban.objects.count(), 10)
  32. bans_pks = []
  33. for ban in Ban.objects.iterator():
  34. bans_pks.append(ban.pk)
  35. response = self.client.post(
  36. reverse('misago:admin:users:bans:index'),
  37. data={'action': 'delete', 'selected_items': bans_pks})
  38. self.assertEqual(response.status_code, 302)
  39. self.assertEqual(Ban.objects.count(), 0)
  40. def test_new_view(self):
  41. """new ban view has no showstoppers"""
  42. response = self.client.get(
  43. reverse('misago:admin:users:bans:new'))
  44. self.assertEqual(response.status_code, 200)
  45. response = self.client.post(
  46. reverse('misago:admin:users:bans:new'),
  47. data={
  48. 'check_type': '1',
  49. 'banned_value': 'test@test.com',
  50. 'user_message': 'Lorem ipsum dolor met',
  51. 'staff_message': 'Sit amet elit',
  52. 'expires_on': '%s-12-24' % unicode(date.today().year + 1),
  53. })
  54. self.assertEqual(response.status_code, 302)
  55. response = self.client.get(reverse('misago:admin:users:bans:index'))
  56. response = self.client.get(response['location'])
  57. self.assertEqual(response.status_code, 200)
  58. self.assertIn('test@test.com', response.content)
  59. def test_edit_view(self):
  60. """edit ban view has no showstoppers"""
  61. self.client.post(
  62. reverse('misago:admin:users:bans:new'),
  63. data={
  64. 'check_type': '0',
  65. 'banned_value': 'Admin',
  66. })
  67. test_ban = Ban.objects.get(banned_value='admin')
  68. response = self.client.post(
  69. reverse('misago:admin:users:bans:edit',
  70. kwargs={'ban_id': test_ban.pk}),
  71. data={
  72. 'check_type': '1',
  73. 'banned_value': 'test@test.com',
  74. 'user_message': 'Lorem ipsum dolor met',
  75. 'staff_message': 'Sit amet elit',
  76. 'expires_on': '%s-12-24' % unicode(date.today().year + 1),
  77. })
  78. self.assertEqual(response.status_code, 302)
  79. response = self.client.get(reverse('misago:admin:users:bans:index'))
  80. response = self.client.get(response['location'])
  81. self.assertEqual(response.status_code, 200)
  82. self.assertIn('test@test.com', response.content)
  83. #raise Exception('FIX WARNING!')
  84. def test_delete_view(self):
  85. """delete ban view has no showstoppers"""
  86. self.client.post(
  87. reverse('misago:admin:users:bans:new'),
  88. data={
  89. 'check_type': '0',
  90. 'banned_value': 'TestBan',
  91. })
  92. test_ban = Ban.objects.get(banned_value='testban')
  93. response = self.client.post(
  94. reverse('misago:admin:users:bans:delete',
  95. kwargs={'ban_id': test_ban.pk}))
  96. self.assertEqual(response.status_code, 302)
  97. response = self.client.get(reverse('misago:admin:users:bans:index'))
  98. self.client.get(response['location'])
  99. response = self.client.get(response['location'])
  100. self.assertEqual(response.status_code, 200)
  101. self.assertTrue(test_ban.banned_value not in response.content)