Files
overleaf-cep/services/real-time/test/unit/js/SafeJsonParse.test.js
T
Andrew Rumble 3073c94522 Merge pull request #30215 from overleaf/ar/convert-real-time-to-esm
[real-time] convert real time to esm

GitOrigin-RevId: 7cc530cc977549d3274be42585735e1fd72cad5f
2026-01-13 09:06:30 +00:00

51 lines
1.5 KiB
JavaScript

import { vi, expect, describe, beforeEach, it } from 'vitest'
const modulePath = '../../../app/js/SafeJsonParse'
describe('SafeJsonParse', function () {
beforeEach(async function (ctx) {
vi.doMock('@overleaf/settings', () => ({
default: (ctx.Settings = {
maxUpdateSize: 16 * 1024,
}),
}))
ctx.SafeJsonParse = (await import(modulePath)).default
})
describe('parse', function () {
it('should parse documents correctly', async function (ctx) {
await new Promise((resolve, reject) => {
ctx.SafeJsonParse.parse('{"foo": "bar"}', (error, parsed) => {
if (error) return reject(error)
expect(parsed).to.deep.equal({ foo: 'bar' })
resolve()
})
})
})
it('should return an error on bad data', async function (ctx) {
await new Promise((resolve, reject) => {
ctx.SafeJsonParse.parse('blah', (error, parsed) => {
expect(error).to.exist
resolve()
})
})
})
it('should return an error on oversized data', async function (ctx) {
await new Promise((resolve, reject) => {
// we have a 2k overhead on top of max size
const bigBlob = Array(16 * 1024).join('A')
const data = `{"foo": "${bigBlob}"}`
ctx.Settings.maxUpdateSize = 2 * 1024
ctx.SafeJsonParse.parse(data, (error, parsed) => {
ctx.logger.error.called.should.equal(false)
expect(error).to.exist
resolve()
})
})
})
})
})