test_banadmin_views.py 4.6 KB

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