overleaf/services/history-v1/test/setup.js
Jakob Ackermann 97b39ef98f Merge pull request #21681 from overleaf/jpa-back-fill-file-hash
[history-v1] add script for back filling hash into project file-tree

GitOrigin-RevId: 70ab8c72f3eea1062708e4471b4ad1c60317ad26
2024-11-18 09:05:39 +00:00

62 lines
1.6 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')
// ensure every ObjectId has the id string as a property for correct comparisons
require('mongodb').ObjectId.cacheHexString = true
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'),
'fake-user-files-gcs',
]) {
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],
},
}