diff --git a/CHANGELOG.md b/CHANGELOG.md index d70ef583..1b0a03a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ and this project adheres to - ✅(frontend) Improve tests coverage - ⬆️(docker) upgrade backend image to python 3.13 #973 - ⬆️(docker) upgrade node images to alpine 3.21 +- 🐛(y-provider) increase JSON size limits for transcription conversion ### Removed diff --git a/src/frontend/servers/y-provider/__tests__/server.test.ts b/src/frontend/servers/y-provider/__tests__/server.test.ts index 2f048bff..0c4ed30a 100644 --- a/src/frontend/servers/y-provider/__tests__/server.test.ts +++ b/src/frontend/servers/y-provider/__tests__/server.test.ts @@ -1,5 +1,7 @@ import request from 'supertest'; +import { routes } from '@/routes'; + const port = 5557; const origin = 'http://localhost:3000'; @@ -36,4 +38,34 @@ describe('Server Tests', () => { expect(response.body.error).toBe('Forbidden'); }); }); + + it('should allow JSON payloads up to 500kb for the CONVERT_MARKDOWN route', async () => { + const largePayload = 'a'.repeat(400 * 1024); // 400kb payload + const response = await request(app) + .post(routes.CONVERT_MARKDOWN) + .send({ data: largePayload }) + .set('Content-Type', 'application/json'); + + expect(response.status).not.toBe(413); + }); + + it('should reject JSON payloads larger than 500kb for the CONVERT_MARKDOWN route', async () => { + const oversizedPayload = 'a'.repeat(501 * 1024); // 501kb payload + const response = await request(app) + .post(routes.CONVERT_MARKDOWN) + .send({ data: oversizedPayload }) + .set('Content-Type', 'application/json'); + + expect(response.status).toBe(413); + }); + + it('should use the default JSON limit for other routes', async () => { + const largePayload = 'a'.repeat(150 * 1024); + const response = await request(app) + .post('/some-other-route') + .send({ data: largePayload }) + .set('Content-Type', 'application/json'); + + expect(response.status).toBe(413); + }); }); diff --git a/src/frontend/servers/y-provider/src/servers/appServer.ts b/src/frontend/servers/y-provider/src/servers/appServer.ts index 00532e03..5c035db7 100644 --- a/src/frontend/servers/y-provider/src/servers/appServer.ts +++ b/src/frontend/servers/y-provider/src/servers/appServer.ts @@ -21,7 +21,13 @@ import { logger } from '../utils'; */ export const initServer = () => { const { app } = expressWebsockets(express()); - app.use(express.json()); + app.use((req, res, next) => { + if (req.path === routes.CONVERT_MARKDOWN) { + // Large transcript files are bigger than the default '100kb' limit + return express.json({ limit: '500kb' })(req, res, next); + } + express.json()(req, res, next); + }); app.use(corsMiddleware); /**