test_validate_post.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. from django.urls import reverse
  2. from misago.categories.models import Category
  3. from misago.users.testutils import AuthenticatedUserTestCase
  4. class ValidatePostTests(AuthenticatedUserTestCase):
  5. def setUp(self):
  6. super().setUp()
  7. self.category = Category.objects.get(slug='first-category')
  8. self.api_link = reverse('misago:api:thread-list')
  9. def test_title_validation(self):
  10. """validate_post tests title"""
  11. response = self.client.post(
  12. self.api_link,
  13. data={
  14. 'category': self.category.pk,
  15. 'title': 'Check our l33t CaSiNo!',
  16. 'post': 'Lorem ipsum dolor met!',
  17. }
  18. )
  19. self.assertEqual(response.status_code, 400)
  20. self.assertEqual(response.json(), {
  21. 'non_field_errors': ["Don't discuss gambling!"],
  22. })
  23. # clean title passes validation
  24. response = self.client.post(
  25. self.api_link,
  26. data={
  27. 'category': self.category.pk,
  28. 'title': 'Check our l33t place!',
  29. 'post': 'Lorem ipsum dolor met!',
  30. }
  31. )
  32. self.assertEqual(response.status_code, 200)
  33. def test_post_validation(self):
  34. """validate_post tests post content"""
  35. response = self.client.post(
  36. self.api_link,
  37. data={
  38. 'category': self.category.pk,
  39. 'title': 'Lorem ipsum dolor met!',
  40. 'post': 'Check our l33t CaSiNo!',
  41. }
  42. )
  43. self.assertEqual(response.status_code, 400)
  44. self.assertEqual(response.json(), {
  45. 'non_field_errors': ["Don't discuss gambling!"],
  46. })
  47. # clean post passes validation
  48. response = self.client.post(
  49. self.api_link,
  50. data={
  51. 'category': self.category.pk,
  52. 'title': 'Lorem ipsum dolor met!',
  53. 'post': 'Check our l33t place!',
  54. }
  55. )
  56. self.assertEqual(response.status_code, 200)
  57. def test_empty_input(self):
  58. """validate_post handles empty input"""
  59. response = self.client.post(
  60. self.api_link, data={
  61. 'category': self.category.pk,
  62. }
  63. )
  64. self.assertEqual(response.status_code, 400)
  65. self.assertEqual(response.json(), {
  66. 'title': ['You have to enter thread title.'],
  67. 'post': ['You have to enter a message.'],
  68. })
  69. response = self.client.post(
  70. self.api_link, data={
  71. 'category': self.category.pk,
  72. 'title': '',
  73. 'post': '',
  74. }
  75. )
  76. self.assertEqual(response.status_code, 400)
  77. self.assertEqual(response.json(), {
  78. 'title': ['This field may not be blank.'],
  79. 'post': ['This field may not be blank.'],
  80. })