Просмотр исходного кода

fix #929: possible showstopper on markup preview api

Rafał Pitoń 7 лет назад
Родитель
Сommit
292add1a7a
3 измененных файлов с 7 добавлено и 2 удалено
  1. 2 1
      misago/markup/api.py
  2. 1 1
      misago/markup/serializers.py
  3. 4 0
      misago/markup/tests/test_api.py

+ 2 - 1
misago/markup/api.py

@@ -10,8 +10,9 @@ from .serializers import MarkupSerializer
 def parse_markup(request):
     serializer = MarkupSerializer(data=request.data)
     if not serializer.is_valid():
+        errors_list = list(serializer.errors.values())[0]
         return Response(
-            {'detail': serializer.errors['non_field_errors'][0]},
+            {'detail': errors_list[0]},
             status=status.HTTP_400_BAD_REQUEST,
         )
 

+ 1 - 1
misago/markup/serializers.py

@@ -4,7 +4,7 @@ from misago.threads.validators import validate_post_length
 
 
 class MarkupSerializer(serializers.Serializer):
-    post = serializers.CharField(required=False)
+    post = serializers.CharField(required=False, allow_blank=True)
 
     def validate(self, data):
         validate_post_length(data.get('post', ''))

+ 4 - 0
misago/markup/tests/test_api.py

@@ -43,6 +43,10 @@ class ParseMarkupApiTests(AuthenticatedUserTestCase):
         response = self.client.post(self.api_link, {'post': ''})
         self.assertContains(response, "You have to enter a message.", status_code=400)
 
+        # regression test for #929
+        response = self.client.post(self.api_link, {'post': '\n'})
+        self.assertContains(response, "You have to enter a message.", status_code=400)
+
     def test_invalid_post(self):
         """api handles invalid post type"""
         response = self.client.post(self.api_link, {'post': 123})