This repository has been archived on 2026-03-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
docs/src/frontend/servers/y-provider/__tests__/server.test.ts

72 lines
2.0 KiB
TypeScript
Raw Normal View History

import request from 'supertest';
import { routes } from '@/routes';
const port = 5557;
const origin = 'http://localhost:3000';
jest.mock('../src/env', () => {
return {
PORT: port,
COLLABORATION_SERVER_ORIGIN: origin,
};
});
console.error = jest.fn();
import { initServer } from '../src/servers/appServer';
const { app, server } = initServer();
describe('Server Tests', () => {
afterAll(() => {
server.close();
});
test('Ping Pong', async () => {
const response = await request(app as any).get('/ping');
expect(response.status).toBe(200);
expect(response.body.message).toBe('pong');
});
['/collaboration/api/anything/', '/', '/anything'].forEach((path) => {
test(`"${path}" endpoint should be forbidden`, async () => {
const response = await request(app as any).post(path);
expect(response.status).toBe(403);
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);
});
});