test_banadmin_views.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  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={
  39. 'action': 'delete',
  40. 'selected_items': bans_pks,
  41. },
  42. )
  43. self.assertEqual(response.status_code, 302)
  44. self.assertEqual(Ban.objects.count(), 0)
  45. def test_new_view(self):
  46. """new ban view has no showstoppers"""
  47. response = self.client.get(reverse('misago:admin:users:bans:new'))
  48. self.assertEqual(response.status_code, 200)
  49. test_date = datetime.now() + timedelta(days=180)
  50. response = self.client.post(
  51. reverse('misago:admin:users:bans:new'),
  52. data={
  53. 'check_type': '1',
  54. 'banned_value': 'test@test.com',
  55. 'user_message': 'Lorem ipsum dolor met',
  56. 'staff_message': 'Sit amet elit',
  57. 'expires_on': test_date.isoformat(),
  58. },
  59. )
  60. self.assertEqual(response.status_code, 302)
  61. response = self.client.get(reverse('misago:admin:users:bans:index'))
  62. response = self.client.get(response['location'])
  63. self.assertEqual(response.status_code, 200)
  64. self.assertContains(response, 'test@test.com')
  65. def test_edit_view(self):
  66. """edit ban view has no showstoppers"""
  67. self.client.post(
  68. reverse('misago:admin:users:bans:new'),
  69. data={
  70. 'check_type': '0',
  71. 'banned_value': 'Admin',
  72. },
  73. )
  74. test_ban = Ban.objects.get(banned_value='admin')
  75. form_link = reverse(
  76. 'misago:admin:users:bans:edit',
  77. kwargs={
  78. 'pk': test_ban.pk,
  79. },
  80. )
  81. response = self.client.post(
  82. form_link,
  83. data={
  84. 'check_type': '1',
  85. 'banned_value': 'test@test.com',
  86. 'user_message': 'Lorem ipsum dolor met',
  87. 'staff_message': 'Sit amet elit',
  88. 'expires_on': '',
  89. },
  90. )
  91. self.assertEqual(response.status_code, 302)
  92. response = self.client.get(reverse('misago:admin:users:bans:index'))
  93. response = self.client.get(response['location'])
  94. self.assertEqual(response.status_code, 200)
  95. self.assertContains(response, 'test@test.com')
  96. def test_delete_view(self):
  97. """delete ban view has no showstoppers"""
  98. self.client.post(
  99. reverse('misago:admin:users:bans:new'),
  100. data={
  101. 'check_type': '0',
  102. 'banned_value': 'TestBan',
  103. },
  104. )
  105. test_ban = Ban.objects.get(banned_value='testban')
  106. response = self.client.post(
  107. reverse(
  108. 'misago:admin:users:bans:delete',
  109. kwargs={
  110. 'pk': test_ban.pk,
  111. },
  112. )
  113. )
  114. self.assertEqual(response.status_code, 302)
  115. response = self.client.get(reverse('misago:admin:users:bans:index'))
  116. self.client.get(response['location'])
  117. response = self.client.get(response['location'])
  118. self.assertEqual(response.status_code, 200)
  119. self.assertNotContains(response, test_ban.banned_value)