From 9b33933e8c9f5cfc09068378634c308e9fb10921 Mon Sep 17 00:00:00 2001 From: Richard Petersen <richard.petersen@open-xchange.com> Date: Tue, 11 Jan 2022 13:03:11 +0100 Subject: [PATCH] Fix: Binary handling without .buffer() --- spec/file_caching_test.js | 24 +++++++++++++++++++++--- spec/media/image.png | Bin 0 -> 10341 bytes src/files.js | 2 +- 3 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 spec/media/image.png diff --git a/spec/file_caching_test.js b/spec/file_caching_test.js index 6cee9dc..65359a8 100644 --- a/spec/file_caching_test.js +++ b/spec/file_caching_test.js @@ -3,6 +3,10 @@ import mockfs from 'mock-fs' import request from 'supertest' import { createApp } from '../src/createApp' import { createMockServer, generateSimpleViteManifest, getRandomPort } from './util.js' +import fs from 'fs' + +const image = fs.readFileSync('./spec/media/image.png') +const imageStat = fs.statSync('./spec/media/image.png') describe('File caching service', () => { let app @@ -35,15 +39,23 @@ describe('File caching service', () => { isEntry: true, imports: ['example.js'], css: ['main.css'] - } + }, + 'image.png': {} }), '/example.js': (req, res) => res.setHeader('content-type', 'application/javascript').status(200).send('this is example'), '/test.txt': (req, res) => res.setHeader('content-type', 'text/plain').status(200).send('this is test'), '/index.html.js': (req, res) => res.setHeader('content-type', 'application/javascript').status(200).send('this is index.html.js'), '/index.html': (req, res) => res.setHeader('content-type', 'text/html').status(200).send('<html><head></head><body>it\'s me</body></html>'), '/main.css': (req, res) => res.setHeader('content-type', 'text/css').status(200).send('.foo { color: #000; }'), - '/favicon.ico': 'not really a favicon, though' - + '/favicon.ico': 'not really a favicon, though', + '/image.png': (req, res) => { + // need to do this like this, because jest messes up file system within tests + res.set({ + 'Content-Type': 'image/png', + 'Content-Length': imageStat.size + }) + res.end(image) + } }) await request(app).get('/ready') }) @@ -96,4 +108,10 @@ describe('File caching service', () => { const response = await request(app).get('/unknown-file.txt') expect(response.statusCode).toBe(404) }) + + it('serves binary files', async () => { + const response = await request(app).get('/image.png') + expect(response.statusCode).toBe(200) + expect(response.body.length === imageStat.size) + }) }) diff --git a/spec/media/image.png b/spec/media/image.png new file mode 100644 index 0000000000000000000000000000000000000000..ead835866c1185dfc6ae3cf7dc3bd350b53ade18 GIT binary patch literal 10341 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 literal 0 HcmV?d00001 diff --git a/src/files.js b/src/files.js index b4ec6cd..f5fc29f 100644 --- a/src/files.js +++ b/src/files.js @@ -9,7 +9,7 @@ const logger = getLogger() async function fetchData (path, baseUrl) { const response = await fetch(new URL(path, baseUrl)) if (!response.ok) throw new Error(`Error fetching file: ${path}`) - const content = await response.text() + const content = Buffer.from(await response.arrayBuffer()) const sha256Sum = crypto.createHash('sha256').update(content).digest('base64') return [path, { 'content-type': response.headers.get('content-type'), -- GitLab