test_banadmin_views.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. from datetime import date, 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)