David Vass
David Vass

Reputation: 155

Testing binary response with supertest

I'm developing an API with express and testing it with supertest. My API endpoint is returning tar.gz file. I would like to test, if file is properly sent and it's content is correct. I'm having troubles figuring out how to retrieve data. My naive approach was to save content of res.text (where const res = request(app).get('/project/export') to a file, extract it and check it's content. But simple saving of res.text does not seem to work and extracting function does not recognise it as properly compressed file.

Any help appreciated. Feel free to suggest other modules/approaches how to test an express app. Thanks!

Upvotes: 8

Views: 2169

Answers (1)

Alf Eaton
Alf Eaton

Reputation: 5483

When running tests in Jest, setting .responseType('blob') on the request will cause response.body to be a Buffer.

https://visionmedia.github.io/superagent/#binary

For example:

const response = await request(app)
  .get('/project/export')
  .responseType('blob')

await fs.promises.writeFile('export.tar.gz', response.body)

Upvotes: 8

Related Questions