test_banadmin_views.py 4.5 KB

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