overleaf/services/history-v1/test/setup.js
Alf Eaton ee85d948e2 Avoid duplicating a math-closing dollar sign (#11227)
GitOrigin-RevId: ef2ef77e26df59d1af3df6dc664e284d3c70102d
2023-01-16 08:41:42 +00:00

58 lines
1.5 KiB
JavaScript

const chai = require('chai')
const chaiAsPromised = require('chai-as-promised')
const config = require('config')
const fetch = require('node-fetch')
const { knex, mongodb } = require('../storage')
chai.use(chaiAsPromised)
async function setupPostgresDatabase() {
await knex.migrate.latest()
}
async function setupMongoDatabase() {
await mongodb.db.collection('projectHistoryChunks').createIndexes([
{
key: { projectId: 1, startVersion: 1 },
name: 'projectId_1_startVersion_1',
partialFilterExpression: { state: 'active' },
unique: true,
},
{
key: { state: 1 },
name: 'state_1',
partialFilterExpression: { state: 'deleted' },
},
])
}
async function createGcsBuckets() {
for (const bucket of [
config.get('blobStore.globalBucket'),
config.get('blobStore.projectBucket'),
config.get('chunkStore.bucket'),
config.get('zipStore.bucket'),
]) {
await fetch('http://gcs:9090/storage/v1/b', {
method: 'POST',
body: JSON.stringify({ name: bucket }),
headers: { 'Content-Type': 'application/json' },
})
}
}
// Tear down the connection pool after all the tests have run, so the process
// can exit.
async function tearDownConnectionPool() {
await knex.destroy()
}
module.exports = {
setupPostgresDatabase,
createGcsBuckets,
tearDownConnectionPool,
mochaHooks: {
beforeAll: [setupPostgresDatabase, setupMongoDatabase, createGcsBuckets],
afterAll: [tearDownConnectionPool],
},
}