test_floodprotection.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from django.urls import reverse
  2. from misago.acl.testutils import override_acl
  3. from misago.categories.models import Category
  4. from misago.threads import testutils
  5. from misago.users.testutils import AuthenticatedUserTestCase
  6. class PostMentionsTests(AuthenticatedUserTestCase):
  7. def setUp(self):
  8. super(PostMentionsTests, self).setUp()
  9. self.category = Category.objects.get(slug='first-category')
  10. self.thread = testutils.post_thread(category=self.category)
  11. self.override_acl()
  12. self.post_link = reverse(
  13. 'misago:api:thread-post-list', kwargs={
  14. 'thread_pk': self.thread.pk,
  15. }
  16. )
  17. def override_acl(self):
  18. new_acl = self.user.acl_cache
  19. new_acl['categories'][self.category.pk].update({
  20. 'can_see': 1,
  21. 'can_browse': 1,
  22. 'can_start_threads': 1,
  23. 'can_reply_threads': 1,
  24. })
  25. override_acl(self.user, new_acl)
  26. def test_flood_has_no_showstoppers(self):
  27. """endpoint handles posting interruption"""
  28. response = self.client.post(
  29. self.post_link, data={
  30. 'post': "This is test response!",
  31. }
  32. )
  33. self.assertEqual(response.status_code, 200)
  34. response = self.client.post(
  35. self.post_link, data={
  36. 'post': "This is test response!",
  37. }
  38. )
  39. self.assertContains(
  40. response, "You can't post message so quickly after previous one.", status_code=403
  41. )