import { expect } from 'chai'; import { cli } from './test-utils.js'; import { fileURLToPath } from 'url'; const root = new URL('./fixtures/base64-response/', import.meta.url).toString(); describe('Base64 Responses', () => { before(async () => { await cli('build', '--root', fileURLToPath(root)); }); it('Can return base64 encoded strings', async () => { const entryURL = new URL( './fixtures/base64-response/.netlify/functions-internal/entry.mjs', import.meta.url ); const { handler } = await import(entryURL); const resp = await handler({ httpMethod: 'GET', headers: {}, rawUrl: 'http://example.com/image', body: '{}', isBase64Encoded: false, }); expect(resp.statusCode, 'successful response').to.equal(200); expect(resp.isBase64Encoded, 'includes isBase64Encoded flag').to.be.true; const buffer = Buffer.from(resp.body, 'base64'); expect(buffer.toString(), 'decoded base64 string matches').to.equal('base64 test string'); }); it('Can define custom binaryMediaTypes', async () => { const entryURL = new URL( './fixtures/base64-response/.netlify/functions-internal/entry.mjs', import.meta.url ); const { handler } = await import(entryURL); const resp = await handler({ httpMethod: 'GET', headers: {}, rawUrl: 'http://example.com/font', body: '{}', isBase64Encoded: false, }); expect(resp.statusCode, 'successful response').to.equal(200); expect(resp.isBase64Encoded, 'includes isBase64Encoded flag').to.be.true; const buffer = Buffer.from(resp.body, 'base64'); expect(buffer.toString(), 'decoded base64 string matches').to.equal('base64 test font'); }); });