Response.status_code 400 для простого теста представления

Я передаю простое json-тело моему представлению, но получаю 400 вместо 200. Это должен быть действительно простой тест, но я не могу понять, что не так. Спасибо.

Url:

        "api/v2/ada/send",
        views.sendView.as_view(),
        name="ada-send",
    ),

Вид:

class sendView(generics.GenericAPIView):
    permission_classes = (permissions.IsAuthenticated,)
    
    def post(self, request, *args, **kwargs):
        body = request.data
        return Response(body, status=status.HTTP_200_OK)

Просмотр теста:

class AdaSendGet(APITestCase):
    url = reverse("ada-send")
    def test_choice_type_valid(
        self,):
        user = get_user_model().objects.create_user("test")
        self.client.force_authenticate(user)
        response = self.client.post(
            self.url,
                {
                    "contact_uuid": "49548747-48888043",
                    "choices": 3,
                    "message": (
                        "What is the issue?\n\nAbdominal pain"
                        "\nHeadache\nNone of these\n\n"
                        "Choose the option that matches your answer. "
                        "Eg, 1 for Abdominal pain\n\nEnter *back* to go to "
                        "the previous question or *abort* to "
                        "end the assessment"
                    ),
                    "step": 6,
                    "value": 2,
                    "optionId": 0,
                    "path": "/assessments/assessment-id/dialog/next",
                    "cardType": "CHOICE",
                    "title": "SYMPTOM"
                },
            content_type="application/json",
        )
        self.assertEqual(response.status_code, status.HTTP_200_OK)

Ошибка:

self.assertEqual(response.status_code, status.HTTP_200_OK)
AssertionError: 400 != 200

response.json() возвращает:

{'detail': 'JSON parse error - Expecting property name enclosed in double quotes: line 1 column 2 (char 1)'}

Странный случай. Я решил ее, удалив

content_type="application/json",

из полезной нагрузки.

Как говорится в документации здесь https://www.django-rest-framework.org/api-guide/testing/#api-test-cases

Когда вы хотите указать формат, используйте аргумент format.

Методы, создающие тело запроса, такие как post, put и patch, включают аргумент format, что облегчает генерацию запросов, использующих тип содержимого, отличный от многокомпонентных данных формы.

Вернуться на верх