Хорошо, это довольно целостный вопрос, так как мне нужно знать как о процессе, так и о лучших практиках. Критика приветствуется!
Я пишу тест для конечной точки PDF-to-image API
. Таким образом, мне нужно put
PDF в endpoint
. Конечная точка сохранит его локально, преобразует, сохранит последовательность изображений в корзине S3, а затем отправит обратно массив URL-адресов. Но, поскольку я пишу этот тест в основном для помощи в разработке, ничего из этого пока не происходит. Я просто хочу убедиться, что смогу получить PDF-файл в конечной точке и сохранить его.
Посмотрите тестовый код ниже:
// testing dependencies
const chai = require("chai")
const chaiHttp = require("chai-http")
const should = chai.should()
const server = require('./../index.js')
chai.use(chaiHttp)
// utility dependencies
const fs = require('fs')
describe("PDF upload", () => {
it("should PUT my pdf", (done) => {
fs.readFile('./content/pdf/lockheed.pdf', (err, res) => {
if (err) { console.error(err) }
else {
chai.request(server)
.put('/v1/convert-pdf')
.set('Content-Type', 'application/pdf')
.send({ pdf: res })
.end((err, res) => {
console.log("got the res")
if (err) { console.error(err) }
else { console.log(res.body) }
done()
})
}
})
})
})
Прежде чем я установил заголовок Content-Type
, я просто получил 413 от сервера (слишком большой запрос). Я установил все свои тайм-ауты и максимальный размер запроса очень большими, поэтому это действительно не должно быть проблемой. Но теперь, когда у меня есть application/pdf
в заголовке, я получаю эту ошибку:
Uncaught TypeError: "string" must be a string, Buffer, or ArrayBuffer
Это было гораздо полезнее и привело меня к этому SO, который направляет файл на запрос. Однако я действительно не уверен, как это сделать через chai-http
, чтобы мой сервер мог успешно получить и сохранить PDF-файл в локальный файл.