Files
msw/test/node/rest-api/response/body-binary.node.test.ts

55 lines
1.6 KiB
TypeScript

/**
* @vitest-environment node
*/
import * as path from 'path'
import * as fs from 'fs'
import { HttpResponse, http } from 'msw'
import { setupServer } from 'msw/node'
function getImageBuffer() {
return fs.readFileSync(path.resolve(__dirname, '../../../fixtures/image.jpg'))
}
const server = setupServer(
http.get('http://test.mswjs.io/image', () => {
const imageBuffer = getImageBuffer()
return HttpResponse.arrayBuffer(imageBuffer, {
headers: {
'Content-Type': 'image/jpeg',
'Content-Length': imageBuffer.byteLength.toString(),
},
})
}),
)
beforeAll(() => server.listen())
afterAll(() => server.close())
test('returns given buffer in the mocked response', async () => {
const response = await fetch('http://test.mswjs.io/image')
const actualImageBuffer = await response.arrayBuffer()
const expectedImageBuffer = getImageBuffer()
expect(response.status).toBe(200)
expect(response.headers.get('content-length')).toBe(
actualImageBuffer.byteLength.toString(),
)
expect(
Buffer.compare(Buffer.from(actualImageBuffer), expectedImageBuffer),
).toBe(0)
})
test('returns given blob in the mocked response', async () => {
const response = await fetch('http://test.mswjs.io/image')
const blob = await response.blob()
const expectedImageBuffer = getImageBuffer()
expect(response.status).toBe(200)
expect(blob.type).toBe('image/jpeg')
expect(blob.size).toBe(Number(response.headers.get('content-length')))
expect(
Buffer.compare(Buffer.from(await blob.arrayBuffer()), expectedImageBuffer),
).toBe(0)
})