diff --git a/js/server_functions.js b/js/server_functions.js index 85e674d816..a2f0ea0557 100644 --- a/js/server_functions.js +++ b/js/server_functions.js @@ -46,8 +46,8 @@ async function cors (req, res) { const headerValue = response.headers.get(header); if (header) res.set(header, headerValue); } - const data = await response.text(); - res.send(data); + const arrayBuffer = await response.arrayBuffer(); + res.send(Buffer.from(arrayBuffer)); } else { throw new Error(`Response status: ${response.status}`); } diff --git a/tests/unit/functions/server_functions_spec.js b/tests/unit/functions/server_functions_spec.js index 5383500ae6..7596577309 100644 --- a/tests/unit/functions/server_functions_spec.js +++ b/tests/unit/functions/server_functions_spec.js @@ -4,19 +4,19 @@ describe("server_functions tests", () => { describe("The cors method", () => { let fetchResponse; let fetchResponseHeadersGet; - let fetchResponseHeadersText; + let fetchResponseArrayBuffer; let corsResponse; let request; let fetchMock; beforeEach(() => { fetchResponseHeadersGet = vi.fn(() => {}); - fetchResponseHeadersText = vi.fn(() => {}); + fetchResponseArrayBuffer = vi.fn(() => {}); fetchResponse = { headers: { get: fetchResponseHeadersGet }, - text: fetchResponseHeadersText, + arrayBuffer: fetchResponseArrayBuffer, ok: true }; @@ -78,7 +78,9 @@ describe("server_functions tests", () => { it("Sends correct data from response", async () => { const responseData = "some data"; - fetchResponseHeadersText.mockImplementation(() => responseData); + const encoder = new TextEncoder(); + const arrayBuffer = encoder.encode(responseData).buffer; + fetchResponseArrayBuffer.mockImplementation(() => arrayBuffer); let sentData; corsResponse.send = vi.fn((input) => { @@ -87,19 +89,19 @@ describe("server_functions tests", () => { await cors(request, corsResponse); - expect(fetchResponseHeadersText.mock.calls).toHaveLength(1); - expect(sentData).toBe(responseData); + expect(fetchResponseArrayBuffer.mock.calls).toHaveLength(1); + expect(sentData).toEqual(Buffer.from(arrayBuffer)); }); it("Sends error data from response", async () => { const error = new Error("error data"); - fetchResponseHeadersText.mockImplementation(() => { + fetchResponseArrayBuffer.mockImplementation(() => { throw error; }); await cors(request, corsResponse); - expect(fetchResponseHeadersText.mock.calls).toHaveLength(1); + expect(fetchResponseArrayBuffer.mock.calls).toHaveLength(1); expect(corsResponse.status).toHaveBeenCalledWith(500); expect(corsResponse.json).toHaveBeenCalledWith({ error: error.message }); });