| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- const chai = require('chai')
- const chaiAsPromised = require('chai-as-promised')
- const sinonChai = require('sinon-chai')
- const SandboxedModule = require('sandboxed-module')
- const sinon = require('sinon')
- // ensure every ObjectId has the id string as a property for correct comparisons
- require('mongodb-legacy').ObjectId.cacheHexString = true
- // Chai configuration
- chai.should()
- chai.use(chaiAsPromised)
- // Load sinon-chai assertions so expect(stubFn).to.have.been.calledWith('abc')
- // has a nicer failure messages
- chai.use(sinonChai)
- // Global stubs
- const sandbox = sinon.createSandbox()
- const stubs = {
- logger: {
- debug: sandbox.stub(),
- log: sandbox.stub(),
- warn: sandbox.stub(),
- err: sandbox.stub(),
- error: sandbox.stub(),
- },
- }
- // SandboxedModule configuration
- SandboxedModule.configure({
- requires: {
- '@overleaf/logger': stubs.logger,
- 'mongodb-legacy': require('mongodb-legacy'), // for ObjectId comparisons
- 'overleaf-editor-core': require('overleaf-editor-core'), // does not play nice with sandbox
- },
- globals: { Buffer, JSON, Math, console, process, URL },
- sourceTransformers: {
- removeNodePrefix: function (source) {
- return source.replace(/require\(['"]node:/g, "require('")
- },
- },
- })
- // Mocha hooks
- exports.mochaHooks = {
- beforeEach() {
- this.logger = stubs.logger
- },
- afterEach() {
- sandbox.reset()
- },
- }
|