test_banadmin_views.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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(reverse('misago:admin:users:bans:new'), data={
  22. 'check_type': '1',
  23. 'banned_value': '%stest@test.com' % i,
  24. 'user_message': 'Lorem ipsum dolor met',
  25. 'staff_message': 'Sit amet elit',
  26. 'expires_on': test_date.isoformat(),
  27. })
  28. self.assertEqual(response.status_code, 302)
  29. self.assertEqual(Ban.objects.count(), 10)
  30. bans_pks = []
  31. for ban in Ban.objects.iterator():
  32. bans_pks.append(ban.pk)
  33. response = self.client.post(reverse('misago:admin:users:bans:index'), data={
  34. 'action': 'delete',
  35. 'selected_items': bans_pks
  36. })
  37. self.assertEqual(response.status_code, 302)
  38. self.assertEqual(Ban.objects.count(), 0)
  39. def test_new_view(self):
  40. """new ban view has no showstoppers"""
  41. response = self.client.get(reverse('misago:admin:users:bans:new'))
  42. self.assertEqual(response.status_code, 200)
  43. test_date = datetime.now() + timedelta(days=180)
  44. response = self.client.post(reverse('misago:admin:users:bans:new'), data={
  45. 'check_type': '1',
  46. 'banned_value': 'test@test.com',
  47. 'user_message': 'Lorem ipsum dolor met',
  48. 'staff_message': 'Sit amet elit',
  49. 'expires_on': test_date.isoformat(),
  50. })
  51. self.assertEqual(response.status_code, 302)
  52. response = self.client.get(reverse('misago:admin:users:bans:index'))
  53. response = self.client.get(response['location'])
  54. self.assertEqual(response.status_code, 200)
  55. self.assertContains(response, 'test@test.com')
  56. def test_edit_view(self):
  57. """edit ban view has no showstoppers"""
  58. self.client.post(reverse('misago:admin:users:bans:new'), data={
  59. 'check_type': '0',
  60. 'banned_value': 'Admin',
  61. })
  62. test_ban = Ban.objects.get(banned_value='admin')
  63. form_link = reverse('misago:admin:users:bans:edit', kwargs={'pk': test_ban.pk})
  64. response = self.client.post(form_link, data={
  65. 'check_type': '1',
  66. 'banned_value': 'test@test.com',
  67. 'user_message': 'Lorem ipsum dolor met',
  68. 'staff_message': 'Sit amet elit',
  69. 'expires_on': '',
  70. })
  71. self.assertEqual(response.status_code, 302)
  72. response = self.client.get(reverse('misago:admin:users:bans:index'))
  73. response = self.client.get(response['location'])
  74. self.assertEqual(response.status_code, 200)
  75. self.assertContains(response, 'test@test.com')
  76. def test_delete_view(self):
  77. """delete ban view has no showstoppers"""
  78. self.client.post(reverse('misago:admin:users:bans:new'), data={
  79. 'check_type': '0',
  80. 'banned_value': 'TestBan',
  81. })
  82. test_ban = Ban.objects.get(banned_value='testban')
  83. response = self.client.post(reverse('misago:admin:users:bans:delete', kwargs={
  84. 'pk': test_ban.pk
  85. }))
  86. self.assertEqual(response.status_code, 302)
  87. response = self.client.get(reverse('misago:admin:users:bans:index'))
  88. self.client.get(response['location'])
  89. response = self.client.get(response['location'])
  90. self.assertEqual(response.status_code, 200)
  91. self.assertNotContains(response, test_ban.banned_value)