test_banadmin_views.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. from datetime import datetime, timedelta
  2. from django.urls import reverse
  3. from django.utils.six.moves import range
  4. from misago.admin.testutils import AdminTestCase
  5. from misago.users.models import Ban
  6. class BanAdminViewsTests(AdminTestCase):
  7. def test_link_registered(self):
  8. """admin nav contains bans link"""
  9. response = self.client.get(reverse('misago:admin:users:accounts:index'))
  10. response = self.client.get(response['location'])
  11. self.assertContains(response, reverse('misago:admin:users:bans:index'))
  12. def test_list_view(self):
  13. """bans list view returns 200"""
  14. response = self.client.get(reverse('misago:admin:users:bans:index'))
  15. self.assertEqual(response.status_code, 302)
  16. response = self.client.get(response['location'])
  17. self.assertEqual(response.status_code, 200)
  18. def test_mass_delete(self):
  19. """adminview deletes multiple bans"""
  20. test_date = datetime.now() + timedelta(days=180)
  21. for i in range(10):
  22. response = self.client.post(reverse('misago:admin:users:bans:new'), data={
  23. 'check_type': '1',
  24. 'banned_value': '%stest@test.com' % i,
  25. 'user_message': 'Lorem ipsum dolor met',
  26. 'staff_message': 'Sit amet elit',
  27. 'expires_on': test_date.isoformat(),
  28. })
  29. self.assertEqual(response.status_code, 302)
  30. self.assertEqual(Ban.objects.count(), 10)
  31. bans_pks = []
  32. for ban in Ban.objects.iterator():
  33. bans_pks.append(ban.pk)
  34. response = self.client.post(reverse('misago:admin:users:bans:index'), data={
  35. 'action': 'delete',
  36. 'selected_items': bans_pks
  37. })
  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(reverse('misago:admin:users:bans:new'))
  43. self.assertEqual(response.status_code, 200)
  44. test_date = datetime.now() + timedelta(days=180)
  45. response = self.client.post(reverse('misago:admin:users:bans:new'), data={
  46. 'check_type': '1',
  47. 'banned_value': 'test@test.com',
  48. 'user_message': 'Lorem ipsum dolor met',
  49. 'staff_message': 'Sit amet elit',
  50. 'expires_on': test_date.isoformat(),
  51. })
  52. self.assertEqual(response.status_code, 302)
  53. response = self.client.get(reverse('misago:admin:users:bans:index'))
  54. response = self.client.get(response['location'])
  55. self.assertEqual(response.status_code, 200)
  56. self.assertContains(response, 'test@test.com')
  57. def test_edit_view(self):
  58. """edit ban view has no showstoppers"""
  59. self.client.post(reverse('misago:admin:users:bans:new'), data={
  60. 'check_type': '0',
  61. 'banned_value': 'Admin',
  62. })
  63. test_ban = Ban.objects.get(banned_value='admin')
  64. form_link = reverse('misago:admin:users:bans:edit', kwargs={'pk': test_ban.pk})
  65. response = self.client.post(form_link, data={
  66. 'check_type': '1',
  67. 'banned_value': 'test@test.com',
  68. 'user_message': 'Lorem ipsum dolor met',
  69. 'staff_message': 'Sit amet elit',
  70. 'expires_on': '',
  71. })
  72. self.assertEqual(response.status_code, 302)
  73. response = self.client.get(reverse('misago:admin:users:bans:index'))
  74. response = self.client.get(response['location'])
  75. self.assertEqual(response.status_code, 200)
  76. self.assertContains(response, 'test@test.com')
  77. def test_delete_view(self):
  78. """delete ban view has no showstoppers"""
  79. self.client.post(reverse('misago:admin:users:bans:new'), data={
  80. 'check_type': '0',
  81. 'banned_value': 'TestBan',
  82. })
  83. test_ban = Ban.objects.get(banned_value='testban')
  84. response = self.client.post(reverse('misago:admin:users:bans:delete', kwargs={
  85. 'pk': test_ban.pk
  86. }))
  87. self.assertEqual(response.status_code, 302)
  88. response = self.client.get(reverse('misago:admin:users:bans:index'))
  89. self.client.get(response['location'])
  90. response = self.client.get(response['location'])
  91. self.assertEqual(response.status_code, 200)
  92. self.assertNotContains(response, test_ban.banned_value)