overleaf/services/real-time/test/unit/js/SafeJsonParseTest.js
Eric Mc Sween b9e7cbf73b Add global test setup
Configure chai and SandboxedModule in a central place. Configure
SandboxedModule globals that are needed in Node 12.
2021-03-18 16:41:31 -04:00

56 lines
1.7 KiB
JavaScript

/* eslint-disable
camelcase,
handle-callback-err,
no-return-assign,
no-useless-escape,
*/
// TODO: This file was created by bulk-decaffeinate.
// Fix any style issues and re-enable lint.
/*
* decaffeinate suggestions:
* DS102: Remove unnecessary code created because of implicit returns
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/
const { expect } = require('chai')
const SandboxedModule = require('sandboxed-module')
const modulePath = '../../../app/js/SafeJsonParse'
describe('SafeJsonParse', function () {
beforeEach(function () {
return (this.SafeJsonParse = SandboxedModule.require(modulePath, {
requires: {
'settings-sharelatex': (this.Settings = {
maxUpdateSize: 16 * 1024
})
}
}))
})
return describe('parse', function () {
it('should parse documents correctly', function (done) {
return this.SafeJsonParse.parse('{"foo": "bar"}', (error, parsed) => {
expect(parsed).to.deep.equal({ foo: 'bar' })
return done()
})
})
it('should return an error on bad data', function (done) {
return this.SafeJsonParse.parse('blah', (error, parsed) => {
expect(error).to.exist
return done()
})
})
return it('should return an error on oversized data', function (done) {
// we have a 2k overhead on top of max size
const big_blob = Array(16 * 1024).join('A')
const data = `{\"foo\": \"${big_blob}\"}`
this.Settings.maxUpdateSize = 2 * 1024
return this.SafeJsonParse.parse(data, (error, parsed) => {
this.logger.error.called.should.equal(false)
expect(error).to.exist
return done()
})
})
})
})