Я пытаюсь проверить мой Django REST API для загрузки файлов.
Подвох в том, что мой сервер пытается проверить файл так, чтобы файл имел распознанный тип файла. В настоящее время разрешены только текстовые типы файлов, например: docs, pdf, txt.
Я попытался использовать временный файл, и теперь я просто попытался прочитать файл с диска, а затем сдался.
Каждый раз, когда я использую временный файл, сервер отвечает:
{
"cover_letter": [
"The submitted data was not a file. Check the encoding type on the form."
],
"manuscript": [
"The submitted data was not a file. Check the encoding type on the form."
]
}
Это мой тест:
def test_user_can_submit_a_paper(self):
"""
Ensure that an user is able to upload a paper.
This test is not working.. yet
"""
tmp_file = open("__init__.py", "w")
data = {
"title": "paper",
"authors": "me",
"description": "ma detailed description",
"manuscript": base64.b64encode(tmp_file.read()).decode(),
"cover_letter": base64.b64encode(tmp_file.read()).decode()
}
tmp_file.close()
response = self.client.post(self.papers_submitted, data=urlencode(MultiValueDict(data)), content_type='application/x-www-form-urlencoded',
HTTP_AUTHORIZATION=self.authorization_header)
print(response.data)
self.assertEqual(response.status_code, status.HTTP_200_OK)
del data["cover_letter"]
response = self.client.post(self.papers_submitted, data=urlencode(MultiValueDict(data)), content_type='application/x-www-form-urlencoded',
HTTP_AUTHORIZATION=self.authorization_header)
print(response.data)
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
Я успешно проверил эту конечную точку через почтальона, но я не знаю, как это сделать в Python.